diff options
| author | Gregory Heytings | 2022-11-27 22:53:20 +0000 |
|---|---|---|
| committer | Gregory Heytings | 2022-11-27 23:53:51 +0100 |
| commit | 6d3cea2c8edde5ee8d6d8fe1364cd318e3270515 (patch) | |
| tree | 1ecd92a0b4388d95d9f7ede88d50c526566b2ca5 | |
| parent | d5dc1dbf7cb263d8ff541a0def028c2d7d24f82b (diff) | |
| download | emacs-6d3cea2c8edde5ee8d6d8fe1364cd318e3270515.tar.gz emacs-6d3cea2c8edde5ee8d6d8fe1364cd318e3270515.zip | |
Minor improvements to locked narrowing
* src/xdisp.c (get_locked_narrowing_begv)
(get_locked_narrowing_zv): Safer handling of negative values.
(handle_fontified_prop): Do not use locked narrowing if the region
size is <= 0.
* src/keyboard.c (safe_run_hooks_maybe_narrowed): Do not use
locked narrowing if the region size is <= 0.
| -rw-r--r-- | src/keyboard.c | 3 | ||||
| -rw-r--r-- | src/xdisp.c | 9 |
2 files changed, 7 insertions, 5 deletions
diff --git a/src/keyboard.c b/src/keyboard.c index b82a5e1a3ef..ac40ba059ea 100644 --- a/src/keyboard.c +++ b/src/keyboard.c | |||
| @@ -1910,7 +1910,8 @@ safe_run_hooks_maybe_narrowed (Lisp_Object hook, struct window *w) | |||
| 1910 | 1910 | ||
| 1911 | specbind (Qinhibit_quit, Qt); | 1911 | specbind (Qinhibit_quit, Qt); |
| 1912 | 1912 | ||
| 1913 | if (current_buffer->long_line_optimizations_p) | 1913 | if (current_buffer->long_line_optimizations_p |
| 1914 | && long_line_locked_narrowing_region_size > 0) | ||
| 1914 | narrow_to_region_locked (make_fixnum (get_locked_narrowing_begv (PT)), | 1915 | narrow_to_region_locked (make_fixnum (get_locked_narrowing_begv (PT)), |
| 1915 | make_fixnum (get_locked_narrowing_zv (PT)), | 1916 | make_fixnum (get_locked_narrowing_zv (PT)), |
| 1916 | hook); | 1917 | hook); |
diff --git a/src/xdisp.c b/src/xdisp.c index 0002c3d611c..d423a77bde0 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -3536,12 +3536,12 @@ get_closer_narrowed_begv (struct window *w, ptrdiff_t pos) | |||
| 3536 | ptrdiff_t | 3536 | ptrdiff_t |
| 3537 | get_locked_narrowing_begv (ptrdiff_t pos) | 3537 | get_locked_narrowing_begv (ptrdiff_t pos) |
| 3538 | { | 3538 | { |
| 3539 | if (long_line_locked_narrowing_region_size == 0) | 3539 | if (long_line_locked_narrowing_region_size <= 0) |
| 3540 | return BEGV; | 3540 | return BEGV; |
| 3541 | int len = long_line_locked_narrowing_region_size / 2; | 3541 | int len = long_line_locked_narrowing_region_size / 2; |
| 3542 | int begv = max (pos - len, BEGV); | 3542 | int begv = max (pos - len, BEGV); |
| 3543 | int limit = long_line_locked_narrowing_bol_search_limit; | 3543 | int limit = long_line_locked_narrowing_bol_search_limit; |
| 3544 | while (limit) | 3544 | while (limit > 0) |
| 3545 | { | 3545 | { |
| 3546 | if (begv == BEGV || FETCH_BYTE (CHAR_TO_BYTE (begv) - 1) == '\n') | 3546 | if (begv == BEGV || FETCH_BYTE (CHAR_TO_BYTE (begv) - 1) == '\n') |
| 3547 | return begv; | 3547 | return begv; |
| @@ -3554,7 +3554,7 @@ get_locked_narrowing_begv (ptrdiff_t pos) | |||
| 3554 | ptrdiff_t | 3554 | ptrdiff_t |
| 3555 | get_locked_narrowing_zv (ptrdiff_t pos) | 3555 | get_locked_narrowing_zv (ptrdiff_t pos) |
| 3556 | { | 3556 | { |
| 3557 | if (long_line_locked_narrowing_region_size == 0) | 3557 | if (long_line_locked_narrowing_region_size <= 0) |
| 3558 | return ZV; | 3558 | return ZV; |
| 3559 | int len = long_line_locked_narrowing_region_size / 2; | 3559 | int len = long_line_locked_narrowing_region_size / 2; |
| 3560 | return min (pos + len, ZV); | 3560 | return min (pos + len, ZV); |
| @@ -4393,7 +4393,8 @@ handle_fontified_prop (struct it *it) | |||
| 4393 | 4393 | ||
| 4394 | eassert (it->end_charpos == ZV); | 4394 | eassert (it->end_charpos == ZV); |
| 4395 | 4395 | ||
| 4396 | if (current_buffer->long_line_optimizations_p) | 4396 | if (current_buffer->long_line_optimizations_p |
| 4397 | && long_line_locked_narrowing_region_size > 0) | ||
| 4397 | { | 4398 | { |
| 4398 | ptrdiff_t begv = it->locked_narrowing_begv; | 4399 | ptrdiff_t begv = it->locked_narrowing_begv; |
| 4399 | ptrdiff_t zv = it->locked_narrowing_zv; | 4400 | ptrdiff_t zv = it->locked_narrowing_zv; |