diff options
| author | Chong Yidong | 2011-03-19 12:42:53 -0400 |
|---|---|---|
| committer | Chong Yidong | 2011-03-19 12:42:53 -0400 |
| commit | 20f5695598d3137257e24802479d003ea82eb5f9 (patch) | |
| tree | dbd65b250aa1d524b0a0864bfda2e99465a0c9a4 /src/intervals.c | |
| parent | 576bce32675146e772183647c4750c1f5f9b7de7 (diff) | |
| download | emacs-20f5695598d3137257e24802479d003ea82eb5f9.tar.gz emacs-20f5695598d3137257e24802479d003ea82eb5f9.zip | |
Backport fix for Bug#8219 from trunk.
* 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.c | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/src/intervals.c b/src/intervals.c index d47888b237c..fd8f3f55479 100644 --- a/src/intervals.c +++ b/src/intervals.c | |||
| @@ -1949,8 +1949,7 @@ temp_set_point_both (struct buffer *buffer, | |||
| 1949 | if (charpos > BUF_ZV (buffer) || charpos < BUF_BEGV (buffer)) | 1949 | if (charpos > BUF_ZV (buffer) || charpos < BUF_BEGV (buffer)) |
| 1950 | abort (); | 1950 | abort (); |
| 1951 | 1951 | ||
| 1952 | BUF_PT_BYTE (buffer) = bytepos; | 1952 | SET_BUF_PT_BOTH (buffer, charpos, bytepos); |
| 1953 | BUF_PT (buffer) = charpos; | ||
| 1954 | } | 1953 | } |
| 1955 | 1954 | ||
| 1956 | /* Set point in BUFFER to CHARPOS. If the target position is | 1955 | /* Set point in BUFFER to CHARPOS. If the target position is |
| @@ -2366,10 +2365,9 @@ get_local_map (position, buffer, type) | |||
| 2366 | old_zv = BUF_ZV (buffer); | 2365 | old_zv = BUF_ZV (buffer); |
| 2367 | old_begv_byte = BUF_BEGV_BYTE (buffer); | 2366 | old_begv_byte = BUF_BEGV_BYTE (buffer); |
| 2368 | old_zv_byte = BUF_ZV_BYTE (buffer); | 2367 | old_zv_byte = BUF_ZV_BYTE (buffer); |
| 2369 | BUF_BEGV (buffer) = BUF_BEG (buffer); | 2368 | |
| 2370 | BUF_ZV (buffer) = BUF_Z (buffer); | 2369 | SET_BUF_BEGV_BOTH (buffer, BUF_BEG (buffer), BUF_BEG_BYTE (buffer)); |
| 2371 | BUF_BEGV_BYTE (buffer) = BUF_BEG_BYTE (buffer); | 2370 | SET_BUF_ZV_BOTH (buffer, BUF_Z (buffer), BUF_Z_BYTE (buffer)); |
| 2372 | BUF_ZV_BYTE (buffer) = BUF_Z_BYTE (buffer); | ||
| 2373 | 2371 | ||
| 2374 | XSETFASTINT (lispy_position, position); | 2372 | XSETFASTINT (lispy_position, position); |
| 2375 | XSETBUFFER (lispy_buffer, buffer); | 2373 | XSETBUFFER (lispy_buffer, buffer); |
| @@ -2383,10 +2381,8 @@ get_local_map (position, buffer, type) | |||
| 2383 | if (NILP (prop)) | 2381 | if (NILP (prop)) |
| 2384 | prop = get_pos_property (lispy_position, type, lispy_buffer); | 2382 | prop = get_pos_property (lispy_position, type, lispy_buffer); |
| 2385 | 2383 | ||
| 2386 | BUF_BEGV (buffer) = old_begv; | 2384 | SET_BUF_BEGV_BOTH (buffer, old_begv, old_begv_byte); |
| 2387 | BUF_ZV (buffer) = old_zv; | 2385 | SET_BUF_ZV_BOTH (buffer, old_zv, old_zv_byte); |
| 2388 | BUF_BEGV_BYTE (buffer) = old_begv_byte; | ||
| 2389 | BUF_ZV_BYTE (buffer) = old_zv_byte; | ||
| 2390 | 2386 | ||
| 2391 | /* Use the local map only if it is valid. */ | 2387 | /* Use the local map only if it is valid. */ |
| 2392 | prop = get_keymap (prop, 0, 0); | 2388 | prop = get_keymap (prop, 0, 0); |