diff options
| author | Eli Zaretskii | 2022-10-26 17:21:45 +0300 |
|---|---|---|
| committer | Eli Zaretskii | 2022-10-26 17:21:45 +0300 |
| commit | d6e08ff459df4cda9eda0c5c842313d02851ba3d (patch) | |
| tree | 225d8c69d405bb01a2c48f0834c80d81bbf700c8 /src | |
| parent | 4a1e77ced6b3d00e9ffde5855dbc3df8f9ecd619 (diff) | |
| download | emacs-d6e08ff459df4cda9eda0c5c842313d02851ba3d.tar.gz emacs-d6e08ff459df4cda9eda0c5c842313d02851ba3d.zip | |
Fix rare problems with current-column when text is invisible
* src/indent.c (scan_for_column, compute_motion): Don't miss
compositions when the position to check for composition happens to
be inside invisible text. (Bug#58791)
Diffstat (limited to 'src')
| -rw-r--r-- | src/indent.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/indent.c b/src/indent.c index aa905f387bb..4bf597a339f 100644 --- a/src/indent.c +++ b/src/indent.c | |||
| @@ -637,6 +637,11 @@ scan_for_column (ptrdiff_t *endpos, EMACS_INT *goalcol, | |||
| 637 | scan_byte = CHAR_TO_BYTE (scan); | 637 | scan_byte = CHAR_TO_BYTE (scan); |
| 638 | if (scan >= end) | 638 | if (scan >= end) |
| 639 | goto endloop; | 639 | goto endloop; |
| 640 | /* We may have over-stepped cmp_it.stop_pos while skipping | ||
| 641 | the invisible text. If so, update cmp_it.stop_pos. */ | ||
| 642 | if (scan > cmp_it.stop_pos && cmp_it.id < 0) | ||
| 643 | composition_reseat_it (&cmp_it, scan, scan_byte, end, | ||
| 644 | w, -1, NULL, Qnil); | ||
| 640 | } | 645 | } |
| 641 | 646 | ||
| 642 | /* Test reaching the goal column. We do this after skipping | 647 | /* Test reaching the goal column. We do this after skipping |
| @@ -1358,6 +1363,9 @@ compute_motion (ptrdiff_t from, ptrdiff_t frombyte, EMACS_INT fromvpos, | |||
| 1358 | pos = newpos; | 1363 | pos = newpos; |
| 1359 | pos_byte = CHAR_TO_BYTE (pos); | 1364 | pos_byte = CHAR_TO_BYTE (pos); |
| 1360 | } | 1365 | } |
| 1366 | if (newpos > cmp_it.stop_pos && cmp_it.id < 0) | ||
| 1367 | composition_reseat_it (&cmp_it, pos, pos_byte, to, | ||
| 1368 | win, -1, NULL, Qnil); | ||
| 1361 | 1369 | ||
| 1362 | rarely_quit (++quit_count); | 1370 | rarely_quit (++quit_count); |
| 1363 | } | 1371 | } |