diff options
| author | Gregory Heytings | 2022-07-18 15:50:57 +0000 |
|---|---|---|
| committer | Gregory Heytings | 2022-07-18 17:54:55 +0200 |
| commit | 1ff69cc744eaa704afc1ff81242d41a6c09439fe (patch) | |
| tree | 3355dbbb1715b0661b1b0e7beaf5b0ef20f41eef /src/buffer.c | |
| parent | 6a097a86210cf1226d432b255cc41aa74fe93507 (diff) | |
| download | emacs-1ff69cc744eaa704afc1ff81242d41a6c09439fe.tar.gz emacs-1ff69cc744eaa704afc1ff81242d41a6c09439fe.zip | |
Improve the heuristic for long lines detection.
* src/buffer.h (struct buffer_text): New 'unchanged_size' field.
(BUF_UNCHANGED_SIZE): New macro to access the field.
* src/buffer.c (Fget_buffer_create): Initialize the field.
(Fbuffer_swap_text): Handle it.
* src/xdisp.c (mark_window_display_accurate_1): Set the field.
(redisplay_window): Use the field for long lines detection.
Diffstat (limited to 'src/buffer.c')
| -rw-r--r-- | src/buffer.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/buffer.c b/src/buffer.c index a777668e44b..9a463363b93 100644 --- a/src/buffer.c +++ b/src/buffer.c | |||
| @@ -599,6 +599,7 @@ even if it is dead. The return value is never nil. */) | |||
| 599 | BUF_OVERLAY_UNCHANGED_MODIFIED (b) = 1; | 599 | BUF_OVERLAY_UNCHANGED_MODIFIED (b) = 1; |
| 600 | BUF_END_UNCHANGED (b) = 0; | 600 | BUF_END_UNCHANGED (b) = 0; |
| 601 | BUF_BEG_UNCHANGED (b) = 0; | 601 | BUF_BEG_UNCHANGED (b) = 0; |
| 602 | BUF_UNCHANGED_SIZE (b) = 0; | ||
| 602 | *(BUF_GPT_ADDR (b)) = *(BUF_Z_ADDR (b)) = 0; /* Put an anchor '\0'. */ | 603 | *(BUF_GPT_ADDR (b)) = *(BUF_Z_ADDR (b)) = 0; /* Put an anchor '\0'. */ |
| 603 | b->text->inhibit_shrinking = false; | 604 | b->text->inhibit_shrinking = false; |
| 604 | b->text->redisplay = false; | 605 | b->text->redisplay = false; |
| @@ -2477,6 +2478,11 @@ results, see Info node `(elisp)Swapping Text'. */) | |||
| 2477 | other_buffer->text->beg_unchanged = other_buffer->text->gpt; | 2478 | other_buffer->text->beg_unchanged = other_buffer->text->gpt; |
| 2478 | other_buffer->text->end_unchanged = other_buffer->text->gpt; | 2479 | other_buffer->text->end_unchanged = other_buffer->text->gpt; |
| 2479 | { | 2480 | { |
| 2481 | ptrdiff_t tmp = current_buffer->text->unchanged_size; | ||
| 2482 | current_buffer->text->unchanged_size = other_buffer->text->unchanged_size; | ||
| 2483 | other_buffer->text->unchanged_size = tmp; | ||
| 2484 | } | ||
| 2485 | { | ||
| 2480 | struct Lisp_Marker *m; | 2486 | struct Lisp_Marker *m; |
| 2481 | for (m = BUF_MARKERS (current_buffer); m; m = m->next) | 2487 | for (m = BUF_MARKERS (current_buffer); m; m = m->next) |
| 2482 | if (m->buffer == other_buffer) | 2488 | if (m->buffer == other_buffer) |