annotate src/category.c @ 99492:ee792794d888

(isearch-search-fun): Compare the length of the current search string with the length of the string from the previous search state to detect the situation when the user adds or removes characters in the search string. Use word-search-forward-lax and word-search-backward-lax in this case, and otherwise word-search-forward and word-search-backward.
author Juri Linkov <juri@jurta.org>
date Tue, 11 Nov 2008 19:43:09 +0000
parents 7548cef42245
children dddfb4772d33
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1 /* GNU Emacs routines to deal with category tables.
79759
fc2bcd2a8aad Add 2008 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 78501
diff changeset
2 Copyright (C) 1998, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
75227
e90d04cd455a Update copyright for years from Emacs 21 to present (mainly adding
Glenn Morris <rgm@gnu.org>
parents: 74605
diff changeset
3 Free Software Foundation, Inc.
74605
6ee41fdd69ff Update AIST copyright years.
Kenichi Handa <handa@m17n.org>
parents: 73927
diff changeset
4 Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
79759
fc2bcd2a8aad Add 2008 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 78501
diff changeset
5 2005, 2006, 2007, 2008
67658
547f2b420666 Copyright fixed
Kenichi Handa <handa@m17n.org>
parents: 64084
diff changeset
6 National Institute of Advanced Industrial Science and Technology (AIST)
547f2b420666 Copyright fixed
Kenichi Handa <handa@m17n.org>
parents: 64084
diff changeset
7 Registration Number H14PRO021
89483
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89380
diff changeset
8 Copyright (C) 2003
88359
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
9 National Institute of Advanced Industrial Science and Technology (AIST)
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
10 Registration Number H13PRO009
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
11
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
12 This file is part of GNU Emacs.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
13
94963
8971ddf55736 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 91327
diff changeset
14 GNU Emacs is free software: you can redistribute it and/or modify
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
15 it under the terms of the GNU General Public License as published by
94963
8971ddf55736 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 91327
diff changeset
16 the Free Software Foundation, either version 3 of the License, or
8971ddf55736 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 91327
diff changeset
17 (at your option) any later version.
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
18
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
19 GNU Emacs is distributed in the hope that it will be useful,
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
20 but WITHOUT ANY WARRANTY; without even the implied warranty of
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
21 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
22 GNU General Public License for more details.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
23
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
24 You should have received a copy of the GNU General Public License
94963
8971ddf55736 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 91327
diff changeset
25 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
26
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
27
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
28 /* Here we handle three objects: category, category set, and category
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
29 table. Read comments in the file category.h to understand them. */
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
30
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
31 #include <config.h>
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
32 #include <ctype.h>
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
33 #include "lisp.h"
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
34 #include "buffer.h"
88359
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
35 #include "character.h"
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
36 #include "charset.h"
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
37 #include "category.h"
39748
42b7a798ff79 Include keymap.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 34984
diff changeset
38 #include "keymap.h"
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
39
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
40 /* The version number of the latest category table. Each category
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
41 table has a unique version number. It is assigned a new number
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
42 also when it is modified. When a regular expression is compiled
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
43 into the struct re_pattern_buffer, the version number of the
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
44 category table (of the current buffer) at that moment is also
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
45 embedded in the structure.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
46
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
47 For the moment, we are not using this feature. */
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
48 static int category_table_version;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
49
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
50 Lisp_Object Qcategory_table, Qcategoryp, Qcategorysetp, Qcategory_table_p;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
51
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
52 /* Variables to determine word boundary. */
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
53 Lisp_Object Vword_combining_categories, Vword_separating_categories;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
54
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
55 /* Temporary internal variable used in macro CHAR_HAS_CATEGORY. */
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
56 Lisp_Object _temp_category_set;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
57
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
58
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
59 /* Category set staff. */
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
60
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
61 DEFUN ("make-category-set", Fmake_category_set, Smake_category_set, 1, 1, 0,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
62 doc: /* Return a newly created category-set which contains CATEGORIES.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
63 CATEGORIES is a string of category mnemonics.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
64 The value is a bool-vector which has t at the indices corresponding to
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
65 those categories. */)
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
66 (categories)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
67 Lisp_Object categories;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
68 {
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
69 Lisp_Object val;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
70 int len;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
71
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40103
diff changeset
72 CHECK_STRING (categories);
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
73 val = MAKE_CATEGORY_SET;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
74
20612
5a0922f8c841 (Fmake_category_set): Don't allow multibyte string.
Richard M. Stallman <rms@gnu.org>
parents: 20189
diff changeset
75 if (STRING_MULTIBYTE (categories))
63694
8f10ba0f0a86 (Fmake_category_set): Follow error conventions.
Juanma Barranquero <lekktu@gmail.com>
parents: 54091
diff changeset
76 error ("Multibyte string in `make-category-set'");
20612
5a0922f8c841 (Fmake_category_set): Don't allow multibyte string.
Richard M. Stallman <rms@gnu.org>
parents: 20189
diff changeset
77
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 41643
diff changeset
78 len = SCHARS (categories);
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
79 while (--len >= 0)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
80 {
17369
566b26e1930e (Fmake_category_set): Use XSETFASTINT.
Karl Heuer <kwzh@gnu.org>
parents: 17324
diff changeset
81 Lisp_Object category;
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
82
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 41643
diff changeset
83 XSETFASTINT (category, SREF (categories, len));
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40103
diff changeset
84 CHECK_CATEGORY (category);
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
85 SET_CATEGORY_SET (val, category, Qt);
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
86 }
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
87 return val;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
88 }
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
89
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
90
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
91 /* Category staff. */
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
92
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
93 Lisp_Object check_category_table ();
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
94
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
95 DEFUN ("define-category", Fdefine_category, Sdefine_category, 2, 3, 0,
54091
15dabc5988ff (Fdefine_category, Fcategory_docstring)
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
96 doc: /* Define CATEGORY as a category which is described by DOCSTRING.
15dabc5988ff (Fdefine_category, Fcategory_docstring)
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
97 CATEGORY should be an ASCII printing character in the range ` ' to `~'.
99117
2810c8ec19d6 (Fdefine_category): Docstring modified for DOCSTRING.
Kenichi Handa <handa@m17n.org>
parents: 99016
diff changeset
98 DOCSTRING is the documentation string of the category. The first line
2810c8ec19d6 (Fdefine_category): Docstring modified for DOCSTRING.
Kenichi Handa <handa@m17n.org>
parents: 99016
diff changeset
99 should be a terse text (preferably less than 16 characters),
2810c8ec19d6 (Fdefine_category): Docstring modified for DOCSTRING.
Kenichi Handa <handa@m17n.org>
parents: 99016
diff changeset
100 and the rest lines should be the full description.
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
101 The category is defined only in category table TABLE, which defaults to
54091
15dabc5988ff (Fdefine_category, Fcategory_docstring)
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
102 the current buffer's category table. */)
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
103 (category, docstring, table)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
104 Lisp_Object category, docstring, table;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
105 {
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40103
diff changeset
106 CHECK_CATEGORY (category);
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40103
diff changeset
107 CHECK_STRING (docstring);
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
108 table = check_category_table (table);
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
109
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
110 if (!NILP (CATEGORY_DOCSTRING (table, XFASTINT (category))))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
111 error ("Category `%c' is already defined", XFASTINT (category));
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
112 CATEGORY_DOCSTRING (table, XFASTINT (category)) = docstring;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
113
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
114 return Qnil;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
115 }
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
116
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
117 DEFUN ("category-docstring", Fcategory_docstring, Scategory_docstring, 1, 2, 0,
54091
15dabc5988ff (Fdefine_category, Fcategory_docstring)
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
118 doc: /* Return the documentation string of CATEGORY, as defined in TABLE.
15dabc5988ff (Fdefine_category, Fcategory_docstring)
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
119 TABLE should be a category table and defaults to the current buffer's
15dabc5988ff (Fdefine_category, Fcategory_docstring)
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
120 category table. */)
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
121 (category, table)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
122 Lisp_Object category, table;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
123 {
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40103
diff changeset
124 CHECK_CATEGORY (category);
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
125 table = check_category_table (table);
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
126
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
127 return CATEGORY_DOCSTRING (table, XFASTINT (category));
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
128 }
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
129
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
130 DEFUN ("get-unused-category", Fget_unused_category, Sget_unused_category,
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
131 0, 1, 0,
54091
15dabc5988ff (Fdefine_category, Fcategory_docstring)
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
132 doc: /* Return a category which is not yet defined in TABLE.
41038
a882905d8a96 (Fget_unused_category): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 40656
diff changeset
133 If no category remains available, return nil.
54091
15dabc5988ff (Fdefine_category, Fcategory_docstring)
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
134 The optional argument TABLE specifies which category table to modify;
41038
a882905d8a96 (Fget_unused_category): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 40656
diff changeset
135 it defaults to the current buffer's category table. */)
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
136 (table)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
137 Lisp_Object table;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
138 {
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
139 int i;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
140
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
141 table = check_category_table (table);
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
142
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
143 for (i = ' '; i <= '~'; i++)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
144 if (NILP (CATEGORY_DOCSTRING (table, i)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
145 return make_number (i);
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
146
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
147 return Qnil;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
148 }
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
149
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
150
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
151 /* Category-table staff. */
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
152
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
153 DEFUN ("category-table-p", Fcategory_table_p, Scategory_table_p, 1, 1, 0,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
154 doc: /* Return t if ARG is a category table. */)
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
155 (arg)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
156 Lisp_Object arg;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
157 {
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
158 if (CHAR_TABLE_P (arg)
17324
ed53084a1655 (category-table-p): Check only type and purpose.
Kenichi Handa <handa@m17n.org>
parents: 17187
diff changeset
159 && EQ (XCHAR_TABLE (arg)->purpose, Qcategory_table))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
160 return Qt;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
161 return Qnil;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
162 }
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
163
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
164 /* If TABLE is nil, return the current category table. If TABLE is
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
165 not nil, check the validity of TABLE as a category table. If
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
166 valid, return TABLE itself, but if not valid, signal an error of
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
167 wrong-type-argument. */
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
168
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
169 Lisp_Object
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
170 check_category_table (table)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
171 Lisp_Object table;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
172 {
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
173 if (NILP (table))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
174 return current_buffer->category_table;
71829
8adcaaf366b4 (check_category_table): Use CHECK_TYPE.
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
175 CHECK_TYPE (!NILP (Fcategory_table_p (table)), Qcategory_table_p, table);
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
176 return table;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 46370
diff changeset
177 }
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
178
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
179 DEFUN ("category-table", Fcategory_table, Scategory_table, 0, 0, 0,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
180 doc: /* Return the current category table.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
181 This is the one specified by the current buffer. */)
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
182 ()
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
183 {
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
184 return current_buffer->category_table;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
185 }
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
186
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
187 DEFUN ("standard-category-table", Fstandard_category_table,
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
188 Sstandard_category_table, 0, 0, 0,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
189 doc: /* Return the standard category table.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
190 This is the one used for new buffers. */)
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
191 ()
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
192 {
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
193 return Vstandard_category_table;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
194 }
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
195
88359
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
196
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
197 static void
89483
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89380
diff changeset
198 copy_category_entry (table, c, val)
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89380
diff changeset
199 Lisp_Object table, c, val;
88359
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
200 {
89380
9320c2f4f351 (copy_category_entry): Fix for the case that RANGE is an integer.
Kenichi Handa <handa@m17n.org>
parents: 88850
diff changeset
201 val = Fcopy_sequence (val);
89483
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89380
diff changeset
202 if (CONSP (c))
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89380
diff changeset
203 char_table_set_range (table, XINT (XCAR (c)), XINT (XCDR (c)), val);
89380
9320c2f4f351 (copy_category_entry): Fix for the case that RANGE is an integer.
Kenichi Handa <handa@m17n.org>
parents: 88850
diff changeset
204 else
89483
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89380
diff changeset
205 char_table_set (table, XINT (c), val);
88359
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
206 }
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
207
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
208 /* Return a copy of category table TABLE. We can't simply use the
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
209 function copy-sequence because no contents should be shared between
17324
ed53084a1655 (category-table-p): Check only type and purpose.
Kenichi Handa <handa@m17n.org>
parents: 17187
diff changeset
210 the original and the copy. This function is called recursively by
20189
16f5b56c2f68 (copy_category_table): Copy also the first extra slot
Kenichi Handa <handa@m17n.org>
parents: 19659
diff changeset
211 binding TABLE to a sub char table. */
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
212
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
213 Lisp_Object
17324
ed53084a1655 (category-table-p): Check only type and purpose.
Kenichi Handa <handa@m17n.org>
parents: 17187
diff changeset
214 copy_category_table (table)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
215 Lisp_Object table;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
216 {
88359
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
217 table = copy_char_table (table);
20189
16f5b56c2f68 (copy_category_table): Copy also the first extra slot
Kenichi Handa <handa@m17n.org>
parents: 19659
diff changeset
218
88359
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
219 if (! NILP (XCHAR_TABLE (table)->defalt))
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
220 XCHAR_TABLE (table)->defalt
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
221 = Fcopy_sequence (XCHAR_TABLE (table)->defalt);
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
222 XCHAR_TABLE (table)->extras[0]
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
223 = Fcopy_sequence (XCHAR_TABLE (table)->extras[0]);
89483
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89380
diff changeset
224 map_char_table (copy_category_entry, Qnil, table, table);
17324
ed53084a1655 (category-table-p): Check only type and purpose.
Kenichi Handa <handa@m17n.org>
parents: 17187
diff changeset
225
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
226 return table;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
227 }
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
228
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
229 DEFUN ("copy-category-table", Fcopy_category_table, Scopy_category_table,
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
230 0, 1, 0,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
231 doc: /* Construct a new category table and return it.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
232 It is a copy of the TABLE, which defaults to the standard category table. */)
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
233 (table)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
234 Lisp_Object table;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
235 {
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
236 if (!NILP (table))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
237 check_category_table (table);
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
238 else
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
239 table = Vstandard_category_table;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
240
20189
16f5b56c2f68 (copy_category_table): Copy also the first extra slot
Kenichi Handa <handa@m17n.org>
parents: 19659
diff changeset
241 return copy_category_table (table);
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
242 }
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
243
26841
dfead1ef574c (word_boundary_p): Delete codes for a composite
Kenichi Handa <handa@m17n.org>
parents: 25835
diff changeset
244 DEFUN ("make-category-table", Fmake_category_table, Smake_category_table,
dfead1ef574c (word_boundary_p): Delete codes for a composite
Kenichi Handa <handa@m17n.org>
parents: 25835
diff changeset
245 0, 0, 0,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
246 doc: /* Construct a new and empty category table and return it. */)
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
247 ()
26841
dfead1ef574c (word_boundary_p): Delete codes for a composite
Kenichi Handa <handa@m17n.org>
parents: 25835
diff changeset
248 {
dfead1ef574c (word_boundary_p): Delete codes for a composite
Kenichi Handa <handa@m17n.org>
parents: 25835
diff changeset
249 Lisp_Object val;
88359
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
250 int i;
26841
dfead1ef574c (word_boundary_p): Delete codes for a composite
Kenichi Handa <handa@m17n.org>
parents: 25835
diff changeset
251
dfead1ef574c (word_boundary_p): Delete codes for a composite
Kenichi Handa <handa@m17n.org>
parents: 25835
diff changeset
252 val = Fmake_char_table (Qcategory_table, Qnil);
dfead1ef574c (word_boundary_p): Delete codes for a composite
Kenichi Handa <handa@m17n.org>
parents: 25835
diff changeset
253 XCHAR_TABLE (val)->defalt = MAKE_CATEGORY_SET;
89483
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89380
diff changeset
254 for (i = 0; i < (1 << CHARTAB_SIZE_BITS_0); i++)
88359
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
255 XCHAR_TABLE (val)->contents[i] = MAKE_CATEGORY_SET;
26841
dfead1ef574c (word_boundary_p): Delete codes for a composite
Kenichi Handa <handa@m17n.org>
parents: 25835
diff changeset
256 Fset_char_table_extra_slot (val, make_number (0),
dfead1ef574c (word_boundary_p): Delete codes for a composite
Kenichi Handa <handa@m17n.org>
parents: 25835
diff changeset
257 Fmake_vector (make_number (95), Qnil));
dfead1ef574c (word_boundary_p): Delete codes for a composite
Kenichi Handa <handa@m17n.org>
parents: 25835
diff changeset
258 return val;
dfead1ef574c (word_boundary_p): Delete codes for a composite
Kenichi Handa <handa@m17n.org>
parents: 25835
diff changeset
259 }
dfead1ef574c (word_boundary_p): Delete codes for a composite
Kenichi Handa <handa@m17n.org>
parents: 25835
diff changeset
260
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
261 DEFUN ("set-category-table", Fset_category_table, Sset_category_table, 1, 1, 0,
54091
15dabc5988ff (Fdefine_category, Fcategory_docstring)
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
262 doc: /* Specify TABLE as the category table for the current buffer.
15dabc5988ff (Fdefine_category, Fcategory_docstring)
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
263 Return TABLE. */)
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
264 (table)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
265 Lisp_Object table;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
266 {
28315
16ed41346de7 (Fset_category_table): Use new macros for per-buffer
Gerd Moellmann <gerd@gnu.org>
parents: 26841
diff changeset
267 int idx;
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
268 table = check_category_table (table);
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
269 current_buffer->category_table = table;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
270 /* Indicate that this buffer now has a specified category table. */
28351
e3d57f7fba49 Use new macro names
Gerd Moellmann <gerd@gnu.org>
parents: 28315
diff changeset
271 idx = PER_BUFFER_VAR_IDX (category_table);
e3d57f7fba49 Use new macro names
Gerd Moellmann <gerd@gnu.org>
parents: 28315
diff changeset
272 SET_PER_BUFFER_VALUE_P (current_buffer, idx, 1);
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
273 return table;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
274 }
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
275
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
276
88359
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
277 Lisp_Object
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
278 char_category_set (c)
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
279 int c;
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
280 {
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
281 return CHAR_TABLE_REF (current_buffer->category_table, c);
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
282 }
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
283
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
284 DEFUN ("char-category-set", Fchar_category_set, Schar_category_set, 1, 1, 0,
73927
e74524ea3f55 (Fchar_category_set): Improve arg/docstring consistency.
Juanma Barranquero <lekktu@gmail.com>
parents: 71829
diff changeset
285 doc: /* Return the category set of CHAR.
e74524ea3f55 (Fchar_category_set): Improve arg/docstring consistency.
Juanma Barranquero <lekktu@gmail.com>
parents: 71829
diff changeset
286 usage: (char-category-set CHAR) */)
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
287 (ch)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
288 Lisp_Object ch;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
289 {
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40103
diff changeset
290 CHECK_NUMBER (ch);
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
291 return CATEGORY_SET (XFASTINT (ch));
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
292 }
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
293
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
294 DEFUN ("category-set-mnemonics", Fcategory_set_mnemonics,
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
295 Scategory_set_mnemonics, 1, 1, 0,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
296 doc: /* Return a string containing mnemonics of the categories in CATEGORY-SET.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
297 CATEGORY-SET is a bool-vector, and the categories \"in\" it are those
54091
15dabc5988ff (Fdefine_category, Fcategory_docstring)
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
298 that are indexes where t occurs in the bool-vector.
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
299 The return value is a string containing those same categories. */)
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
300 (category_set)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
301 Lisp_Object category_set;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
302 {
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
303 int i, j;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
304 char str[96];
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
305
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40103
diff changeset
306 CHECK_CATEGORY_SET (category_set);
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
307
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
308 j = 0;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
309 for (i = 32; i < 127; i++)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
310 if (CATEGORY_MEMBER (i, category_set))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
311 str[j++] = i;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
312 str[j] = '\0';
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
313
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
314 return build_string (str);
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
315 }
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
316
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
317 void
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
318 set_category_set (category_set, category, val)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
319 Lisp_Object category_set, category, val;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
320 {
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
321 do {
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
322 int idx = XINT (category) / 8;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
323 unsigned char bits = 1 << (XINT (category) % 8);
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
324
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
325 if (NILP (val))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
326 XCATEGORY_SET (category_set)->data[idx] &= ~bits;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
327 else
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
328 XCATEGORY_SET (category_set)->data[idx] |= bits;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
329 } while (0);
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
330 }
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
331
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
332 DEFUN ("modify-category-entry", Fmodify_category_entry,
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
333 Smodify_category_entry, 2, 4, 0,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
334 doc: /* Modify the category set of CHARACTER by adding CATEGORY to it.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
335 The category is changed only for table TABLE, which defaults to
88622
6bd578d2b8af (Fmodify_category_entry): Doc fix. Remove unused
Dave Love <fx@gnu.org>
parents: 88359
diff changeset
336 the current buffer's category table.
6bd578d2b8af (Fmodify_category_entry): Doc fix. Remove unused
Dave Love <fx@gnu.org>
parents: 88359
diff changeset
337 CHARACTER can be either a single character or a cons representing the
6bd578d2b8af (Fmodify_category_entry): Doc fix. Remove unused
Dave Love <fx@gnu.org>
parents: 88359
diff changeset
338 lower and upper ends of an inclusive character range to modify.
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
339 If optional fourth argument RESET is non-nil,
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
340 then delete CATEGORY from the category set instead of adding it. */)
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
341 (character, category, table, reset)
20825
1b98a0ab1bee (Fmodify_category_entry): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 20612
diff changeset
342 Lisp_Object character, category, table, reset;
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
343 {
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
344 Lisp_Object set_value; /* Actual value to be set in category sets. */
88622
6bd578d2b8af (Fmodify_category_entry): Doc fix. Remove unused
Dave Love <fx@gnu.org>
parents: 88359
diff changeset
345 Lisp_Object category_set;
88359
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
346 int start, end;
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
347 int from, to;
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
348
88359
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
349 if (INTEGERP (character))
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
350 {
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
351 CHECK_CHARACTER (character);
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
352 start = end = XFASTINT (character);
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
353 }
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
354 else
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
355 {
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
356 CHECK_CONS (character);
89483
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89380
diff changeset
357 CHECK_CHARACTER_CAR (character);
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89380
diff changeset
358 CHECK_CHARACTER_CDR (character);
88359
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
359 start = XFASTINT (XCAR (character));
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
360 end = XFASTINT (XCDR (character));
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
361 }
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
362
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40103
diff changeset
363 CHECK_CATEGORY (category);
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
364 table = check_category_table (table);
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
365
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
366 if (NILP (CATEGORY_DOCSTRING (table, XFASTINT (category))))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
367 error ("Undefined category: %c", XFASTINT (category));
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 46370
diff changeset
368
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
369 set_value = NILP (reset) ? Qt : Qnil;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
370
88359
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
371 while (start <= end)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
372 {
88359
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
373 category_set = char_table_ref_and_range (table, start, &from, &to);
88850
6f9164905a7c (Fmodify_category_entry): Fix CATEGORY_MEMBER call.
Dave Love <fx@gnu.org>
parents: 88741
diff changeset
374 if (CATEGORY_MEMBER (XFASTINT (category), category_set) != NILP (reset))
88359
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
375 {
88741
a93a8b796b91 (Fmodify_category_entry): Don't modify the contents
Kenichi Handa <handa@m17n.org>
parents: 88622
diff changeset
376 category_set = Fcopy_sequence (category_set);
a93a8b796b91 (Fmodify_category_entry): Don't modify the contents
Kenichi Handa <handa@m17n.org>
parents: 88622
diff changeset
377 SET_CATEGORY_SET (category_set, category, set_value);
88359
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
378 if (to > end)
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
379 char_table_set_range (table, start, end, category_set);
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
380 else
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
381 char_table_set_range (table, start, to, category_set);
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
382 }
e7224dffd53f Include "character.h".
Kenichi Handa <handa@m17n.org>
parents: 41643
diff changeset
383 start = to + 1;
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
384 }
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
385
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
386 return Qnil;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
387 }
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
388
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
389 /* Return 1 if there is a word boundary between two word-constituent
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
390 characters C1 and C2 if they appear in this order, else return 0.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
391 Use the macro WORD_BOUNDARY_P instead of calling this function
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
392 directly. */
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
393
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
394 int
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
395 word_boundary_p (c1, c2)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
396 int c1, c2;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
397 {
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
398 Lisp_Object category_set1, category_set2;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
399 Lisp_Object tail;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
400 int default_result;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
401
99016
3092df1e1b8a (word_boundary_p): Check scripts instead of charset.
Kenichi Handa <handa@m17n.org>
parents: 94963
diff changeset
402 if (EQ (CHAR_TABLE_REF (Vchar_script_table, c1),
3092df1e1b8a (word_boundary_p): Check scripts instead of charset.
Kenichi Handa <handa@m17n.org>
parents: 94963
diff changeset
403 CHAR_TABLE_REF (Vchar_script_table, c2)))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
404 {
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
405 tail = Vword_separating_categories;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
406 default_result = 0;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
407 }
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
408 else
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
409 {
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
410 tail = Vword_combining_categories;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
411 default_result = 1;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
412 }
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
413
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
414 category_set1 = CATEGORY_SET (c1);
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
415 if (NILP (category_set1))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
416 return default_result;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
417 category_set2 = CATEGORY_SET (c2);
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
418 if (NILP (category_set2))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
419 return default_result;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
420
25662
0a7261c1d487 Use XCAR, XCDR, and XFLOAT_DATA instead of explicit member access.
Ken Raeburn <raeburn@raeburn.org>
parents: 23755
diff changeset
421 for (; CONSP (tail); tail = XCDR (tail))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
422 {
25662
0a7261c1d487 Use XCAR, XCDR, and XFLOAT_DATA instead of explicit member access.
Ken Raeburn <raeburn@raeburn.org>
parents: 23755
diff changeset
423 Lisp_Object elt = XCAR (tail);
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
424
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
425 if (CONSP (elt)
99016
3092df1e1b8a (word_boundary_p): Check scripts instead of charset.
Kenichi Handa <handa@m17n.org>
parents: 94963
diff changeset
426 && (NILP (XCAR (elt))
3092df1e1b8a (word_boundary_p): Check scripts instead of charset.
Kenichi Handa <handa@m17n.org>
parents: 94963
diff changeset
427 || (CATEGORYP (XCAR (elt))
3092df1e1b8a (word_boundary_p): Check scripts instead of charset.
Kenichi Handa <handa@m17n.org>
parents: 94963
diff changeset
428 && CATEGORY_MEMBER (XFASTINT (XCAR (elt)), category_set1)))
3092df1e1b8a (word_boundary_p): Check scripts instead of charset.
Kenichi Handa <handa@m17n.org>
parents: 94963
diff changeset
429 && (NILP (XCDR (elt))
3092df1e1b8a (word_boundary_p): Check scripts instead of charset.
Kenichi Handa <handa@m17n.org>
parents: 94963
diff changeset
430 || (CATEGORYP (XCDR (elt))
3092df1e1b8a (word_boundary_p): Check scripts instead of charset.
Kenichi Handa <handa@m17n.org>
parents: 94963
diff changeset
431 && CATEGORY_MEMBER (XFASTINT (XCDR (elt)), category_set2))))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
432 return !default_result;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
433 }
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
434 return default_result;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
435 }
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
436
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
437
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 21244
diff changeset
438 void
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
439 init_category_once ()
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
440 {
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
441 /* This has to be done here, before we call Fmake_char_table. */
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
442 Qcategory_table = intern ("category-table");
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
443 staticpro (&Qcategory_table);
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
444
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
445 /* Intern this now in case it isn't already done.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
446 Setting this variable twice is harmless.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
447 But don't staticpro it here--that is done in alloc.c. */
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
448 Qchar_table_extra_slots = intern ("char-table-extra-slots");
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
449
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
450 /* Now we are ready to set up this property, so we can
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
451 create category tables. */
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
452 Fput (Qcategory_table, Qchar_table_extra_slots, make_number (2));
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
453
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
454 Vstandard_category_table = Fmake_char_table (Qcategory_table, Qnil);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 46370
diff changeset
455 /* Set a category set which contains nothing to the default. */
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
456 XCHAR_TABLE (Vstandard_category_table)->defalt = MAKE_CATEGORY_SET;
20189
16f5b56c2f68 (copy_category_table): Copy also the first extra slot
Kenichi Handa <handa@m17n.org>
parents: 19659
diff changeset
457 Fset_char_table_extra_slot (Vstandard_category_table, make_number (0),
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
458 Fmake_vector (make_number (95), Qnil));
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
459 }
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
460
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 21244
diff changeset
461 void
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
462 syms_of_category ()
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
463 {
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
464 Qcategoryp = intern ("categoryp");
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
465 staticpro (&Qcategoryp);
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
466 Qcategorysetp = intern ("categorysetp");
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
467 staticpro (&Qcategorysetp);
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
468 Qcategory_table_p = intern ("category-table-p");
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
469 staticpro (&Qcategory_table_p);
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
470
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
471 DEFVAR_LISP ("word-combining-categories", &Vword_combining_categories,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
472 doc: /* List of pair (cons) of categories to determine word boundary.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
473
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
474 Emacs treats a sequence of word constituent characters as a single
78501
1677cf1c2509 Replace `iff' in comments.
Glenn Morris <rgm@gnu.org>
parents: 78313
diff changeset
475 word (i.e. finds no word boundary between them) only if they belong to
99016
3092df1e1b8a (word_boundary_p): Check scripts instead of charset.
Kenichi Handa <handa@m17n.org>
parents: 94963
diff changeset
476 the same script. But, exceptions are allowed in the following cases.
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
477
99016
3092df1e1b8a (word_boundary_p): Check scripts instead of charset.
Kenichi Handa <handa@m17n.org>
parents: 94963
diff changeset
478 \(1) The case that characters are in different scripts is controlled
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
479 by the variable `word-combining-categories'.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
480
99016
3092df1e1b8a (word_boundary_p): Check scripts instead of charset.
Kenichi Handa <handa@m17n.org>
parents: 94963
diff changeset
481 Emacs finds no word boundary between characters of different scripts
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
482 if they have categories matching some element of this list.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
483
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
484 More precisely, if an element of this list is a cons of category CAT1
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
485 and CAT2, and a multibyte character C1 which has CAT1 is followed by
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
486 C2 which has CAT2, there's no word boundary between C1 and C2.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
487
99016
3092df1e1b8a (word_boundary_p): Check scripts instead of charset.
Kenichi Handa <handa@m17n.org>
parents: 94963
diff changeset
488 For instance, to tell that Han characters followed by Hiragana
3092df1e1b8a (word_boundary_p): Check scripts instead of charset.
Kenichi Handa <handa@m17n.org>
parents: 94963
diff changeset
489 characters can form a single word, the element `(?C . ?H)' should be
3092df1e1b8a (word_boundary_p): Check scripts instead of charset.
Kenichi Handa <handa@m17n.org>
parents: 94963
diff changeset
490 in this list.
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
491
99016
3092df1e1b8a (word_boundary_p): Check scripts instead of charset.
Kenichi Handa <handa@m17n.org>
parents: 94963
diff changeset
492 \(2) The case that character are in the same script is controlled by
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
493 the variable `word-separating-categories'.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
494
99197
7548cef42245 (syms_of_category): Fix typo in docstring.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 99117
diff changeset
495 Emacs finds a word boundary between characters of the same script
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
496 if they have categories matching some element of this list.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
497
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
498 More precisely, if an element of this list is a cons of category CAT1
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
499 and CAT2, and a multibyte character C1 which has CAT1 is followed by
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
500 C2 which has CAT2, there's a word boundary between C1 and C2.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
501
99016
3092df1e1b8a (word_boundary_p): Check scripts instead of charset.
Kenichi Handa <handa@m17n.org>
parents: 94963
diff changeset
502 For instance, to tell that there's a word boundary between Hiragana
3092df1e1b8a (word_boundary_p): Check scripts instead of charset.
Kenichi Handa <handa@m17n.org>
parents: 94963
diff changeset
503 and Katakana (both are in the same script `kana'),
3092df1e1b8a (word_boundary_p): Check scripts instead of charset.
Kenichi Handa <handa@m17n.org>
parents: 94963
diff changeset
504 the element `(?H . ?K) should be in this list. */);
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
505
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
506 Vword_combining_categories = Qnil;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
507
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
508 DEFVAR_LISP ("word-separating-categories", &Vword_separating_categories,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
509 doc: /* List of pair (cons) of categories to determine word boundary.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
510 See the documentation of the variable `word-combining-categories'. */);
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
511
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
512 Vword_separating_categories = Qnil;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
513
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
514 defsubr (&Smake_category_set);
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
515 defsubr (&Sdefine_category);
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
516 defsubr (&Scategory_docstring);
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
517 defsubr (&Sget_unused_category);
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
518 defsubr (&Scategory_table_p);
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
519 defsubr (&Scategory_table);
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
520 defsubr (&Sstandard_category_table);
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
521 defsubr (&Scopy_category_table);
26841
dfead1ef574c (word_boundary_p): Delete codes for a composite
Kenichi Handa <handa@m17n.org>
parents: 25835
diff changeset
522 defsubr (&Smake_category_table);
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
523 defsubr (&Sset_category_table);
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
524 defsubr (&Schar_category_set);
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
525 defsubr (&Scategory_set_mnemonics);
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
526 defsubr (&Smodify_category_entry);
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
527
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
528 category_table_version = 0;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
529 }
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
530
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
531 /* arch-tag: 74ebf524-121b-4d9c-bd68-07f8d708b211
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
532 (do not change this comment) */