Mercurial > hg > xemacs-beta
comparison src/buffer.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 | ed498ef2108b |
children | 001628b7a5b3 |
comparison
equal
deleted
inserted
replaced
562:c775bd016b32 | 563:183866b06e0b |
---|---|
258 struct buffer *b = XBUFFER (obj); | 258 struct buffer *b = XBUFFER (obj); |
259 | 259 |
260 if (print_readably) | 260 if (print_readably) |
261 { | 261 { |
262 if (!BUFFER_LIVE_P (b)) | 262 if (!BUFFER_LIVE_P (b)) |
263 error ("printing unreadable object #<killed buffer>"); | 263 printing_unreadable_object ("#<killed buffer>"); |
264 else | 264 else |
265 error ("printing unreadable object #<buffer %s>", | 265 printing_unreadable_object ("#<buffer %s>", XSTRING_DATA (b->name)); |
266 XSTRING_DATA (b->name)); | |
267 } | 266 } |
268 else if (!BUFFER_LIVE_P (b)) | 267 else if (!BUFFER_LIVE_P (b)) |
269 write_c_string ("#<killed buffer>", printcharfun); | 268 write_c_string ("#<killed buffer>", printcharfun); |
270 else if (escapeflag) | 269 else if (escapeflag) |
271 { | 270 { |
304 | 303 |
305 static void | 304 static void |
306 nsberror (Lisp_Object spec) | 305 nsberror (Lisp_Object spec) |
307 { | 306 { |
308 if (STRINGP (spec)) | 307 if (STRINGP (spec)) |
309 error ("No buffer named %s", XSTRING_DATA (spec)); | 308 invalid_argument ("No buffer named", spec); |
310 signal_simple_error ("Invalid buffer argument", spec); | 309 invalid_argument ("Invalid buffer argument", spec); |
311 } | 310 } |
312 | 311 |
313 DEFUN ("buffer-list", Fbuffer_list, 0, 1, 0, /* | 312 DEFUN ("buffer-list", Fbuffer_list, 0, 1, 0, /* |
314 Return a list of all existing live buffers. | 313 Return a list of all existing live buffers. |
315 The order is specific to the selected frame; if the optional FRAME | 314 The order is specific to the selected frame; if the optional FRAME |
617 buf = Fget_buffer (name); | 616 buf = Fget_buffer (name); |
618 if (!NILP (buf)) | 617 if (!NILP (buf)) |
619 return buf; | 618 return buf; |
620 | 619 |
621 if (XSTRING_LENGTH (name) == 0) | 620 if (XSTRING_LENGTH (name) == 0) |
622 error ("Empty string for buffer name is not allowed"); | 621 invalid_argument ("Empty string for buffer name is not allowed", |
622 Qunbound); | |
623 | 623 |
624 b = allocate_buffer (); | 624 b = allocate_buffer (); |
625 | 625 |
626 b->text = &b->own_text; | 626 b->text = &b->own_text; |
627 b->base_buffer = 0; | 627 b->base_buffer = 0; |
658 translated. */ | 658 translated. */ |
659 #endif | 659 #endif |
660 CHECK_STRING (name); | 660 CHECK_STRING (name); |
661 name = LISP_GETTEXT (name); | 661 name = LISP_GETTEXT (name); |
662 if (!NILP (Fget_buffer (name))) | 662 if (!NILP (Fget_buffer (name))) |
663 signal_simple_error ("Buffer name already in use", name); | 663 invalid_argument ("Buffer name already in use", name); |
664 if (XSTRING_LENGTH (name) == 0) | 664 if (XSTRING_LENGTH (name) == 0) |
665 error ("Empty string for buffer name is not allowed"); | 665 invalid_argument ("Empty string for buffer name is not allowed", Qunbound); |
666 | 666 |
667 b = allocate_buffer (); | 667 b = allocate_buffer (); |
668 | 668 |
669 b->base_buffer = BUFFER_BASE_BUFFER (XBUFFER (base_buffer)); | 669 b->base_buffer = BUFFER_BASE_BUFFER (XBUFFER (base_buffer)); |
670 | 670 |
946 #endif | 946 #endif |
947 CHECK_STRING (newname); | 947 CHECK_STRING (newname); |
948 newname = LISP_GETTEXT (newname); | 948 newname = LISP_GETTEXT (newname); |
949 | 949 |
950 if (XSTRING_LENGTH (newname) == 0) | 950 if (XSTRING_LENGTH (newname) == 0) |
951 error ("Empty string is invalid as a buffer name"); | 951 invalid_argument ("Empty string is invalid as a buffer name", Qunbound); |
952 | 952 |
953 tem = Fget_buffer (newname); | 953 tem = Fget_buffer (newname); |
954 /* Don't short-circuit if UNIQUE is t. That is a useful way to rename | 954 /* Don't short-circuit if UNIQUE is t. That is a useful way to rename |
955 the buffer automatically so you can create another with the original name. | 955 the buffer automatically so you can create another with the original name. |
956 It makes UNIQUE equivalent to | 956 It makes UNIQUE equivalent to |
961 if (!NILP (tem)) | 961 if (!NILP (tem)) |
962 { | 962 { |
963 if (!NILP (unique)) | 963 if (!NILP (unique)) |
964 newname = Fgenerate_new_buffer_name (newname, current_buffer->name); | 964 newname = Fgenerate_new_buffer_name (newname, current_buffer->name); |
965 else | 965 else |
966 error ("Buffer name \"%s\" is in use", | 966 invalid_argument ("Buffer name is in use", newname); |
967 XSTRING_DATA (newname)); | |
968 } | 967 } |
969 | 968 |
970 current_buffer->name = newname; | 969 current_buffer->name = newname; |
971 | 970 |
972 /* Catch redisplay's attention. Unless we do this, the modelines for | 971 /* Catch redisplay's attention. Unless we do this, the modelines for |
1496 */ | 1495 */ |
1497 (buffer)) | 1496 (buffer)) |
1498 { | 1497 { |
1499 buffer = get_buffer (buffer, 0); | 1498 buffer = get_buffer (buffer, 0); |
1500 if (NILP (buffer)) | 1499 if (NILP (buffer)) |
1501 error ("Selecting deleted or non-existent buffer"); | 1500 invalid_operation ("Selecting deleted or non-existent buffer", Qunbound); |
1502 set_buffer_internal (XBUFFER (buffer)); | 1501 set_buffer_internal (XBUFFER (buffer)); |
1503 return buffer; | 1502 return buffer; |
1504 } | 1503 } |
1505 | 1504 |
1506 | 1505 |
1584 | 1583 |
1585 if (!NILP (before)) | 1584 if (!NILP (before)) |
1586 before = get_buffer (before, 1); | 1585 before = get_buffer (before, 1); |
1587 | 1586 |
1588 if (EQ (before, buffer)) | 1587 if (EQ (before, buffer)) |
1589 error ("Cannot place a buffer before itself"); | 1588 invalid_operation ("Cannot place a buffer before itself", Qunbound); |
1590 | 1589 |
1591 bury_buffer_1 (buffer, before, &Vbuffer_alist); | 1590 bury_buffer_1 (buffer, before, &Vbuffer_alist); |
1592 bury_buffer_1 (buffer, before, &selected_frame ()->buffer_alist); | 1591 bury_buffer_1 (buffer, before, &selected_frame ()->buffer_alist); |
1593 | 1592 |
1594 return Qnil; | 1593 return Qnil; |
1923 size_in_bytes = Lstream_read (reader, tempbuf, sizeof (tempbuf)); | 1922 size_in_bytes = Lstream_read (reader, tempbuf, sizeof (tempbuf)); |
1924 | 1923 |
1925 if (size_in_bytes == 0) | 1924 if (size_in_bytes == 0) |
1926 break; | 1925 break; |
1927 else if (size_in_bytes < 0) | 1926 else if (size_in_bytes < 0) |
1928 error ("Error converting to external format"); | 1927 signal_error (Qtext_conversion_error, "Error converting to external format", Qunbound); |
1929 | 1928 |
1930 size_in_bytes = Lstream_write (writer, tempbuf, size_in_bytes); | 1929 size_in_bytes = Lstream_write (writer, tempbuf, size_in_bytes); |
1931 | 1930 |
1932 if (size_in_bytes <= 0) | 1931 if (size_in_bytes <= 0) |
1933 error ("Error converting to external format"); | 1932 signal_error (Qtext_conversion_error, "Error converting to external format", Qunbound); |
1934 } | 1933 } |
1935 | 1934 |
1936 /* Closing writer will close any stream at the other end of writer. */ | 1935 /* Closing writer will close any stream at the other end of writer. */ |
1937 Lstream_close (writer); | 1936 Lstream_close (writer); |
1938 Lstream_close (reader); | 1937 Lstream_close (reader); |
2061 size_in_bytes = Lstream_read (reader, tempbuf, sizeof (tempbuf)); | 2060 size_in_bytes = Lstream_read (reader, tempbuf, sizeof (tempbuf)); |
2062 | 2061 |
2063 if (size_in_bytes == 0) | 2062 if (size_in_bytes == 0) |
2064 break; | 2063 break; |
2065 else if (size_in_bytes < 0) | 2064 else if (size_in_bytes < 0) |
2066 error ("Error converting to internal format"); | 2065 signal_error (Qtext_conversion_error, "Error converting to internal format", Qunbound); |
2067 | 2066 |
2068 size_in_bytes = Lstream_write (writer, tempbuf, size_in_bytes); | 2067 size_in_bytes = Lstream_write (writer, tempbuf, size_in_bytes); |
2069 | 2068 |
2070 if (size_in_bytes <= 0) | 2069 if (size_in_bytes <= 0) |
2071 error ("Error converting to internal format"); | 2070 signal_error (Qtext_conversion_error, "Error converting to internal format", Qunbound); |
2072 } | 2071 } |
2073 | 2072 |
2074 /* Closing writer will close any stream at the other end of writer. */ | 2073 /* Closing writer will close any stream at the other end of writer. */ |
2075 Lstream_close (writer); | 2074 Lstream_close (writer); |
2076 Lstream_close (reader); | 2075 Lstream_close (reader); |
2095 void | 2094 void |
2096 syms_of_buffer (void) | 2095 syms_of_buffer (void) |
2097 { | 2096 { |
2098 INIT_LRECORD_IMPLEMENTATION (buffer); | 2097 INIT_LRECORD_IMPLEMENTATION (buffer); |
2099 | 2098 |
2100 defsymbol (&Qbuffer_live_p, "buffer-live-p"); | 2099 DEFSYMBOL (Qbuffer_live_p); |
2101 defsymbol (&Qbuffer_or_string_p, "buffer-or-string-p"); | 2100 DEFSYMBOL (Qbuffer_or_string_p); |
2102 defsymbol (&Qmode_class, "mode-class"); | 2101 DEFSYMBOL (Qmode_class); |
2103 defsymbol (&Qrename_auto_save_file, "rename-auto-save-file"); | 2102 DEFSYMBOL (Qrename_auto_save_file); |
2104 defsymbol (&Qkill_buffer_hook, "kill-buffer-hook"); | 2103 DEFSYMBOL (Qkill_buffer_hook); |
2105 defsymbol (&Qpermanent_local, "permanent-local"); | 2104 DEFSYMBOL (Qpermanent_local); |
2106 | 2105 |
2107 defsymbol (&Qfirst_change_hook, "first-change-hook"); | 2106 DEFSYMBOL (Qfirst_change_hook); |
2108 defsymbol (&Qbefore_change_functions, "before-change-functions"); | 2107 DEFSYMBOL (Qbefore_change_functions); |
2109 defsymbol (&Qafter_change_functions, "after-change-functions"); | 2108 DEFSYMBOL (Qafter_change_functions); |
2110 | 2109 |
2111 /* #### Obsolete, for compatibility */ | 2110 /* #### Obsolete, for compatibility */ |
2112 defsymbol (&Qbefore_change_function, "before-change-function"); | 2111 DEFSYMBOL (Qbefore_change_function); |
2113 defsymbol (&Qafter_change_function, "after-change-function"); | 2112 DEFSYMBOL (Qafter_change_function); |
2114 | 2113 |
2115 defsymbol (&Qdefault_directory, "default-directory"); | 2114 DEFSYMBOL (Qdefault_directory); |
2116 | 2115 |
2117 defsymbol (&Qget_file_buffer, "get-file-buffer"); | 2116 DEFSYMBOL (Qget_file_buffer); |
2118 defsymbol (&Qchange_major_mode_hook, "change-major-mode-hook"); | 2117 DEFSYMBOL (Qchange_major_mode_hook); |
2119 | 2118 |
2120 defsymbol (&Qfundamental_mode, "fundamental-mode"); | 2119 DEFSYMBOL (Qfundamental_mode); |
2121 | 2120 |
2122 defsymbol (&Qfind_file_compare_truenames, "find-file-compare-truenames"); | 2121 DEFSYMBOL (Qfind_file_compare_truenames); |
2123 | 2122 |
2124 defsymbol (&Qswitch_to_buffer, "switch-to-buffer"); | 2123 DEFSYMBOL (Qswitch_to_buffer); |
2125 | 2124 |
2126 DEFSUBR (Fbufferp); | 2125 DEFSUBR (Fbufferp); |
2127 DEFSUBR (Fbuffer_live_p); | 2126 DEFSUBR (Fbuffer_live_p); |
2128 DEFSUBR (Fbuffer_list); | 2127 DEFSUBR (Fbuffer_list); |
2129 DEFSUBR (Fdecode_buffer); | 2128 DEFSUBR (Fdecode_buffer); |