comparison src/abbrev.c @ 39960:d0d7ddac8c5e

Put doc strings in comments.
author Pavel Janík <Pavel@Janik.cz>
date Mon, 15 Oct 2001 13:38:04 +0000
parents 6145836b795c
children eac4e9ae201c
comparison
equal deleted inserted replaced
39959:52d1c9a20bfa 39960:d0d7ddac8c5e
20 Boston, MA 02111-1307, USA. */ 20 Boston, MA 02111-1307, USA. */
21 21
22 22
23 #include <config.h> 23 #include <config.h>
24 #include <stdio.h> 24 #include <stdio.h>
25 #define DOC_STRINGS_IN_COMMENTS
25 #include "lisp.h" 26 #include "lisp.h"
26 #include "commands.h" 27 #include "commands.h"
27 #include "buffer.h" 28 #include "buffer.h"
28 #include "window.h" 29 #include "window.h"
29 #include "charset.h" 30 #include "charset.h"
81 /* Hook to run before expanding any abbrev. */ 82 /* Hook to run before expanding any abbrev. */
82 83
83 Lisp_Object Vpre_abbrev_expand_hook, Qpre_abbrev_expand_hook; 84 Lisp_Object Vpre_abbrev_expand_hook, Qpre_abbrev_expand_hook;
84 85
85 DEFUN ("make-abbrev-table", Fmake_abbrev_table, Smake_abbrev_table, 0, 0, 0, 86 DEFUN ("make-abbrev-table", Fmake_abbrev_table, Smake_abbrev_table, 0, 0, 0,
86 "Create a new, empty abbrev table object.") 87 /* Create a new, empty abbrev table object. */
87 () 88 ())
88 { 89 {
89 return Fmake_vector (make_number (59), make_number (0)); 90 return Fmake_vector (make_number (59), make_number (0));
90 } 91 }
91 92
92 DEFUN ("clear-abbrev-table", Fclear_abbrev_table, Sclear_abbrev_table, 1, 1, 0, 93 DEFUN ("clear-abbrev-table", Fclear_abbrev_table, Sclear_abbrev_table, 1, 1, 0,
93 "Undefine all abbrevs in abbrev table TABLE, leaving it empty.") 94 /* Undefine all abbrevs in abbrev table TABLE, leaving it empty. */
94 (table) 95 (table))
95 Lisp_Object table; 96 Lisp_Object table;
96 { 97 {
97 int i, size; 98 int i, size;
98 99
99 CHECK_VECTOR (table, 0); 100 CHECK_VECTOR (table, 0);
103 XVECTOR (table)->contents[i] = make_number (0); 104 XVECTOR (table)->contents[i] = make_number (0);
104 return Qnil; 105 return Qnil;
105 } 106 }
106 107
107 DEFUN ("define-abbrev", Fdefine_abbrev, Sdefine_abbrev, 3, 5, 0, 108 DEFUN ("define-abbrev", Fdefine_abbrev, Sdefine_abbrev, 3, 5, 0,
108 "Define an abbrev in TABLE named NAME, to expand to EXPANSION and call HOOK.\n\ 109 /* Define an abbrev in TABLE named NAME, to expand to EXPANSION and call HOOK.
109 NAME must be a string.\n\ 110 NAME must be a string.
110 EXPANSION should usually be a string.\n\ 111 EXPANSION should usually be a string.
111 To undefine an abbrev, define it with EXPANSION = nil.\n\ 112 To undefine an abbrev, define it with EXPANSION = nil.
112 If HOOK is non-nil, it should be a function of no arguments;\n\ 113 If HOOK is non-nil, it should be a function of no arguments;
113 it is called after EXPANSION is inserted.\n\ 114 it is called after EXPANSION is inserted.
114 If EXPANSION is not a string, the abbrev is a special one,\n\ 115 If EXPANSION is not a string, the abbrev is a special one,
115 which does not expand in the usual way but only runs HOOK.\n\ 116 which does not expand in the usual way but only runs HOOK.
116 COUNT, if specified, initializes the abbrev's usage-count\n\ 117 COUNT, if specified, initializes the abbrev's usage-count
117 which is incremented each time the abbrev is used.") 118 which is incremented each time the abbrev is used. */
118 (table, name, expansion, hook, count) 119 (table, name, expansion, hook, count))
119 Lisp_Object table, name, expansion, hook, count; 120 Lisp_Object table, name, expansion, hook, count;
120 { 121 {
121 Lisp_Object sym, oexp, ohook, tem; 122 Lisp_Object sym, oexp, ohook, tem;
122 CHECK_VECTOR (table, 0); 123 CHECK_VECTOR (table, 0);
123 CHECK_STRING (name, 1); 124 CHECK_STRING (name, 1);
145 146
146 return name; 147 return name;
147 } 148 }
148 149
149 DEFUN ("define-global-abbrev", Fdefine_global_abbrev, Sdefine_global_abbrev, 2, 2, 150 DEFUN ("define-global-abbrev", Fdefine_global_abbrev, Sdefine_global_abbrev, 2, 2,
150 "sDefine global abbrev: \nsExpansion for %s: ", 151 "sDefine global abbrev: \nsExpansion for %s: ",
151 "Define ABBREV as a global abbreviation for EXPANSION.") 152 /* Define ABBREV as a global abbreviation for EXPANSION. */
152 (abbrev, expansion) 153 (abbrev, expansion))
153 Lisp_Object abbrev, expansion; 154 Lisp_Object abbrev, expansion;
154 { 155 {
155 Fdefine_abbrev (Vglobal_abbrev_table, Fdowncase (abbrev), 156 Fdefine_abbrev (Vglobal_abbrev_table, Fdowncase (abbrev),
156 expansion, Qnil, make_number (0)); 157 expansion, Qnil, make_number (0));
157 return abbrev; 158 return abbrev;
158 } 159 }
159 160
160 DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev, Sdefine_mode_abbrev, 2, 2, 161 DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev, Sdefine_mode_abbrev, 2, 2,
161 "sDefine mode abbrev: \nsExpansion for %s: ", 162 "sDefine mode abbrev: \nsExpansion for %s: ",
162 "Define ABBREV as a mode-specific abbreviation for EXPANSION.") 163 /* Define ABBREV as a mode-specific abbreviation for EXPANSION. */
163 (abbrev, expansion) 164 (abbrev, expansion))
164 Lisp_Object abbrev, expansion; 165 Lisp_Object abbrev, expansion;
165 { 166 {
166 if (NILP (current_buffer->abbrev_table)) 167 if (NILP (current_buffer->abbrev_table))
167 error ("Major mode has no abbrev table"); 168 error ("Major mode has no abbrev table");
168 169
170 expansion, Qnil, make_number (0)); 171 expansion, Qnil, make_number (0));
171 return abbrev; 172 return abbrev;
172 } 173 }
173 174
174 DEFUN ("abbrev-symbol", Fabbrev_symbol, Sabbrev_symbol, 1, 2, 0, 175 DEFUN ("abbrev-symbol", Fabbrev_symbol, Sabbrev_symbol, 1, 2, 0,
175 "Return the symbol representing abbrev named ABBREV.\n\ 176 /* Return the symbol representing abbrev named ABBREV.
176 This symbol's name is ABBREV, but it is not the canonical symbol of that name;\n\ 177 This symbol's name is ABBREV, but it is not the canonical symbol of that name;
177 it is interned in an abbrev-table rather than the normal obarray.\n\ 178 it is interned in an abbrev-table rather than the normal obarray.
178 The value is nil if that abbrev is not defined.\n\ 179 The value is nil if that abbrev is not defined.
179 Optional second arg TABLE is abbrev table to look it up in.\n\ 180 Optional second arg TABLE is abbrev table to look it up in.
180 The default is to try buffer's mode-specific abbrev table, then global table.") 181 The default is to try buffer's mode-specific abbrev table, then global table. */
181 (abbrev, table) 182 (abbrev, table))
182 Lisp_Object abbrev, table; 183 Lisp_Object abbrev, table;
183 { 184 {
184 Lisp_Object sym; 185 Lisp_Object sym;
185 CHECK_STRING (abbrev, 0); 186 CHECK_STRING (abbrev, 0);
186 if (!NILP (table)) 187 if (!NILP (table))
199 return Qnil; 200 return Qnil;
200 return sym; 201 return sym;
201 } 202 }
202 203
203 DEFUN ("abbrev-expansion", Fabbrev_expansion, Sabbrev_expansion, 1, 2, 0, 204 DEFUN ("abbrev-expansion", Fabbrev_expansion, Sabbrev_expansion, 1, 2, 0,
204 "Return the string that ABBREV expands into in the current buffer.\n\ 205 /* Return the string that ABBREV expands into in the current buffer.
205 Optionally specify an abbrev table as second arg;\n\ 206 Optionally specify an abbrev table as second arg;
206 then ABBREV is looked up in that table only.") 207 then ABBREV is looked up in that table only. */
207 (abbrev, table) 208 (abbrev, table))
208 Lisp_Object abbrev, table; 209 Lisp_Object abbrev, table;
209 { 210 {
210 Lisp_Object sym; 211 Lisp_Object sym;
211 sym = Fabbrev_symbol (abbrev, table); 212 sym = Fabbrev_symbol (abbrev, table);
212 if (NILP (sym)) return sym; 213 if (NILP (sym)) return sym;
215 216
216 /* Expand the word before point, if it is an abbrev. 217 /* Expand the word before point, if it is an abbrev.
217 Returns 1 if an expansion is done. */ 218 Returns 1 if an expansion is done. */
218 219
219 DEFUN ("expand-abbrev", Fexpand_abbrev, Sexpand_abbrev, 0, 0, "", 220 DEFUN ("expand-abbrev", Fexpand_abbrev, Sexpand_abbrev, 0, 0, "",
220 "Expand the abbrev before point, if there is an abbrev there.\n\ 221 /* Expand the abbrev before point, if there is an abbrev there.
221 Effective when explicitly called even when `abbrev-mode' is nil.\n\ 222 Effective when explicitly called even when `abbrev-mode' is nil.
222 Returns the abbrev symbol, if expansion took place.") 223 Returns the abbrev symbol, if expansion took place. */
223 () 224 ())
224 { 225 {
225 register char *buffer, *p; 226 register char *buffer, *p;
226 int wordstart, wordend; 227 int wordstart, wordend;
227 register int wordstart_byte, wordend_byte, idx; 228 register int wordstart_byte, wordend_byte, idx;
228 int whitecnt; 229 int whitecnt;
386 387
387 return value; 388 return value;
388 } 389 }
389 390
390 DEFUN ("unexpand-abbrev", Funexpand_abbrev, Sunexpand_abbrev, 0, 0, "", 391 DEFUN ("unexpand-abbrev", Funexpand_abbrev, Sunexpand_abbrev, 0, 0, "",
391 "Undo the expansion of the last abbrev that expanded.\n\ 392 /* Undo the expansion of the last abbrev that expanded.
392 This differs from ordinary undo in that other editing done since then\n\ 393 This differs from ordinary undo in that other editing done since then
393 is not undone.") 394 is not undone. */
394 () 395 ())
395 { 396 {
396 int opoint = PT; 397 int opoint = PT;
397 int adjust = 0; 398 int adjust = 0;
398 if (last_abbrev_point < BEGV 399 if (last_abbrev_point < BEGV
399 || last_abbrev_point > ZV) 400 || last_abbrev_point > ZV)
464 Fterpri (stream); 465 Fterpri (stream);
465 } 466 }
466 467
467 DEFUN ("insert-abbrev-table-description", Finsert_abbrev_table_description, 468 DEFUN ("insert-abbrev-table-description", Finsert_abbrev_table_description,
468 Sinsert_abbrev_table_description, 1, 2, 0, 469 Sinsert_abbrev_table_description, 1, 2, 0,
469 "Insert before point a full description of abbrev table named NAME.\n\ 470 /* Insert before point a full description of abbrev table named NAME.
470 NAME is a symbol whose value is an abbrev table.\n\ 471 NAME is a symbol whose value is an abbrev table.
471 If optional 2nd arg READABLE is non-nil, a human-readable description\n\ 472 If optional 2nd arg READABLE is non-nil, a human-readable description
472 is inserted. Otherwise the description is an expression,\n\ 473 is inserted. Otherwise the description is an expression,
473 a call to `define-abbrev-table', which would\n\ 474 a call to `define-abbrev-table', which would
474 define the abbrev table NAME exactly as it is currently defined.") 475 define the abbrev table NAME exactly as it is currently defined. */
475 (name, readable) 476 (name, readable))
476 Lisp_Object name, readable; 477 Lisp_Object name, readable;
477 { 478 {
478 Lisp_Object table; 479 Lisp_Object table;
479 Lisp_Object stream; 480 Lisp_Object stream;
480 481
504 return Qnil; 505 return Qnil;
505 } 506 }
506 507
507 DEFUN ("define-abbrev-table", Fdefine_abbrev_table, Sdefine_abbrev_table, 508 DEFUN ("define-abbrev-table", Fdefine_abbrev_table, Sdefine_abbrev_table,
508 2, 2, 0, 509 2, 2, 0,
509 "Define TABLENAME (a symbol) as an abbrev table name.\n\ 510 /* Define TABLENAME (a symbol) as an abbrev table name.
510 Define abbrevs in it according to DEFINITIONS, which is a list of elements\n\ 511 Define abbrevs in it according to DEFINITIONS, which is a list of elements
511 of the form (ABBREVNAME EXPANSION HOOK USECOUNT).") 512 of the form (ABBREVNAME EXPANSION HOOK USECOUNT). */
512 (tablename, definitions) 513 (tablename, definitions))
513 Lisp_Object tablename, definitions; 514 Lisp_Object tablename, definitions;
514 { 515 {
515 Lisp_Object name, exp, hook, count; 516 Lisp_Object name, exp, hook, count;
516 Lisp_Object table, elt; 517 Lisp_Object table, elt;
517 518
538 } 539 }
539 540
540 void 541 void
541 syms_of_abbrev () 542 syms_of_abbrev ()
542 { 543 {
543 DEFVAR_LISP ("abbrev-table-name-list", &Vabbrev_table_name_list, 544 DEFVAR_LISP ("abbrev-table-name-list", &Vabbrev_table_name_list
544 "List of symbols whose values are abbrev tables."); 545 /* List of symbols whose values are abbrev tables. */);
545 Vabbrev_table_name_list = Fcons (intern ("fundamental-mode-abbrev-table"), 546 Vabbrev_table_name_list = Fcons (intern ("fundamental-mode-abbrev-table"),
546 Fcons (intern ("global-abbrev-table"), 547 Fcons (intern ("global-abbrev-table"),
547 Qnil)); 548 Qnil));
548 549
549 DEFVAR_LISP ("global-abbrev-table", &Vglobal_abbrev_table, 550 DEFVAR_LISP ("global-abbrev-table", &Vglobal_abbrev_table
550 "The abbrev table whose abbrevs affect all buffers.\n\ 551 /* The abbrev table whose abbrevs affect all buffers.
551 Each buffer may also have a local abbrev table.\n\ 552 Each buffer may also have a local abbrev table.
552 If it does, the local table overrides the global one\n\ 553 If it does, the local table overrides the global one
553 for any particular abbrev defined in both."); 554 for any particular abbrev defined in both. */);
554 Vglobal_abbrev_table = Fmake_abbrev_table (); 555 Vglobal_abbrev_table = Fmake_abbrev_table ();
555 556
556 DEFVAR_LISP ("fundamental-mode-abbrev-table", &Vfundamental_mode_abbrev_table, 557 DEFVAR_LISP ("fundamental-mode-abbrev-table", &Vfundamental_mode_abbrev_table
557 "The abbrev table of mode-specific abbrevs for Fundamental Mode."); 558 /* The abbrev table of mode-specific abbrevs for Fundamental Mode. */);
558 Vfundamental_mode_abbrev_table = Fmake_abbrev_table (); 559 Vfundamental_mode_abbrev_table = Fmake_abbrev_table ();
559 current_buffer->abbrev_table = Vfundamental_mode_abbrev_table; 560 current_buffer->abbrev_table = Vfundamental_mode_abbrev_table;
560 buffer_defaults.abbrev_table = Vfundamental_mode_abbrev_table; 561 buffer_defaults.abbrev_table = Vfundamental_mode_abbrev_table;
561 562
562 DEFVAR_LISP ("last-abbrev", &Vlast_abbrev, 563 DEFVAR_LISP ("last-abbrev", &Vlast_abbrev
563 "The abbrev-symbol of the last abbrev expanded. See `abbrev-symbol'."); 564 /* The abbrev-symbol of the last abbrev expanded. See `abbrev-symbol'. */);
564 565
565 DEFVAR_LISP ("last-abbrev-text", &Vlast_abbrev_text, 566 DEFVAR_LISP ("last-abbrev-text", &Vlast_abbrev_text
566 "The exact text of the last abbrev expanded.\n\ 567 /* The exact text of the last abbrev expanded.
567 nil if the abbrev has already been unexpanded."); 568 nil if the abbrev has already been unexpanded. */);
568 569
569 DEFVAR_INT ("last-abbrev-location", &last_abbrev_point, 570 DEFVAR_INT ("last-abbrev-location", &last_abbrev_point
570 "The location of the start of the last abbrev expanded."); 571 /* The location of the start of the last abbrev expanded. */);
571 572
572 Vlast_abbrev = Qnil; 573 Vlast_abbrev = Qnil;
573 Vlast_abbrev_text = Qnil; 574 Vlast_abbrev_text = Qnil;
574 last_abbrev_point = 0; 575 last_abbrev_point = 0;
575 576
576 DEFVAR_LISP ("abbrev-start-location", &Vabbrev_start_location, 577 DEFVAR_LISP ("abbrev-start-location", &Vabbrev_start_location
577 "Buffer position for `expand-abbrev' to use as the start of the abbrev.\n\ 578 /* Buffer position for `expand-abbrev' to use as the start of the abbrev.
578 nil means use the word before point as the abbrev.\n\ 579 nil means use the word before point as the abbrev.
579 Calling `expand-abbrev' sets this to nil."); 580 Calling `expand-abbrev' sets this to nil. */);
580 Vabbrev_start_location = Qnil; 581 Vabbrev_start_location = Qnil;
581 582
582 DEFVAR_LISP ("abbrev-start-location-buffer", &Vabbrev_start_location_buffer, 583 DEFVAR_LISP ("abbrev-start-location-buffer", &Vabbrev_start_location_buffer
583 "Buffer that `abbrev-start-location' has been set for.\n\ 584 /* Buffer that `abbrev-start-location' has been set for.
584 Trying to expand an abbrev in any other buffer clears `abbrev-start-location'."); 585 Trying to expand an abbrev in any other buffer clears `abbrev-start-location'. */);
585 Vabbrev_start_location_buffer = Qnil; 586 Vabbrev_start_location_buffer = Qnil;
586 587
587 DEFVAR_PER_BUFFER ("local-abbrev-table", &current_buffer->abbrev_table, Qnil, 588 DEFVAR_PER_BUFFER ("local-abbrev-table", &current_buffer->abbrev_table, Qnil
588 "Local (mode-specific) abbrev table of current buffer."); 589 /* Local (mode-specific) abbrev table of current buffer. */);
589 590
590 DEFVAR_BOOL ("abbrevs-changed", &abbrevs_changed, 591 DEFVAR_BOOL ("abbrevs-changed", &abbrevs_changed
591 "Set non-nil by defining or altering any word abbrevs.\n\ 592 /* Set non-nil by defining or altering any word abbrevs.
592 This causes `save-some-buffers' to offer to save the abbrevs."); 593 This causes `save-some-buffers' to offer to save the abbrevs. */);
593 abbrevs_changed = 0; 594 abbrevs_changed = 0;
594 595
595 DEFVAR_BOOL ("abbrev-all-caps", &abbrev_all_caps, 596 DEFVAR_BOOL ("abbrev-all-caps", &abbrev_all_caps
596 "*Set non-nil means expand multi-word abbrevs all caps if abbrev was so."); 597 /* *Set non-nil means expand multi-word abbrevs all caps if abbrev was so. */);
597 abbrev_all_caps = 0; 598 abbrev_all_caps = 0;
598 599
599 DEFVAR_LISP ("pre-abbrev-expand-hook", &Vpre_abbrev_expand_hook, 600 DEFVAR_LISP ("pre-abbrev-expand-hook", &Vpre_abbrev_expand_hook
600 "Function or functions to be called before abbrev expansion is done.\n\ 601 /* Function or functions to be called before abbrev expansion is done.
601 This is the first thing that `expand-abbrev' does, and so this may change\n\ 602 This is the first thing that `expand-abbrev' does, and so this may change
602 the current abbrev table before abbrev lookup happens."); 603 the current abbrev table before abbrev lookup happens. */);
603 Vpre_abbrev_expand_hook = Qnil; 604 Vpre_abbrev_expand_hook = Qnil;
604 Qpre_abbrev_expand_hook = intern ("pre-abbrev-expand-hook"); 605 Qpre_abbrev_expand_hook = intern ("pre-abbrev-expand-hook");
605 staticpro (&Qpre_abbrev_expand_hook); 606 staticpro (&Qpre_abbrev_expand_hook);
606 607
607 defsubr (&Smake_abbrev_table); 608 defsubr (&Smake_abbrev_table);