annotate src/disptab.h @ 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 29adfc9354e7
children e038c1a8307c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
484
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1 /* Things for GLYPHS and glyph tables.
75227
e90d04cd455a Update copyright for years from Emacs 21 to present (mainly adding
Glenn Morris <rgm@gnu.org>
parents: 68651
diff changeset
2 Copyright (C) 1993, 2001, 2002, 2003, 2004, 2005,
79759
fc2bcd2a8aad Add 2008 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 78260
diff changeset
3 2006, 2007, 2008 Free Software Foundation, Inc.
484
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5 This file is part of GNU Emacs.
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6
94994
29adfc9354e7 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 92277
diff changeset
7 GNU Emacs is free software: you can redistribute it and/or modify
484
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
8 it under the terms of the GNU General Public License as published by
94994
29adfc9354e7 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 92277
diff changeset
9 the Free Software Foundation, either version 3 of the License, or
29adfc9354e7 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 92277
diff changeset
10 (at your option) any later version.
484
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
11
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
12 GNU Emacs is distributed in the hope that it will be useful,
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
15 GNU General Public License for more details.
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
16
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
94994
29adfc9354e7 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 92277
diff changeset
18 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
484
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
19
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
20 /* Access the slots of a display-table, according to their purpose. */
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
21
13183
6b79b1d9cddd (DISP_TABLE_P): Check the `purpose' slot.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
22 #define DISP_TABLE_P(obj) \
6b79b1d9cddd (DISP_TABLE_P): Check the `purpose' slot.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
23 (CHAR_TABLE_P (obj) \
17363
0fe9203c7a06 (DISP_TABLE_P): Don't use Lisp_Object as integer.
Karl Heuer <kwzh@gnu.org>
parents: 17332
diff changeset
24 && EQ (XCHAR_TABLE (obj)->purpose, Qdisplay_table) \
13183
6b79b1d9cddd (DISP_TABLE_P): Check the `purpose' slot.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
25 && CHAR_TABLE_EXTRA_SLOTS (XCHAR_TABLE (obj)) == DISP_TABLE_EXTRA_SLOTS)
6b79b1d9cddd (DISP_TABLE_P): Check the `purpose' slot.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
26
6b79b1d9cddd (DISP_TABLE_P): Check the `purpose' slot.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
27 #define DISP_TABLE_EXTRA_SLOTS 6
6b79b1d9cddd (DISP_TABLE_P): Check the `purpose' slot.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
28 #define DISP_TRUNC_GLYPH(dp) ((dp)->extras[0])
6b79b1d9cddd (DISP_TABLE_P): Check the `purpose' slot.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
29 #define DISP_CONTINUE_GLYPH(dp) ((dp)->extras[1])
6b79b1d9cddd (DISP_TABLE_P): Check the `purpose' slot.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
30 #define DISP_ESCAPE_GLYPH(dp) ((dp)->extras[2])
6b79b1d9cddd (DISP_TABLE_P): Check the `purpose' slot.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
31 #define DISP_CTRL_GLYPH(dp) ((dp)->extras[3])
6b79b1d9cddd (DISP_TABLE_P): Check the `purpose' slot.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
32 #define DISP_INVIS_VECTOR(dp) ((dp)->extras[4])
6b79b1d9cddd (DISP_TABLE_P): Check the `purpose' slot.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
33 #define DISP_BORDER_GLYPH(dp) ((dp)->extras[5])
6b79b1d9cddd (DISP_TABLE_P): Check the `purpose' slot.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
34
20309
51fb1f36e614 Add prototypes. Remove declaration of obsolete
Andreas Schwab <schwab@suse.de>
parents: 17363
diff changeset
35 extern Lisp_Object disp_char_vector P_ ((struct Lisp_Char_Table *, int));
17332
35269345d9ef (disp_char_vector): Extern it.
Kenichi Handa <handa@m17n.org>
parents: 17183
diff changeset
36
88370
533b26683ad8 (DISP_CHAR_VECTOR): Adjusted for the change of char
Kenichi Handa <handa@m17n.org>
parents: 20309
diff changeset
37 #define DISP_CHAR_VECTOR(dp, c) \
533b26683ad8 (DISP_CHAR_VECTOR): Adjusted for the change of char
Kenichi Handa <handa@m17n.org>
parents: 20309
diff changeset
38 (ASCII_CHAR_P(c) \
533b26683ad8 (DISP_CHAR_VECTOR): Adjusted for the change of char
Kenichi Handa <handa@m17n.org>
parents: 20309
diff changeset
39 ? (NILP ((dp)->ascii) \
533b26683ad8 (DISP_CHAR_VECTOR): Adjusted for the change of char
Kenichi Handa <handa@m17n.org>
parents: 20309
diff changeset
40 ? (dp)->defalt \
533b26683ad8 (DISP_CHAR_VECTOR): Adjusted for the change of char
Kenichi Handa <handa@m17n.org>
parents: 20309
diff changeset
41 : (SUB_CHAR_TABLE_P ((dp)->ascii) \
533b26683ad8 (DISP_CHAR_VECTOR): Adjusted for the change of char
Kenichi Handa <handa@m17n.org>
parents: 20309
diff changeset
42 ? XSUB_CHAR_TABLE ((dp)->ascii)->contents[c] \
533b26683ad8 (DISP_CHAR_VECTOR): Adjusted for the change of char
Kenichi Handa <handa@m17n.org>
parents: 20309
diff changeset
43 : (dp)->ascii)) \
533b26683ad8 (DISP_CHAR_VECTOR): Adjusted for the change of char
Kenichi Handa <handa@m17n.org>
parents: 20309
diff changeset
44 : disp_char_vector ((dp), (c)))
484
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
45
9406
a549857b7a13 * disptab.h (window_display_table): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 9143
diff changeset
46 /* Defined in window.c. */
20309
51fb1f36e614 Add prototypes. Remove declaration of obsolete
Andreas Schwab <schwab@suse.de>
parents: 17363
diff changeset
47 extern struct Lisp_Char_Table *window_display_table P_ ((struct window *));
484
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
48
9406
a549857b7a13 * disptab.h (window_display_table): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 9143
diff changeset
49 /* Defined in indent.c. */
20309
51fb1f36e614 Add prototypes. Remove declaration of obsolete
Andreas Schwab <schwab@suse.de>
parents: 17363
diff changeset
50 extern struct Lisp_Char_Table *buffer_display_table P_ ((void));
9406
a549857b7a13 * disptab.h (window_display_table): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 9143
diff changeset
51
484
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
52 /* Display table to use for vectors that don't specify their own. */
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
53 extern Lisp_Object Vstandard_display_table;
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
54
13183
6b79b1d9cddd (DISP_TABLE_P): Check the `purpose' slot.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
55 /* This is the `purpose' slot of a display table. */
6b79b1d9cddd (DISP_TABLE_P): Check the `purpose' slot.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
56 extern Lisp_Object Qdisplay_table;
6b79b1d9cddd (DISP_TABLE_P): Check the `purpose' slot.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
57
484
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
58 /* Vector of GLYPH definitions. Indexed by GLYPH number,
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
59 the contents are a string which is how to output the GLYPH. */
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
60 extern Lisp_Object Vglyph_table;
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
61
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
62 /* Return the current length of the GLYPH table,
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
63 or 0 if the table isn't currently valid. */
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
64 #define GLYPH_TABLE_LENGTH \
9143
069f8b6cdfe6 (GLYPH_TABLE_LENGTH, GLYPH_TABLE_BASE, GLYPH_SIMPLE_P, GLYPH_ALIAS_P): Use
Karl Heuer <kwzh@gnu.org>
parents: 8919
diff changeset
65 ((VECTORP (Vglyph_table)) ? XVECTOR (Vglyph_table)->size : 0)
484
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
66
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
67 /* Return the current base (for indexing) of the GLYPH table,
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
68 or 0 if the table isn't currently valid. */
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
69 #define GLYPH_TABLE_BASE \
9143
069f8b6cdfe6 (GLYPH_TABLE_LENGTH, GLYPH_TABLE_BASE, GLYPH_SIMPLE_P, GLYPH_ALIAS_P): Use
Karl Heuer <kwzh@gnu.org>
parents: 8919
diff changeset
70 ((VECTORP (Vglyph_table)) ? XVECTOR (Vglyph_table)->contents : 0)
484
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
71
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
72 /* Given BASE and LEN returned by the two previous macros,
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
73 return nonzero if the GLYPH code G should be output as a single
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
74 character with code G. Return zero if G has a string in the table. */
92277
d86b04f18152 (GLYPH_SIMPLE_P): Rewrite.
Kim F. Storm <storm@cua.dk>
parents: 91327
diff changeset
75 #define GLYPH_SIMPLE_P(base,len,g) \
d86b04f18152 (GLYPH_SIMPLE_P): Rewrite.
Kim F. Storm <storm@cua.dk>
parents: 91327
diff changeset
76 (GLYPH_FACE (g) != DEFAULT_FACE_ID || GLYPH_CHAR (g) >= (len) || !STRINGP (base[GLYPH_CHAR (g)]))
484
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
77
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
78 /* Given BASE and LEN returned by the two previous macros,
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
79 return nonzero if GLYPH code G is aliased to a different code. */
92277
d86b04f18152 (GLYPH_SIMPLE_P): Rewrite.
Kim F. Storm <storm@cua.dk>
parents: 91327
diff changeset
80 #define GLYPH_ALIAS_P(base,len,g) \
d86b04f18152 (GLYPH_SIMPLE_P): Rewrite.
Kim F. Storm <storm@cua.dk>
parents: 91327
diff changeset
81 (GLYPH_FACE (g) == DEFAULT_FACE_ID && GLYPH_CHAR (g) < (len) && INTEGERP (base[GLYPH_CHAR (g)]))
484
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
82
2725
507115aff66d * xdisp.c (display_text_line): Apply faces to characters according
Jim Blandy <jimb@redhat.com>
parents: 2012
diff changeset
83 /* Follow all aliases for G in the glyph table given by (BASE,
507115aff66d * xdisp.c (display_text_line): Apply faces to characters according
Jim Blandy <jimb@redhat.com>
parents: 2012
diff changeset
84 LENGTH), and set G to the final glyph. */
92277
d86b04f18152 (GLYPH_SIMPLE_P): Rewrite.
Kim F. Storm <storm@cua.dk>
parents: 91327
diff changeset
85 #define GLYPH_FOLLOW_ALIASES(base, length, g) \
d86b04f18152 (GLYPH_SIMPLE_P): Rewrite.
Kim F. Storm <storm@cua.dk>
parents: 91327
diff changeset
86 do { \
d86b04f18152 (GLYPH_SIMPLE_P): Rewrite.
Kim F. Storm <storm@cua.dk>
parents: 91327
diff changeset
87 while (GLYPH_ALIAS_P ((base), (length), (g))) \
d86b04f18152 (GLYPH_SIMPLE_P): Rewrite.
Kim F. Storm <storm@cua.dk>
parents: 91327
diff changeset
88 SET_GLYPH_CHAR ((g), XINT ((base)[GLYPH_CHAR (g)])); \
d86b04f18152 (GLYPH_SIMPLE_P): Rewrite.
Kim F. Storm <storm@cua.dk>
parents: 91327
diff changeset
89 if (!GLYPH_CHAR_VALID_P (g)) \
d86b04f18152 (GLYPH_SIMPLE_P): Rewrite.
Kim F. Storm <storm@cua.dk>
parents: 91327
diff changeset
90 SET_GLYPH_CHAR (g, ' '); \
17183
00252a78ce4f (GLYPH_FOLLOW_ALIASES): Assure that the resulting G
Kenichi Handa <handa@m17n.org>
parents: 17116
diff changeset
91 } while (0)
00252a78ce4f (GLYPH_FOLLOW_ALIASES): Assure that the resulting G
Kenichi Handa <handa@m17n.org>
parents: 17116
diff changeset
92
484
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
93 /* Assuming that GLYPH_SIMPLE_P (BASE, LEN, G) is 0,
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
94 return the length and the address of the character-sequence
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
95 used for outputting GLYPH G. */
92277
d86b04f18152 (GLYPH_SIMPLE_P): Rewrite.
Kim F. Storm <storm@cua.dk>
parents: 91327
diff changeset
96 #define GLYPH_LENGTH(base,g) SCHARS (base[GLYPH_CHAR (g)])
d86b04f18152 (GLYPH_SIMPLE_P): Rewrite.
Kim F. Storm <storm@cua.dk>
parents: 91327
diff changeset
97 #define GLYPH_STRING(base,g) SDATA (base[GLYPH_CHAR (g)])
484
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
98
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
99 /* GLYPH for a space character. */
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
100
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
101 #define SPACEGLYPH 040
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
102 #define NULL_GLYPH 00
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
103
92277
d86b04f18152 (GLYPH_SIMPLE_P): Rewrite.
Kim F. Storm <storm@cua.dk>
parents: 91327
diff changeset
104 #define SET_GLYPH_FROM_CHAR(glyph, c) \
d86b04f18152 (GLYPH_SIMPLE_P): Rewrite.
Kim F. Storm <storm@cua.dk>
parents: 91327
diff changeset
105 SET_GLYPH (glyph, c, DEFAULT_FACE_ID)
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 46370
diff changeset
106
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 46370
diff changeset
107 /* arch-tag: d7f792d2-f59c-4904-a91e-91522e3ab349
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 46370
diff changeset
108 (do not change this comment) */