Mercurial > hg > xemacs-beta
diff src/glyphs.c @ 563:183866b06e0b
[xemacs-hg @ 2001-05-24 07:50:48 by ben]
Makefile.in.in, abbrev.c, alloc.c, buffer.c, bytecode.c, callint.c, callproc.c, casetab.c, chartab.c, cmdloop.c, cmds.c, console-msw.c, console-msw.h, console-stream.c, console-tty.c, console-x.c, console.c, data.c, database.c, debug.c, device-gtk.c, device-msw.c, device-tty.c, device-x.c, device.c, dialog-gtk.c, dialog-msw.c, dialog-x.c, dialog.c, dired-msw.c, dired.c, doc.c, doprnt.c, dragdrop.c, editfns.c, eldap.c, eldap.h, elhash.c, emacs-widget-accessors.c, emacs.c, emodules.c, esd.c, eval.c, event-Xt.c, event-gtk.c, event-msw.c, event-stream.c, events.c, extents.c, faces.c, file-coding.c, fileio.c, filelock.c, floatfns.c, fns.c, font-lock.c, frame-gtk.c, frame-x.c, frame.c, general-slots.h, glade.c, glyphs-gtk.c, glyphs-msw.c, glyphs-widget.c, glyphs-x.c, glyphs.c, glyphs.h, gpmevent.c, gui-gtk.c, gui-x.c, gui.c, gutter.c, hpplay.c, indent.c, input-method-xlib.c, insdel.c, intl.c, keymap.c, libsst.c, libsst.h, linuxplay.c, lisp.h, lread.c, lstream.c, lstream.h, macros.c, marker.c, md5.c, menubar-gtk.c, menubar-msw.c, menubar-x.c, menubar.c, minibuf.c, miscplay.c, miscplay.h, mule-ccl.c, mule-charset.c, mule-wnnfns.c, mule.c, nas.c, ntplay.c, ntproc.c, objects-gtk.c, objects-msw.c, objects-x.c, objects.c, postgresql.c, print.c, process-nt.c, process-unix.c, process.c, ralloc.c, rangetab.c, redisplay.c, scrollbar.c, search.c, select-gtk.c, select-x.c, select.c, sgiplay.c, sheap.c, sound.c, specifier.c, sunplay.c, symbols.c, symeval.h, symsinit.h, syntax.c, sysdep.c, toolbar-msw.c, toolbar.c, tooltalk.c, ui-byhand.c, ui-gtk.c, undo.c, unexaix.c, unexapollo.c, unexconvex.c, unexec.c, widget.c, win32.c, window.c:
-- defsymbol -> DEFSYMBOL.
-- add an error type to all errors.
-- eliminate the error functions in eval.c that let you just
use Qerror as the type.
-- redo the error API to be more consistent, sensibly named,
and easier to use.
-- redo the error hierarchy somewhat. create new errors:
structure-formation-error, gui-error, invalid-constant,
stack-overflow, out-of-memory, process-error, network-error,
sound-error, printing-unreadable-object, base64-conversion-
error; coding-system-error renamed to text-conversion error;
some others.
-- fix Mule problems in error strings in emodules.c, tooltalk.c.
-- fix error handling in mswin open-network-stream.
-- Mule-ize all sound files and clean up the headers.
-- nativesound.h -> sound.h and used for all sound files.
-- move some shared stuff into glyphs-shared.c: first attempt
at eliminating some of the massive GTK code duplication.
xemacs.mak: add glyphs-shared.c.
xemacs-faq.texi: document how to debug X errors
subr.el: fix doc string to reflect reality
author | ben |
---|---|
date | Thu, 24 May 2001 07:51:33 +0000 |
parents | 0784d089fdc9 |
children | 190b164ddcac |
line wrap: on
line diff
--- a/src/glyphs.c Thu May 24 06:30:21 2001 +0000 +++ b/src/glyphs.c Thu May 24 07:51:33 2001 +0000 @@ -183,7 +183,7 @@ } } - maybe_signal_simple_error ("Invalid image-instantiator format", format, + maybe_invalid_argument ("Invalid image-instantiator format", format, Qimage, errb); return 0; @@ -315,7 +315,7 @@ (!NILP (XCDR (XCDR (mapping))) && (!CONSP (XCDR (XCDR (mapping))) || !NILP (XCDR (XCDR (XCDR (mapping))))))) - signal_simple_error ("Invalid mapping form", mapping); + invalid_argument ("Invalid mapping form", mapping); else { Lisp_Object exp = XCAR (mapping); @@ -400,7 +400,7 @@ } /* Oh well. */ - signal_simple_error ("Unable to interpret glyph instantiator", + invalid_argument ("Unable to interpret glyph instantiator", data); return Qnil; @@ -484,7 +484,7 @@ CHECK_VECTOR (instantiator); if (!KEYWORDP (keyword)) - signal_simple_error ("instantiator property must be a keyword", keyword); + invalid_argument ("instantiator property must be a keyword", keyword); elt = XVECTOR_DATA (instantiator); len = XVECTOR_LENGTH (instantiator); @@ -544,7 +544,7 @@ { if (NILP (find_keyword_in_vector (instantiator, Q_file)) && NILP (find_keyword_in_vector (instantiator, Q_data))) - signal_simple_error ("Must supply either :file or :data", + sferror ("Must supply either :file or :data", instantiator); } @@ -552,14 +552,14 @@ data_must_be_present (Lisp_Object instantiator) { if (NILP (find_keyword_in_vector (instantiator, Q_data))) - signal_simple_error ("Must supply :data", instantiator); + sferror ("Must supply :data", instantiator); } static void face_must_be_present (Lisp_Object instantiator) { if (NILP (find_keyword_in_vector (instantiator, Q_face))) - signal_simple_error ("Must supply :face", instantiator); + sferror ("Must supply :face", instantiator); } /* utility function useful in retrieving data from a file. */ @@ -696,11 +696,12 @@ if (governing_domain == GOVERNING_DOMAIN_WINDOW && NILP (DOMAIN_WINDOW (domain))) - signal_simple_error_2 ("Domain for this instantiator must be resolvable to a window", - instantiator, domain); + invalid_argument_2 + ("Domain for this instantiator must be resolvable to a window", + instantiator, domain); else if (governing_domain == GOVERNING_DOMAIN_FRAME && NILP (DOMAIN_FRAME (domain))) - signal_simple_error_2 + invalid_argument_2 ("Domain for this instantiator must be resolvable to a frame", instantiator, domain); @@ -767,7 +768,7 @@ GCPRO1 (ii); if (!valid_image_instantiator_format_p (INSTANTIATOR_TYPE (instantiator), DOMAIN_DEVICE (governing_domain))) - signal_simple_error + invalid_argument ("Image instantiator format is invalid in this locale.", instantiator); @@ -783,7 +784,7 @@ if (!HAS_IIFORMAT_METH_P (meths, instantiate) && (!device_meths || !HAS_IIFORMAT_METH_P (device_meths, instantiate))) - signal_simple_error + invalid_argument ("Don't know how to instantiate this image instantiator?", instantiator); @@ -905,7 +906,7 @@ Lisp_Image_Instance *ii = XIMAGE_INSTANCE (obj); if (print_readably) - error ("printing unreadable object #<image-instance 0x%x>", + printing_unreadable_object ("#<image-instance 0x%x>", ii->header.uid); write_c_string ("#<image-instance (", printcharfun); print_internal (Fimage_instance_type (obj), printcharfun, 0); @@ -1303,7 +1304,7 @@ if (EQ (type, Qsubwindow)) return IMAGE_SUBWINDOW; if (EQ (type, Qwidget)) return IMAGE_WIDGET; - maybe_signal_simple_error ("Invalid image-instance type", type, + maybe_invalid_constant ("Invalid image-instance type", type, Qimage, errb); return IMAGE_UNKNOWN; /* not reached */ @@ -1376,8 +1377,8 @@ incompatible_image_types (Lisp_Object instantiator, int given_dest_mask, int desired_dest_mask) { - signal_error - (Qerror, + signal_error_1 + (Qinvalid_argument, list2 (emacs_doprnt_string_lisp_2 ((const Bufbyte *) @@ -1457,7 +1458,7 @@ Lisp_Object governing_domain; if (IMAGE_INSTANCEP (data)) - signal_simple_error ("Image instances not allowed here", data); + invalid_argument ("Image instances not allowed here", data); image_validate (data); domain = decode_domain (domain); /* instantiate_image_instantiator() will abort if given an @@ -1470,7 +1471,7 @@ /* After normalizing the data, it's always either an image instance (which we filtered out above) or a vector. */ if (EQ (INSTANTIATOR_TYPE (data), Qinherit)) - signal_simple_error ("Inheritance not allowed here", data); + invalid_argument ("Inheritance not allowed here", data); governing_domain = get_image_instantiator_governing_domain (data, domain); ii = instantiate_image_instantiator (governing_domain, domain, data, @@ -2141,15 +2142,33 @@ DOESNT_RETURN signal_image_error (const char *reason, Lisp_Object frob) { - signal_error (Qimage_conversion_error, - list2 (build_translated_string (reason), frob)); + signal_error (Qimage_conversion_error, reason, frob); } DOESNT_RETURN signal_image_error_2 (const char *reason, Lisp_Object frob0, Lisp_Object frob1) { - signal_error (Qimage_conversion_error, - list3 (build_translated_string (reason), frob0, frob1)); + signal_error_2 (Qimage_conversion_error, reason, frob0, frob1); +} + +DOESNT_RETURN +signal_double_image_error (const char *string1, const char *string2, + Lisp_Object data) +{ + signal_error_1 (Qimage_conversion_error, + list3 (build_translated_string (string1), + build_translated_string (string2), + data)); +} + +DOESNT_RETURN +signal_double_image_error_2 (const char *string1, const char *string2, + Lisp_Object data1, Lisp_Object data2) +{ + signal_error_1 (Qimage_conversion_error, + list4 (build_translated_string (string1), + build_translated_string (string2), + data1, data2)); } /**************************************************************************** @@ -2475,9 +2494,9 @@ console_type); if (CONSP (file)) /* failure locating filename */ - signal_double_file_error ("Opening pixmap file", - "no such file or directory", - Fcar (file)); + signal_double_image_error ("Opening pixmap file", + "no such file or directory", + Fcar (file)); if (NILP (file)) /* no conversion necessary */ RETURN_UNGCPRO (inst); @@ -2518,7 +2537,7 @@ !CONSP (XCDR (data)) || !CONSP (XCDR (XCDR (data))) || !NILP (XCDR (XCDR (XCDR (data))))) - signal_simple_error ("Must be list of 3 elements", data); + sferror ("Must be list of 3 elements", data); width = XCAR (data); height = XCAR (XCDR (data)); @@ -2527,13 +2546,13 @@ CHECK_STRING (bits); if (!NATNUMP (width)) - signal_simple_error ("Width must be a natural number", width); + invalid_argument ("Width must be a natural number", width); if (!NATNUMP (height)) - signal_simple_error ("Height must be a natural number", height); + invalid_argument ("Height must be a natural number", height); if (((XINT (width) * XINT (height)) / 8) > XSTRING_CHAR_LENGTH (bits)) - signal_simple_error ("data is too short for width and height", + invalid_argument ("data is too short for width and height", vector3 (width, height, bits)); } @@ -2592,29 +2611,29 @@ case BitmapOpenFailed: { /* should never happen */ - signal_double_file_error ("Opening bitmap file", - "no such file or directory", - name); + signal_double_image_error ("Opening bitmap file", + "no such file or directory", + name); } case BitmapFileInvalid: { if (ok_if_data_invalid) return Qt; - signal_double_file_error ("Reading bitmap file", - "invalid data in file", - name); + signal_double_image_error ("Reading bitmap file", + "invalid data in file", + name); } case BitmapNoMemory: { - signal_double_file_error ("Reading bitmap file", - "out of memory", - name); + signal_double_image_error ("Reading bitmap file", + "out of memory", + name); } default: { - signal_double_file_error_2 ("Reading bitmap file", - "unknown error code", - make_int (result), name); + signal_double_image_error_2 ("Reading bitmap file", + "unknown error code", + make_int (result), name); } } @@ -2682,9 +2701,9 @@ Q_mask_data, console_type); if (CONSP (file)) /* failure locating filename */ - signal_double_file_error ("Opening bitmap file", - "no such file or directory", - Fcar (file)); + signal_double_image_error ("Opening bitmap file", + "no such file or directory", + Fcar (file)); if (NILP (file) && NILP (mask_file)) /* no conversion necessary */ RETURN_UNGCPRO (inst); @@ -2767,9 +2786,9 @@ Q_mask_data, console_type); if (CONSP (file)) /* failure locating filename */ - signal_double_file_error ("Opening bitmap file", - "no such file or directory", - Fcar (file)); + signal_double_image_error ("Opening bitmap file", + "no such file or directory", + Fcar (file)); if (NILP (file) && NILP (mask_file)) /* no conversion necessary */ RETURN_UNGCPRO (inst); @@ -2880,20 +2899,20 @@ } case XpmNoMemory: { - signal_double_file_error ("Reading pixmap file", - "out of memory", name); + signal_double_image_error ("Reading pixmap file", + "out of memory", name); } case XpmOpenFailed: { /* should never happen? */ - signal_double_file_error ("Opening pixmap file", - "no such file or directory", name); + signal_double_image_error ("Opening pixmap file", + "no such file or directory", name); } default: { - signal_double_file_error_2 ("Parsing pixmap file", - "unknown error code", - make_int (result), name); + signal_double_image_error_2 ("Parsing pixmap file", + "unknown error code", + make_int (result), name); break; } } @@ -2914,7 +2933,7 @@ !STRINGP (XCAR (XCAR (rest))) || (!STRINGP (XCDR (XCAR (rest))) && !COLOR_SPECIFIERP (XCDR (XCAR (rest))))) - signal_simple_error ("Invalid color symbol alist", data); + sferror ("Invalid color symbol alist", data); } } @@ -2949,7 +2968,7 @@ if (NILP (value)) continue; if (!STRINGP (value) && !COLOR_SPECIFIERP (value)) - signal_simple_error + invalid_argument ("Result from xpm-color-symbols eval must be nil, string, or color", value); results = Fcons (Fcons (name, value), results); @@ -2981,9 +3000,9 @@ console_type); if (CONSP (file)) /* failure locating filename */ - signal_double_file_error ("Opening pixmap file", - "no such file or directory", - Fcar (file)); + signal_double_image_error ("Opening pixmap file", + "no such file or directory", + Fcar (file)); color_symbols = find_keyword_in_vector_or_given (inst, Q_color_symbols, Qunbound); @@ -3140,11 +3159,11 @@ if (mask & dest_mask) return instantiator; else - signal_simple_error ("Type of image instance not allowed here", + invalid_argument ("Type of image instance not allowed here", instantiator); } else - signal_simple_error_2 ("Wrong domain for image instance", + invalid_argument_2 ("Wrong domain for image instance", instantiator, domain); } /* How ugly !! An image instanciator that uses a kludgy syntax to snarf in @@ -3284,8 +3303,7 @@ #endif } else if (NILP (instance)) - signal_simple_error ("Can't instantiate image (probably cached)", - instantiator); + gui_error ("Can't instantiate image (probably cached)", instantiator); /* We found an instance. However, because we are using the glyph as the hash key instead of the instantiator, the current instantiator may not be the same as the original. Thus we @@ -3335,12 +3353,12 @@ int i; if (instantiator_len < 1) - signal_simple_error ("Vector length must be at least 1", + sferror ("Vector length must be at least 1", instantiator); meths = decode_image_instantiator_format (elt[0], ERROR_ME); if (!(instantiator_len & 1)) - signal_simple_error + sferror ("Must have alternating keyword/value pairs", instantiator); GCPRO1 (already_seen); @@ -3353,19 +3371,19 @@ CHECK_SYMBOL (keyword); if (!SYMBOL_IS_KEYWORD (keyword)) - signal_simple_error ("Symbol must begin with a colon", keyword); + invalid_argument ("Symbol must begin with a colon", keyword); for (j = 0; j < Dynarr_length (meths->keywords); j++) if (EQ (keyword, Dynarr_at (meths->keywords, j).keyword)) break; if (j == Dynarr_length (meths->keywords)) - signal_simple_error ("Unrecognized keyword", keyword); + invalid_argument ("Unrecognized keyword", keyword); if (!Dynarr_at (meths->keywords, j).multiple_p) { if (!NILP (memq_no_quit (keyword, already_seen))) - signal_simple_error + sferror ("Keyword may not appear more than once", keyword); already_seen = Fcons (keyword, already_seen); } @@ -3378,7 +3396,7 @@ MAYBE_IIFORMAT_METH (meths, validate, (instantiator)); } else - signal_simple_error ("Must be string or vector", instantiator); + invalid_argument ("Must be string or vector", instantiator); } static void @@ -3561,7 +3579,7 @@ char buf[20]; if (print_readably) - error ("printing unreadable object #<glyph 0x%x>", glyph->header.uid); + printing_unreadable_object ("#<glyph 0x%x>", glyph->header.uid); write_c_string ("#<glyph (", printcharfun); print_internal (Fglyph_type (obj), printcharfun, 0); @@ -3756,7 +3774,7 @@ if (EQ (type, Qpointer)) return GLYPH_POINTER; if (EQ (type, Qicon)) return GLYPH_ICON; - maybe_signal_simple_error ("Invalid glyph type", type, Qimage, errb); + maybe_invalid_constant ("Invalid glyph type", type, Qimage, errb); return GLYPH_UNKNOWN; } @@ -4708,7 +4726,7 @@ Lisp_Object height = find_keyword_in_vector (instantiator, Q_pixel_height); if (NILP (frame)) - signal_simple_error ("No selected frame", device); + invalid_state ("No selected frame", device); if (!(dest_mask & IMAGE_SUBWINDOW_MASK)) incompatible_image_types (instantiator, dest_mask, IMAGE_SUBWINDOW_MASK); @@ -5008,7 +5026,7 @@ /* image instances */ - defsymbol (&Qimage_instancep, "image-instance-p"); + DEFSYMBOL_MULTIWORD_PREDICATE (Qimage_instancep); DEFSYMBOL (Qnothing_image_instance_p); DEFSYMBOL (Qtext_image_instance_p); @@ -5082,7 +5100,7 @@ DEFSUBR (Fglyph_animated_timeout_handler); /* Errors */ - DEFERROR_STANDARD (Qimage_conversion_error, Qio_error); + DEFERROR_STANDARD (Qimage_conversion_error, Qconversion_error); } static const struct lrecord_description image_specifier_description[] = {