diff lisp/subr.el @ 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 5bdbc721d46a
children 943eaba38521
line wrap: on
line diff
--- a/lisp/subr.el	Thu May 24 06:30:21 2001 +0000
+++ b/lisp/subr.el	Thu May 24 07:51:33 2001 +0000
@@ -3,7 +3,7 @@
 ;; Copyright (C) 1985, 1986, 1992, 1994-5, 1997 Free Software Foundation, Inc.
 ;; Copyright (C) 1995 Tinker Systems and INS Engineering Corp.
 ;; Copyright (C) 1995 Sun Microsystems.
-;; Copyright (C) 2000 Ben Wing.
+;; Copyright (C) 2000, 2001 Ben Wing.
 
 ;; Maintainer: XEmacs Development Team
 ;; Keywords: extensions, dumped
@@ -625,38 +625,42 @@
 totally defeats the purpose of having structured errors.  There is now
 a rich set of defined errors you can use:
 
+quit
+
 error
-  syntax-error
-    invalid-read-syntax
-    list-formation-error
-      malformed-list
-        malformed-property-list
-      circular-list
-        circular-property-list
-    invalid-regexp
-    specifier-syntax-error
-
   invalid-argument
+    syntax-error
+      invalid-read-syntax
+      invalid-regexp
+      structure-formation-error
+        list-formation-error
+          malformed-list
+            malformed-property-list
+          circular-list
+            circular-property-list
+    invalid-function
+    no-catch
+    undefined-keystroke-sequence
+    invalid-constant
     wrong-type-argument
     args-out-of-range
     wrong-number-of-arguments
-    invalid-function
-    no-catch
-    undefined-keystroke-sequence
-    specifier-argument-error
 
   invalid-state
     void-function
     cyclic-function-indirection
     void-variable
     cyclic-variable-indirection
-    protected-field
     invalid-byte-code
+    stack-overflow
+    out-of-memory
+    invalid-key-binding
+    internal-error
 
   invalid-operation
     invalid-change
       setting-constant
-      specifier-change-error
+      protected-field
     editing-error
       beginning-of-buffer
       end-of-buffer
@@ -666,32 +670,37 @@
         file-already-exists
         file-locked
         file-supersession
-      end-of-file
-      coding-system-error
-      image-conversion-error
+        end-of-file
+      process-error
+      network-error
       tooltalk-error
+      gui-error
+        dialog-box-error
+      sound-error
+      conversion-error
+        text-conversion-error
+        image-conversion-error
+        base64-conversion-error
+        selection-conversion-error
     arith-error
       range-error
       domain-error
       singularity-error
       overflow-error
       underflow-error
-    dialog-box-error
     search-failed
-    selection-conversion-error
+    printing-unreadable-object
+    unimplemented
 
-  unimplemented
-
-  internal-error
+Note the semantic differences between some of the more common errors:
 
-The five most common errors you will probably use or base your new
-errors off of are `syntax-error', `invalid-argument', `invalid-state',
-`invalid-operation', and `invalid-change'.  Note the semantic differences:
-
--- `syntax-error' is for errors in complex structures: parsed strings, lists,
-   and the like.
--- `invalid-argument' is for errors in a simple value.  Typically, the entire
-   value, not just one part of it, is wrong.
+-- `invalid-argument' is for all cases where a bad value is encountered.
+-- `invalid-constant' is for arguments where only a specific set of values
+   is allowed.
+-- `syntax-error' is when complex structures (parsed strings, lists,
+   and the like) are badly formed.  If the problem is just a single bad
+   value inside the structure, you should probably be using something else,
+   e.g. `invalid-constant', `wrong-type-argument', or `invalid-argument'.
 -- `invalid-state' means that some settings have been changed in such a way
    that their current state is unallowable.  More and more, code is being
    written more carefully, and catches the error when the settings are being
@@ -699,9 +708,10 @@
 -- `invalid-change' means that an attempt is being made to change some settings
    into an invalid state.  `invalid-change' is a type of `invalid-operation'.
 -- `invalid-operation' refers to all cases where code is trying to do something
-   that's disallowed.  This includes file errors, buffer errors (e.g. running
-   off the end of a buffer), `invalid-change' as just mentioned, and
-   arithmetic errors.
+   that's disallowed, or when an error occurred during an operation. (These
+   two concepts are merged because there's no clear distinction between them.)
+-- `io-error' refers to errors involving interaction with any external
+   components (files, other programs, the operating system, etc).
 
 See also `cerror', `signal', and `signal-error'."
   (while t (apply