diff options
| author | Kim F. Storm | 2006-04-19 23:20:21 +0000 |
|---|---|---|
| committer | Kim F. Storm | 2006-04-19 23:20:21 +0000 |
| commit | e221c49a0a06c92f653f5040fdafeadb51d2a54a (patch) | |
| tree | 54a12dc44b1df51ff47ba593baa01b9080393dfe /src | |
| parent | 7f32b80b1110fab9b5010502ebb28e30a757e446 (diff) | |
| download | emacs-e221c49a0a06c92f653f5040fdafeadb51d2a54a.tar.gz emacs-e221c49a0a06c92f653f5040fdafeadb51d2a54a.zip | |
(redisplay_window): If current window start is not at the
beginning of a line, select a new window start if buffer is modified
and window start is in the modified region, but the first change is
before window start.
Diffstat (limited to 'src')
| -rw-r--r-- | src/xdisp.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/xdisp.c b/src/xdisp.c index 075e05b0e13..db987ad5a90 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -12860,6 +12860,33 @@ redisplay_window (window, just_this_one_p) | |||
| 12860 | || (XFASTINT (w->last_modified) >= MODIFF | 12860 | || (XFASTINT (w->last_modified) >= MODIFF |
| 12861 | && XFASTINT (w->last_overlay_modified) >= OVERLAY_MODIFF))) | 12861 | && XFASTINT (w->last_overlay_modified) >= OVERLAY_MODIFF))) |
| 12862 | { | 12862 | { |
| 12863 | |||
| 12864 | /* If first window line is a continuation line, and window start | ||
| 12865 | is inside the modified region, but the first change is before | ||
| 12866 | current window start, we must select a new window start.*/ | ||
| 12867 | if (NILP (w->start_at_line_beg)) | ||
| 12868 | { | ||
| 12869 | /* Make sure beg_unchanged and end_unchanged are up to date. | ||
| 12870 | Do it only if buffer has really changed. This may or may | ||
| 12871 | not have been done by try_window_id (see which) already. */ | ||
| 12872 | if (MODIFF > SAVE_MODIFF | ||
| 12873 | /* This seems to happen sometimes after saving a buffer. */ | ||
| 12874 | || BEG_UNCHANGED + END_UNCHANGED > Z_BYTE) | ||
| 12875 | { | ||
| 12876 | if (GPT - BEG < BEG_UNCHANGED) | ||
| 12877 | BEG_UNCHANGED = GPT - BEG; | ||
| 12878 | if (Z - GPT < END_UNCHANGED) | ||
| 12879 | END_UNCHANGED = Z - GPT; | ||
| 12880 | } | ||
| 12881 | |||
| 12882 | if (CHARPOS (startp) > BEG + BEG_UNCHANGED | ||
| 12883 | && CHARPOS (startp) <= Z - END_UNCHANGED) | ||
| 12884 | { | ||
| 12885 | centering_position = 0; | ||
| 12886 | goto recenter; | ||
| 12887 | } | ||
| 12888 | } | ||
| 12889 | |||
| 12863 | #if GLYPH_DEBUG | 12890 | #if GLYPH_DEBUG |
| 12864 | debug_method_add (w, "same window start"); | 12891 | debug_method_add (w, "same window start"); |
| 12865 | #endif | 12892 | #endif |