Mercurial > emacs
annotate src/indent.h @ 98182:19ec1646fe6c
The Rmail/mbox merge has been abandoned in favor of a restart using
the current rmail.el file. A comprehensive list of changes will be
supplied when pmail.el is morphed back into rmail.el
The current status is that pmail.el supports basic Rmail navigation
(no summary support) and shows the current message in a special
buffer using buffer-swap-text. No decoding is done yet. That is the
next step.
author | Paul Reilly <pmr@pajato.com> |
---|---|
date | Mon, 15 Sep 2008 20:56:53 +0000 |
parents | 29adfc9354e7 |
children | e038c1a8307c |
rev | line source |
---|---|
484 | 1 /* Definitions for interface to indent.c |
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) 1985, 1986, 2001, 2002, 2003, 2004, |
79759 | 3 2005, 2006, 2007, 2008 Free Software Foundation, Inc. |
484 | 4 |
5 This file is part of GNU Emacs. | |
6 | |
94994
29adfc9354e7
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
87649
diff
changeset
|
7 GNU Emacs is free software: you can redistribute it and/or modify |
484 | 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:
87649
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:
87649
diff
changeset
|
10 (at your option) any later version. |
484 | 11 |
12 GNU Emacs is distributed in the hope that it will be useful, | |
13 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 GNU General Public License for more details. | |
16 | |
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:
87649
diff
changeset
|
18 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ |
484 | 19 |
17018
f13a67b3ec8d
(struct position): New member tab_offset to accumulate tab offset.
Karl Heuer <kwzh@gnu.org>
parents:
16403
diff
changeset
|
20 /* We introduce new member `tab_offset'. We need it because of the |
f13a67b3ec8d
(struct position): New member tab_offset to accumulate tab offset.
Karl Heuer <kwzh@gnu.org>
parents:
16403
diff
changeset
|
21 existence of wide-column characters. There is a case that the |
f13a67b3ec8d
(struct position): New member tab_offset to accumulate tab offset.
Karl Heuer <kwzh@gnu.org>
parents:
16403
diff
changeset
|
22 line-break occurs at a wide-column character and the number of |
f13a67b3ec8d
(struct position): New member tab_offset to accumulate tab offset.
Karl Heuer <kwzh@gnu.org>
parents:
16403
diff
changeset
|
23 colums of the line gets less than width. |
f13a67b3ec8d
(struct position): New member tab_offset to accumulate tab offset.
Karl Heuer <kwzh@gnu.org>
parents:
16403
diff
changeset
|
24 |
f13a67b3ec8d
(struct position): New member tab_offset to accumulate tab offset.
Karl Heuer <kwzh@gnu.org>
parents:
16403
diff
changeset
|
25 Example (where W_ stands for a wide-column character): |
f13a67b3ec8d
(struct position): New member tab_offset to accumulate tab offset.
Karl Heuer <kwzh@gnu.org>
parents:
16403
diff
changeset
|
26 ---------- |
f13a67b3ec8d
(struct position): New member tab_offset to accumulate tab offset.
Karl Heuer <kwzh@gnu.org>
parents:
16403
diff
changeset
|
27 abcdefgh\\ |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
25026
diff
changeset
|
28 W_ |
17018
f13a67b3ec8d
(struct position): New member tab_offset to accumulate tab offset.
Karl Heuer <kwzh@gnu.org>
parents:
16403
diff
changeset
|
29 ---------- |
f13a67b3ec8d
(struct position): New member tab_offset to accumulate tab offset.
Karl Heuer <kwzh@gnu.org>
parents:
16403
diff
changeset
|
30 |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
25026
diff
changeset
|
31 To handle this case, we should not calculate the tab offset by |
17018
f13a67b3ec8d
(struct position): New member tab_offset to accumulate tab offset.
Karl Heuer <kwzh@gnu.org>
parents:
16403
diff
changeset
|
32 tab_offset += width; |
f13a67b3ec8d
(struct position): New member tab_offset to accumulate tab offset.
Karl Heuer <kwzh@gnu.org>
parents:
16403
diff
changeset
|
33 |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
25026
diff
changeset
|
34 Instead, we must remember tab_offset of the line. |
17018
f13a67b3ec8d
(struct position): New member tab_offset to accumulate tab offset.
Karl Heuer <kwzh@gnu.org>
parents:
16403
diff
changeset
|
35 |
f13a67b3ec8d
(struct position): New member tab_offset to accumulate tab offset.
Karl Heuer <kwzh@gnu.org>
parents:
16403
diff
changeset
|
36 */ |
484 | 37 |
38 struct position | |
39 { | |
84951 | 40 EMACS_INT bufpos; |
41 EMACS_INT bytepos; | |
42 EMACS_INT hpos; | |
43 EMACS_INT vpos; | |
44 EMACS_INT prevhpos; | |
45 EMACS_INT contin; | |
16403
a388d0109b9e
(struct position): New field ovstring_chars_done.
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
46 /* Number of characters we have already handled |
a388d0109b9e
(struct position): New field ovstring_chars_done.
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
47 from the before and after strings at this position. */ |
84951 | 48 EMACS_INT ovstring_chars_done; |
49 EMACS_INT tab_offset; | |
484 | 50 }; |
51 | |
84951 | 52 struct position *compute_motion P_ ((EMACS_INT from, EMACS_INT fromvpos, |
53 EMACS_INT fromhpos, int did_motion, | |
54 EMACS_INT to, EMACS_INT tovpos, | |
55 EMACS_INT tohpos, | |
56 EMACS_INT width, EMACS_INT hscroll, | |
57 EMACS_INT tab_offset, struct window *)); | |
58 struct position *vmotion P_ ((EMACS_INT from, EMACS_INT vtarget, | |
59 struct window *)); | |
60 EMACS_INT skip_invisible P_ ((EMACS_INT pos, EMACS_INT *next_boundary_p, | |
61 EMACS_INT to, Lisp_Object window)); | |
484 | 62 |
63 /* Value of point when current_column was called */ | |
84951 | 64 extern EMACS_INT last_known_column_point; |
9408
99429d6c8b4e
* indent.h (disptab_matches_widthtab, recompute_width_table): New
Jim Blandy <jimb@redhat.com>
parents:
484
diff
changeset
|
65 |
99429d6c8b4e
* indent.h (disptab_matches_widthtab, recompute_width_table): New
Jim Blandy <jimb@redhat.com>
parents:
484
diff
changeset
|
66 /* Functions for dealing with the column cache. */ |
99429d6c8b4e
* indent.h (disptab_matches_widthtab, recompute_width_table): New
Jim Blandy <jimb@redhat.com>
parents:
484
diff
changeset
|
67 |
78501 | 68 /* Return true if the display table DISPTAB specifies the same widths |
9408
99429d6c8b4e
* indent.h (disptab_matches_widthtab, recompute_width_table): New
Jim Blandy <jimb@redhat.com>
parents:
484
diff
changeset
|
69 for characters as WIDTHTAB. We use this to decide when to |
99429d6c8b4e
* indent.h (disptab_matches_widthtab, recompute_width_table): New
Jim Blandy <jimb@redhat.com>
parents:
484
diff
changeset
|
70 invalidate the buffer's column_cache. */ |
25026
488e6b8dc9ae
(toplevel): Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents:
20540
diff
changeset
|
71 int disptab_matches_widthtab P_ ((struct Lisp_Char_Table *disptab, |
488e6b8dc9ae
(toplevel): Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents:
20540
diff
changeset
|
72 struct Lisp_Vector *widthtab)); |
9408
99429d6c8b4e
* indent.h (disptab_matches_widthtab, recompute_width_table): New
Jim Blandy <jimb@redhat.com>
parents:
484
diff
changeset
|
73 |
99429d6c8b4e
* indent.h (disptab_matches_widthtab, recompute_width_table): New
Jim Blandy <jimb@redhat.com>
parents:
484
diff
changeset
|
74 /* Recompute BUF's width table, using the display table DISPTAB. */ |
25026
488e6b8dc9ae
(toplevel): Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents:
20540
diff
changeset
|
75 void recompute_width_table P_ ((struct buffer *buf, |
488e6b8dc9ae
(toplevel): Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents:
20540
diff
changeset
|
76 struct Lisp_Char_Table *disptab)); |
488e6b8dc9ae
(toplevel): Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents:
20540
diff
changeset
|
77 |
488e6b8dc9ae
(toplevel): Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents:
20540
diff
changeset
|
78 |
52401 | 79 /* arch-tag: f9feb373-5bff-4f4f-9198-94805d00cfd7 |
80 (do not change this comment) */ |