summaryrefslogtreecommitdiff
path: root/src/intervals.c
diff options
context:
space:
mode:
authorChong Yidong <cyd@stupidchicken.com>2011-03-13 18:25:16 -0400
committerChong Yidong <cyd@stupidchicken.com>2011-03-13 18:25:16 -0400
commitcffc6f3bd9b5dbb9825502928bd9dd58ddbac02e (patch)
treeab220f926b665ef94b698e925d442e75aadfa864 /src/intervals.c
parenteebc475df54de7ad5c04ef7cddc083c865235540 (diff)
downloademacs-cffc6f3bd9b5dbb9825502928bd9dd58ddbac02e.tar.gz
Fix BUF_* macros to handle indirect buffers properly (Bug#8219).
* buffer.h (BUF_BEGV, BUF_BEGV_BYTE, BUF_ZV, BUF_ZV_BYTE, BUF_PT) (BUF_PT_BYTE): Rewrite to handle indirect buffers (Bug#8219). These macros can no longer be used for assignment. * buffer.c (Fget_buffer_create, Fmake_indirect_buffer): Assign struct members directly, instead of using BUF_BEGV etc. (record_buffer_markers, fetch_buffer_markers): New functions for recording and fetching special buffer markers. (set_buffer_internal_1, set_buffer_temp): Use them. * lread.c (unreadchar): Use SET_BUF_PT_BOTH. * insdel.c (adjust_point): Use SET_BUF_PT_BOTH. * intervals.c (temp_set_point_both): Use SET_BUF_PT_BOTH. (get_local_map): Use SET_BUF_BEGV_BOTH and SET_BUF_ZV_BOTH. * xdisp.c (hscroll_window_tree): (reconsider_clip_changes): Use PT instead of BUF_PT.
Diffstat (limited to 'src/intervals.c')
-rw-r--r--src/intervals.c16
1 files changed, 6 insertions, 10 deletions
diff --git a/src/intervals.c b/src/intervals.c
index 6aee6e9d7fa..12b2789cc77 100644
--- a/src/intervals.c
+++ b/src/intervals.c
@@ -1892,8 +1892,7 @@ temp_set_point_both (struct buffer *buffer,
if (charpos > BUF_ZV (buffer) || charpos < BUF_BEGV (buffer))
abort ();
- BUF_PT_BYTE (buffer) = bytepos;
- BUF_PT (buffer) = charpos;
+ SET_BUF_PT_BOTH (buffer, charpos, bytepos);
}
/* Set point "temporarily", without checking any text properties. */
@@ -2312,10 +2311,9 @@ get_local_map (register EMACS_INT position, register struct buffer *buffer,
old_zv = BUF_ZV (buffer);
old_begv_byte = BUF_BEGV_BYTE (buffer);
old_zv_byte = BUF_ZV_BYTE (buffer);
- BUF_BEGV (buffer) = BUF_BEG (buffer);
- BUF_ZV (buffer) = BUF_Z (buffer);
- BUF_BEGV_BYTE (buffer) = BUF_BEG_BYTE (buffer);
- BUF_ZV_BYTE (buffer) = BUF_Z_BYTE (buffer);
+
+ SET_BUF_BEGV_BOTH (buffer, BUF_BEG (buffer), BUF_BEG_BYTE (buffer));
+ SET_BUF_ZV_BOTH (buffer, BUF_Z (buffer), BUF_Z_BYTE (buffer));
XSETFASTINT (lispy_position, position);
XSETBUFFER (lispy_buffer, buffer);
@@ -2329,10 +2327,8 @@ get_local_map (register EMACS_INT position, register struct buffer *buffer,
if (NILP (prop))
prop = get_pos_property (lispy_position, type, lispy_buffer);
- BUF_BEGV (buffer) = old_begv;
- BUF_ZV (buffer) = old_zv;
- BUF_BEGV_BYTE (buffer) = old_begv_byte;
- BUF_ZV_BYTE (buffer) = old_zv_byte;
+ SET_BUF_BEGV_BOTH (buffer, old_begv, old_begv_byte);
+ SET_BUF_ZV_BOTH (buffer, old_zv, old_zv_byte);
/* Use the local map only if it is valid. */
prop = get_keymap (prop, 0, 0);