Mercurial > hg > xemacs-beta
comparison src/abbrev.c @ 793:e38acbeb1cae
[xemacs-hg @ 2002-03-29 04:46:17 by ben]
lots o' fixes
etc/ChangeLog: New file.
Separated out all entries for etc/ into their own ChangeLog.
Includes entries for the following files:
etc/BABYL, etc/BETA, etc/CHARSETS, etc/DISTRIB, etc/Emacs.ad,
etc/FTP, etc/GNUS-NEWS, etc/GOATS, etc/HELLO, etc/INSTALL,
etc/MACHINES, etc/MAILINGLISTS, etc/MSDOS, etc/MYTHOLOGY, etc/NEWS,
etc/OXYMORONS, etc/PACKAGES, etc/README, etc/TUTORIAL,
etc/TUTORIAL.de, etc/TUTORIAL.ja, etc/TUTORIAL.ko, etc/TUTORIAL.se,
etc/aliases.ksh, etc/altrasoft-logo.xpm, etc/check_cygwin_setup.sh,
etc/custom/example-themes/europe-theme.el,
etc/custom/example-themes/ex-custom-file,
etc/custom/example-themes/example-theme.el, etc/e/eterm.ti,
etc/edt-user.doc, etc/enriched.doc, etc/etags.1, etc/gnuserv.1,
etc/gnuserv.README, etc/package-index.LATEST.gpg,
etc/package-index.LATEST.pgp, etc/photos/jan.png, etc/recycle.xpm,
etc/refcard.tex, etc/sample.Xdefaults, etc/sample.emacs,
etc/sgml/CATALOG, etc/sgml/HTML32.dtd, etc/skk/SKK.tut.E,
etc/smilies/Face_ase.xbm, etc/smilies/Face_ase2.xbm,
etc/smilies/Face_ase3.xbm, etc/smilies/Face_smile.xbm,
etc/smilies/Face_weep.xbm, etc/sounds, etc/toolbar,
etc/toolbar/workshop-cap-up.xpm, etc/xemacs-ja.1, etc/xemacs.1,
etc/yow.lines, etc\BETA, etc\NEWS, etc\README, etc\TUTORIAL,
etc\TUTORIAL.de, etc\check_cygwin_setup.sh, etc\sample.init.el,
etc\unicode\README, etc\unicode\mule-ucs\*, etc\unicode\other\*
unicode/unicode-consortium/8859-16.TXT: New file.
mule/english.el: Define this charset now, since a bug was fixed that formerly
prevented it.
mule/ethio-util.el: Fix compile errors involving Unicode `characters', which should be
integers.
Makefile.in.in: Always include gui.c, to fix compile error when TTY-only.
EmacsFrame.c, abbrev.c, alloc.c, buffer.c, buffer.h, bytecode.c, bytecode.h, callint.c, callproc.c, casetab.c, casetab.h, charset.h, chartab.c, chartab.h, cmds.c, console-msw.c, console-msw.h, console-tty.c, console-x.c, console-x.h, console.c, console.h, data.c, database.c, device-gtk.c, device-msw.c, device-x.c, device.c, device.h, dialog-msw.c, doc.c, doprnt.c, dumper.c, dynarr.c, editfns.c, eldap.c, eldap.h, elhash.c, elhash.h, emacs.c, eval.c, event-Xt.c, event-gtk.c, event-msw.c, event-stream.c, event-tty.c, event-unixoid.c, events.c, events.h, extents.c, extents.h, faces.c, faces.h, file-coding.c, file-coding.h, fileio.c, filelock.c, fns.c, frame-gtk.c, frame-msw.c, frame-tty.c, frame-x.c, frame.c, frame.h, free-hook.c, general-slots.h, glyphs-eimage.c, glyphs-gtk.c, glyphs-msw.c, glyphs-widget.c, glyphs-x.c, glyphs.c, glyphs.h, gpmevent.c, gtk-xemacs.c, gui-msw.c, gui-x.c, gui-x.h, gui.c, gui.h, gutter.c, gutter.h, indent.c, input-method-xlib.c, insdel.c, keymap.c, keymap.h, lisp-disunion.h, lisp-union.h, lisp.h, lread.c, lrecord.h, lstream.c, lstream.h, marker.c, menubar-gtk.c, menubar-msw.c, menubar-x.c, menubar.c, minibuf.c, mule-canna.c, mule-ccl.c, mule-charset.c, mule-wnnfns.c, native-gtk-toolbar.c, objects-msw.c, objects-tty.c, objects-x.c, objects.c, objects.h, opaque.c, opaque.h, postgresql.c, postgresql.h, print.c, process-unix.c, process.c, process.h, rangetab.c, rangetab.h, redisplay-gtk.c, redisplay-msw.c, redisplay-output.c, redisplay-tty.c, redisplay-x.c, redisplay.c, scrollbar-gtk.c, scrollbar-msw.c, scrollbar-x.c, scrollbar.c, scrollbar.h, search.c, select-gtk.c, select-x.c, sound.c, specifier.c, specifier.h, strftime.c, symbols.c, symeval.h, syntax.h, text.c, text.h, toolbar-common.c, toolbar-msw.c, toolbar.c, toolbar.h, tooltalk.c, tooltalk.h, ui-gtk.c, ui-gtk.h, undo.c, vm-limit.c, window.c, window.h: Eliminate XSETFOO. Replace all usages with wrap_foo().
Make symbol->name a Lisp_Object, not Lisp_String *. Eliminate
nearly all uses of Lisp_String * in favor of Lisp_Object, and
correct macros so most of them favor Lisp_Object.
Create new error-behavior ERROR_ME_DEBUG_WARN -- output warnings,
but at level `debug' (usually ignored). Use it when instantiating
specifiers, so problems can be debugged. Move
log-warning-minimum-level into C so that we can optimize
ERROR_ME_DEBUG_WARN.
Fix warning levels consistent with new definitions.
Add default_ and parent fields to char table; not yet implemented.
New fun Dynarr_verify(); use for further error checking on Dynarrs.
Rearrange code at top of lisp.h in conjunction with dynarr changes.
Fix eifree(). Use Eistrings in various places
(format_event_object(), where_is_to_char(), and callers thereof)
to avoid fixed-size strings buffers. New fun write_eistring().
Reindent and fix GPM code to follow standards.
Set default MS Windows font to Lucida Console (same size as
Courier New but less interline spacing, so more lines fit).
Increase default frame size on Windows to 50 lines. (If that's too
big for the workspace, the frame will be shrunk as necessary.)
Fix problem with text files with no newlines (). (Change
`convert-eol' coding system to use `nil' for autodetect,
consistent with make-coding-system.)
Correct compile warnings in vm-limit.c.
Fix handling of reverse-direction charsets to avoid errors when
opening (e.g.) mule-ucs/lisp/reldata/uiso8859-6.el.
Recode some object printing methods to use write_fmt_string()
instead of a fixed buffer and sprintf.
Turn on display of png comments as warnings (level `info'), now
that they're unobtrusive.
Revamped the sound documentation.
Fixed bug in redisplay w.r.t. hscroll/truncation/continuation
glyphs causing jumping up and down of the lines, since they're
bigger than the line size. (It was seen most obviously when
there's a horizontal scroll bar, e.g. do C-h a glyph or something
like that.) The problem was that the glyph-contrib-p setting on
glyphs was ignored even if it was set properly, which it wasn't
until now.
author | ben |
---|---|
date | Fri, 29 Mar 2002 04:49:13 +0000 |
parents | 943eaba38521 |
children | a634e3b7acc8 |
comparison
equal
deleted
inserted
replaced
792:4e83fdb13eb9 | 793:e38acbeb1cae |
---|---|
1 /* Primitives for word-abbrev mode. | 1 /* Primitives for word-abbrev mode. |
2 Copyright (C) 1985, 1986, 1992, 1993 Free Software Foundation, Inc. | 2 Copyright (C) 1985, 1986, 1992, 1993 Free Software Foundation, Inc. |
3 Copyright (C) 2002 Ben Wing. | |
3 | 4 |
4 This file is part of XEmacs. | 5 This file is part of XEmacs. |
5 | 6 |
6 XEmacs is free software; you can redistribute it and/or modify it | 7 XEmacs is free software; you can redistribute it and/or modify it |
7 under the terms of the GNU General Public License as published by the | 8 under the terms of the GNU General Public License as published by the |
90 { | 91 { |
91 struct abbrev_match_mapper_closure *closure = | 92 struct abbrev_match_mapper_closure *closure = |
92 (struct abbrev_match_mapper_closure *)arg; | 93 (struct abbrev_match_mapper_closure *)arg; |
93 Charcount abbrev_length; | 94 Charcount abbrev_length; |
94 Lisp_Symbol *sym = XSYMBOL (symbol); | 95 Lisp_Symbol *sym = XSYMBOL (symbol); |
95 Lisp_String *abbrev; | 96 Lisp_Object abbrev; |
96 | 97 |
97 /* symbol_value should be OK here, because abbrevs are not expected | 98 /* symbol_value should be OK here, because abbrevs are not expected |
98 to contain any SYMBOL_MAGIC stuff. */ | 99 to contain any SYMBOL_MAGIC stuff. */ |
99 if (UNBOUNDP (symbol_value (sym)) || NILP (symbol_value (sym))) | 100 if (UNBOUNDP (symbol_value (sym)) || NILP (symbol_value (sym))) |
100 { | 101 { |
101 /* The symbol value of nil means that abbrev got undefined. */ | 102 /* The symbol value of nil means that abbrev got undefined. */ |
102 return 0; | 103 return 0; |
103 } | 104 } |
104 abbrev = symbol_name (sym); | 105 abbrev = symbol_name (sym); |
105 abbrev_length = string_char_length (abbrev); | 106 abbrev_length = XSTRING_CHAR_LENGTH (abbrev); |
106 if (abbrev_length > closure->maxlen) | 107 if (abbrev_length > closure->maxlen) |
107 { | 108 { |
108 /* This abbrev is too large -- it wouldn't fit. */ | 109 /* This abbrev is too large -- it wouldn't fit. */ |
109 return 0; | 110 return 0; |
110 } | 111 } |
111 /* If `bar' is an abbrev, and a user presses `fubar<SPC>', we don't | 112 /* If `bar' is an abbrev, and a user presses `fubar<SPC>', we don't |
112 normally want to expand it. OTOH, if the abbrev begins with | 113 normally want to expand it. OTOH, if the abbrev begins with |
113 non-word syntax (e.g. `#if'), it is OK to abbreviate it anywhere. */ | 114 non-word syntax (e.g. `#if'), it is OK to abbreviate it anywhere. */ |
114 if (abbrev_length < closure->maxlen && abbrev_length > 0 | 115 if (abbrev_length < closure->maxlen && abbrev_length > 0 |
115 && (WORD_SYNTAX_P (closure->chartab, string_char (abbrev, 0))) | 116 && (WORD_SYNTAX_P (closure->chartab, XSTRING_CHAR (abbrev, 0))) |
116 && (WORD_SYNTAX_P (closure->chartab, | 117 && (WORD_SYNTAX_P (closure->chartab, |
117 BUF_FETCH_CHAR (closure->buf, | 118 BUF_FETCH_CHAR (closure->buf, |
118 closure->point - (abbrev_length + 1))))) | 119 closure->point - |
120 (abbrev_length + 1))))) | |
119 { | 121 { |
120 return 0; | 122 return 0; |
121 } | 123 } |
122 /* Match abbreviation string against buffer text. */ | 124 /* Match abbreviation string against buffer text. */ |
123 { | 125 { |
124 Intbyte *ptr = string_data (abbrev); | 126 Intbyte *ptr = XSTRING_DATA (abbrev); |
125 Charcount idx; | 127 Charcount idx; |
126 | 128 |
127 for (idx = 0; idx < abbrev_length; idx++) | 129 for (idx = 0; idx < abbrev_length; idx++) |
128 { | 130 { |
129 if (DOWNCASE (closure->buf, | 131 if (DOWNCASE (closure->buf, |
283 Charbpos abbrev_start; /* position of abbreviation beginning */ | 285 Charbpos abbrev_start; /* position of abbreviation beginning */ |
284 | 286 |
285 Lisp_Symbol *(*fun) (struct buffer *, Lisp_Object); | 287 Lisp_Symbol *(*fun) (struct buffer *, Lisp_Object); |
286 | 288 |
287 Lisp_Symbol *abbrev_symbol; | 289 Lisp_Symbol *abbrev_symbol; |
288 Lisp_String *abbrev_string; | |
289 Lisp_Object expansion, count, hook; | 290 Lisp_Object expansion, count, hook; |
290 Charcount abbrev_length; | 291 Charcount abbrev_length; |
291 int lccount, uccount; | 292 int lccount, uccount; |
292 | 293 |
293 run_hook (Qpre_abbrev_expand_hook); | 294 run_hook (Qpre_abbrev_expand_hook); |
326 point = BUF_PT (buf); | 327 point = BUF_PT (buf); |
327 | 328 |
328 /* OK, we're out of the must-be-fast part. An abbreviation matched. | 329 /* OK, we're out of the must-be-fast part. An abbreviation matched. |
329 Now find the parameters, insert the expansion, and make it all | 330 Now find the parameters, insert the expansion, and make it all |
330 look pretty. */ | 331 look pretty. */ |
331 abbrev_string = symbol_name (abbrev_symbol); | 332 abbrev_length = XSTRING_CHAR_LENGTH (symbol_name (abbrev_symbol)); |
332 abbrev_length = string_char_length (abbrev_string); | |
333 abbrev_start = point - abbrev_length; | 333 abbrev_start = point - abbrev_length; |
334 | 334 |
335 expansion = symbol_value (abbrev_symbol); | 335 expansion = symbol_value (abbrev_symbol); |
336 CHECK_STRING (expansion); | 336 CHECK_STRING (expansion); |
337 | 337 |
344 | 344 |
345 /* Count the case in the original text. */ | 345 /* Count the case in the original text. */ |
346 abbrev_count_case (buf, abbrev_start, abbrev_length, &lccount, &uccount); | 346 abbrev_count_case (buf, abbrev_start, abbrev_length, &lccount, &uccount); |
347 | 347 |
348 /* Remember the last abbrev text, location, etc. */ | 348 /* Remember the last abbrev text, location, etc. */ |
349 XSETSYMBOL (Vlast_abbrev, abbrev_symbol); | 349 Vlast_abbrev = wrap_symbol (abbrev_symbol); |
350 Vlast_abbrev_text = | 350 Vlast_abbrev_text = |
351 make_string_from_buffer (buf, abbrev_start, abbrev_length); | 351 make_string_from_buffer (buf, abbrev_start, abbrev_length); |
352 last_abbrev_location = abbrev_start; | 352 last_abbrev_location = abbrev_start; |
353 | 353 |
354 /* Add an undo boundary, in case we are doing this for a | 354 /* Add an undo boundary, in case we are doing this for a |