Mercurial > hg > xemacs-beta
annotate src/insdel.h @ 5090:0ca81354c4c7
Further frame-geometry cleanups
-------------------- ChangeLog entries follow: --------------------
man/ChangeLog addition:
2010-03-03 Ben Wing <ben@xemacs.org>
* internals/internals.texi (Intro to Window and Frame Geometry):
* internals/internals.texi (The Paned Area):
* internals/internals.texi (The Displayable Area):
Update to make note of e.g. the fact that the bottom gutter is
actually above the minibuffer.
src/ChangeLog addition:
2010-03-03 Ben Wing <ben@xemacs.org>
* emacs.c:
* emacs.c (assert_equal_failed):
* lisp.h:
* lisp.h (assert_equal):
New fun assert_equal, asserting that two values == each other, and
printing out both values upon failure.
* frame-gtk.c (gtk_initialize_frame_size):
* frame-impl.h:
* frame-impl.h (FRAME_TOP_INTERNAL_BORDER_START):
* frame-impl.h (FRAME_BOTTOM_INTERNAL_BORDER_START):
* frame-impl.h (FRAME_LEFT_INTERNAL_BORDER_START):
* frame-impl.h (FRAME_PANED_TOP_EDGE):
* frame-impl.h (FRAME_NONPANED_SIZE):
* frame-x.c (x_initialize_frame_size):
* frame.c:
* gutter.c (get_gutter_coords):
* gutter.c (calculate_gutter_size):
* gutter.h:
* gutter.h (WINDOW_REAL_TOP_GUTTER_BOUNDS):
* gutter.h (FRAME_TOP_GUTTER_BOUNDS):
* input-method-xlib.c:
* input-method-xlib.c (XIM_SetGeometry):
* redisplay-output.c (clear_left_border):
* redisplay-output.c (clear_right_border):
* redisplay-output.c (redisplay_output_pixmap):
* redisplay-output.c (redisplay_clear_region):
* redisplay-output.c (redisplay_clear_top_of_window):
* redisplay-output.c (redisplay_clear_to_window_end):
* redisplay-xlike-inc.c (XLIKE_clear_frame):
* redisplay.c:
* redisplay.c (UPDATE_CACHE_RETURN):
* redisplay.c (pixel_to_glyph_translation):
* toolbar.c (update_frame_toolbars_geometry):
* window.c (Fwindow_pixel_edges):
Get rid of some redundant macros. Consistently use the
FRAME_TOP_*_START, FRAME_RIGHT_*_END, etc. format. Rename
FRAME_*_BORDER_* to FRAME_*_INTERNAL_BORDER_*. Comment out
FRAME_BOTTOM_* for gutters and the paned area due to the
uncertainty over where the paned area actually begins. (Eventually
we should probably move the gutters outside the minibuffer so that
the paned area is contiguous.) Use FRAME_PANED_* more often in the
code to make things clearer.
Update the diagram to show that the bottom gutter is inside the
minibuffer (!) and that there are "junk boxes" when you have left
and/or right gutters (dead boxes that are mistakenly left uncleared,
unlike the corresponding scrollbar dead boxes). Update the text
appropriately to cover the bottom gutter position, etc.
Rewrite gutter-geometry code to use the FRAME_*_GUTTER_* in place of
equivalent expressions referencing other frame elements, to make the
code more portable in case we move around the gutter location.
Cleanup FRAME_*_GUTTER_BOUNDS() in gutter.h.
Add some #### GEOM! comments where I think code is incorrect --
typically, it wasn't fixed up properly when the gutter was added.
Some cosmetic changes.
author | Ben Wing <ben@xemacs.org> |
---|---|
date | Wed, 03 Mar 2010 05:07:47 -0600 |
parents | 304aebb79cd3 |
children | 308d34e9f07d |
rev | line source |
---|---|
428 | 1 /* Buffer insertion/deletion and gap motion for XEmacs. |
2 Copyright (C) 1985-1994 Free Software Foundation, Inc. | |
3 | |
4 This file is part of XEmacs. | |
5 | |
6 XEmacs is free software; you can redistribute it and/or modify it | |
7 under the terms of the GNU General Public License as published by the | |
8 Free Software Foundation; either version 2, or (at your option) any | |
9 later version. | |
10 | |
11 XEmacs is distributed in the hope that it will be useful, but WITHOUT | |
12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
14 for more details. | |
15 | |
16 You should have received a copy of the GNU General Public License | |
17 along with XEmacs; see the file COPYING. If not, write to | |
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
19 Boston, MA 02111-1307, USA. */ | |
20 | |
21 /* Synched up with: Not in FSF. */ | |
22 | |
23 /* Mostly rewritten by Ben Wing. */ | |
24 | |
440 | 25 #ifndef INCLUDED_insdel_h_ |
26 #define INCLUDED_insdel_h_ | |
428 | 27 |
28 /************************************************************************/ | |
29 /* changing a buffer's text */ | |
30 /************************************************************************/ | |
31 | |
665 | 32 int begin_multiple_change (struct buffer *buf, Charbpos start, Charbpos end); |
428 | 33 void end_multiple_change (struct buffer *buf, int count); |
34 | |
35 /* flags for functions below */ | |
36 | |
37 #define INSDEL_BEFORE_MARKERS 1 | |
38 #define INSDEL_NO_LOCKING 2 | |
39 | |
665 | 40 Charcount buffer_insert_string_1 (struct buffer *buf, Charbpos pos, |
867 | 41 const Ibyte *nonreloc, Lisp_Object reloc, |
428 | 42 Bytecount offset, Bytecount length, |
43 int flags); | |
665 | 44 Charcount buffer_insert_raw_string_1 (struct buffer *buf, Charbpos pos, |
867 | 45 const Ibyte *nonreloc, |
428 | 46 Bytecount length, int flags); |
665 | 47 Charcount buffer_insert_lisp_string_1 (struct buffer *buf, Charbpos pos, |
428 | 48 Lisp_Object str, int flags); |
4953
304aebb79cd3
function renamings to track names of char typedefs
Ben Wing <ben@xemacs.org>
parents:
867
diff
changeset
|
49 Charcount buffer_insert_ascstring_1 (struct buffer *buf, Charbpos pos, |
304aebb79cd3
function renamings to track names of char typedefs
Ben Wing <ben@xemacs.org>
parents:
867
diff
changeset
|
50 const Ascbyte *s, int flags); |
665 | 51 Charcount buffer_insert_emacs_char_1 (struct buffer *buf, Charbpos pos, |
867 | 52 Ichar ch, int flags); |
665 | 53 Charcount buffer_insert_c_char_1 (struct buffer *buf, Charbpos pos, char c, |
428 | 54 int flags); |
665 | 55 Charcount buffer_insert_from_buffer_1 (struct buffer *buf, Charbpos pos, |
56 struct buffer *buf2, Charbpos pos2, | |
428 | 57 Charcount length, int flags); |
58 | |
59 /* Macros for insertion functions that insert at point after markers. | |
60 All of these can GC. */ | |
61 | |
62 #define buffer_insert_string(buf, nonreloc, reloc, offset, length) \ | |
63 buffer_insert_string_1 (buf, -1, nonreloc, reloc, offset, length, 0) | |
64 #define buffer_insert_raw_string(buf, string, length) \ | |
65 buffer_insert_raw_string_1 (buf, -1, string, length, 0) | |
4953
304aebb79cd3
function renamings to track names of char typedefs
Ben Wing <ben@xemacs.org>
parents:
867
diff
changeset
|
66 #define buffer_insert_ascstring(buf, s) \ |
304aebb79cd3
function renamings to track names of char typedefs
Ben Wing <ben@xemacs.org>
parents:
867
diff
changeset
|
67 buffer_insert_ascstring_1 (buf, -1, s, 0) |
428 | 68 #define buffer_insert_lisp_string(buf, str) \ |
69 buffer_insert_lisp_string_1 (buf, -1, str, 0) | |
70 #define buffer_insert_c_char(buf, c) \ | |
71 buffer_insert_c_char_1 (buf, -1, c, 0) | |
72 #define buffer_insert_emacs_char(buf, ch) \ | |
73 buffer_insert_emacs_char_1 (buf, -1, ch, 0) | |
74 #define buffer_insert_from_buffer(buf, b, index, length) \ | |
75 buffer_insert_from_buffer_1 (buf, -1, b, index, length, 0) | |
76 | |
665 | 77 void buffer_delete_range (struct buffer *buf, Charbpos from, Charbpos to, |
428 | 78 int flags); |
867 | 79 void buffer_replace_char (struct buffer *b, Charbpos pos, Ichar ch, |
428 | 80 int not_real_change, int force_lock_check); |
81 | |
82 | |
83 /************************************************************************/ | |
84 /* tracking buffer changes */ | |
85 /************************************************************************/ | |
86 | |
87 /* Split into two parts. One part goes with a buffer's text (possibly | |
88 shared), the other with the buffer itself. */ | |
89 | |
90 struct buffer_text_change_data | |
91 { | |
92 /* multiple change stuff */ | |
93 int in_multiple_change; | |
665 | 94 Charbpos mc_begin, mc_orig_end, mc_new_end; |
428 | 95 int mc_begin_signaled; |
96 }; | |
97 | |
98 struct each_buffer_change_data | |
99 { | |
100 Charcount begin_unchanged, end_unchanged; | |
101 /* redisplay needs to know if a newline was deleted so its | |
102 incremental-redisplay algorithm will fail */ | |
103 int newline_was_deleted; | |
104 Charcount begin_extent_unchanged, end_extent_unchanged; | |
105 }; | |
106 | |
107 /* Number of characters at the beginning and end of the buffer that | |
108 have not changed since the last call to buffer_reset_changes(). | |
109 If no changes have occurred since then, both values will be -1. | |
110 | |
111 "Changed" means that the text has changed. */ | |
112 | |
113 #define BUF_BEGIN_UNCHANGED(buf) ((buf)->changes->begin_unchanged) | |
114 #define BUF_END_UNCHANGED(buf) ((buf)->changes->end_unchanged) | |
115 | |
116 /* Number of characters at the beginning and end of the buffer that | |
117 have not had a covering extent change since the last call to | |
118 buffer_reset_changes (). If no changes have occurred since then, | |
119 both values will be -1. | |
120 | |
121 "Changed" means that the extents covering the text have changed. */ | |
122 | |
123 #define BUF_EXTENT_BEGIN_UNCHANGED(buf) \ | |
124 ((buf)->changes->begin_extent_unchanged) | |
125 #define BUF_EXTENT_END_UNCHANGED(buf) \ | |
126 ((buf)->changes->end_extent_unchanged) | |
127 | |
128 #define BUF_NEWLINE_WAS_DELETED(buf) \ | |
129 ((buf)->changes->newline_was_deleted) | |
130 | |
131 void buffer_extent_signal_changed_region (struct buffer *buf, | |
665 | 132 Charbpos start, |
133 Charbpos end); | |
428 | 134 void buffer_reset_changes (struct buffer *buf); |
135 | |
136 | |
137 | |
138 /************************************************************************/ | |
139 /* other related functions */ | |
140 /************************************************************************/ | |
141 | |
665 | 142 Membpos do_marker_adjustment (Membpos mpos, Membpos from, |
143 Membpos to, Bytecount amount); | |
428 | 144 |
867 | 145 void fixup_internal_substring (const Ibyte *nonreloc, |
428 | 146 Lisp_Object reloc, |
147 Bytecount offset, Bytecount *len); | |
148 | |
149 /* In font-lock.c */ | |
150 void font_lock_maybe_update_syntactic_caches (struct buffer *buf, | |
665 | 151 Charbpos start, |
152 Charbpos orig_end, | |
153 Charbpos new_end); | |
428 | 154 void font_lock_buffer_was_killed (struct buffer *buf); |
155 | |
665 | 156 void barf_if_buffer_read_only (struct buffer *buf, Charbpos from, |
157 Charbpos to); | |
428 | 158 |
159 void init_buffer_text (struct buffer *b); | |
160 void uninit_buffer_text (struct buffer *b); | |
161 | |
440 | 162 #endif /* INCLUDED_insdel_h_ */ |