aboutsummaryrefslogtreecommitdiffstats
path: root/src/buffer.c
diff options
context:
space:
mode:
authorGregory Heytings2022-07-18 15:50:57 +0000
committerGregory Heytings2022-07-18 17:54:55 +0200
commit1ff69cc744eaa704afc1ff81242d41a6c09439fe (patch)
tree3355dbbb1715b0661b1b0e7beaf5b0ef20f41eef /src/buffer.c
parent6a097a86210cf1226d432b255cc41aa74fe93507 (diff)
downloademacs-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.c6
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)