Use truncated-partial-width-window-p in more places (bug#56815)
* lisp/simple.el (line-move, line-move-finish): Use truncated-partial-width-window-p. * lisp/window.el (count-screen-lines, scroll-command--goto-goal-column): Use truncated-partial-width-window-p. (truncated-partial-width-window-p): Replace window-width with window-total-width. * src/indent.c (scan_for_column): Bring the logic of using truncated-partial-width-window-p closer to what the display engine does.
This commit is contained in:
parent
0ab49d46dd
commit
3f076a8e44
3 changed files with 15 additions and 27 deletions
|
@ -7700,13 +7700,7 @@ not vscroll."
|
|||
;; Lines are not truncated...
|
||||
(not
|
||||
(and
|
||||
(or truncate-lines
|
||||
(and (integerp truncate-partial-width-windows)
|
||||
(< (window-total-width)
|
||||
truncate-partial-width-windows))
|
||||
(and truncate-partial-width-windows
|
||||
(not (integerp truncate-partial-width-windows))
|
||||
(not (window-full-width-p))))
|
||||
(or truncate-lines (truncated-partial-width-window-p))
|
||||
;; ...or if lines are truncated, this buffer
|
||||
;; doesn't have very long lines.
|
||||
(long-line-optimizations-p)))
|
||||
|
@ -7718,13 +7712,7 @@ not vscroll."
|
|||
;; Lines aren't truncated.
|
||||
(not
|
||||
(and
|
||||
(or truncate-lines
|
||||
(and (integerp truncate-partial-width-windows)
|
||||
(< (window-total-width)
|
||||
truncate-partial-width-windows))
|
||||
(and truncate-partial-width-windows
|
||||
(not (integerp truncate-partial-width-windows))
|
||||
(not (window-full-width-p))))
|
||||
(or truncate-lines (truncated-partial-width-window-p))
|
||||
(long-line-optimizations-p)))
|
||||
;; When the text in the window is scrolled to the left,
|
||||
;; display-based motion doesn't make sense (because each
|
||||
|
@ -7985,7 +7973,7 @@ If NOERROR, don't signal an error if we can't move that many lines."
|
|||
|
||||
;; Move to the desired column.
|
||||
(if (and line-move-visual
|
||||
(not (or truncate-lines truncate-partial-width-windows)))
|
||||
(not (or truncate-lines (truncated-partial-width-window-p))))
|
||||
;; Under line-move-visual, goal-column should be
|
||||
;; interpreted in units of the frame's canonical character
|
||||
;; width, which is exactly what vertical-motion does.
|
||||
|
|
|
@ -9044,10 +9044,7 @@ in some window."
|
|||
;; vertical-motion returns a number that is 1 larger than it
|
||||
;; should. We need to fix that.
|
||||
(setq end-invisible-p
|
||||
(and (or truncate-lines
|
||||
(and (natnump truncate-partial-width-windows)
|
||||
(< (window-total-width window)
|
||||
truncate-partial-width-windows)))
|
||||
(and (or truncate-lines (truncated-partial-width-window-p window))
|
||||
(save-excursion
|
||||
(goto-char finish)
|
||||
(> (- (current-column) (window-hscroll window))
|
||||
|
@ -10140,7 +10137,7 @@ semipermanent goal column for this command."
|
|||
(when goal-column
|
||||
;; Move to the desired column.
|
||||
(if (and line-move-visual
|
||||
(not (or truncate-lines truncate-partial-width-windows)))
|
||||
(not (or truncate-lines (truncated-partial-width-window-p))))
|
||||
;; Under line-move-visual, goal-column should be
|
||||
;; interpreted in units of the frame's canonical character
|
||||
;; width, which is exactly what vertical-motion does.
|
||||
|
@ -10449,7 +10446,7 @@ Otherwise, consult the value of `truncate-partial-width-windows'
|
|||
(let ((t-p-w-w (buffer-local-value 'truncate-partial-width-windows
|
||||
(window-buffer window))))
|
||||
(if (integerp t-p-w-w)
|
||||
(< (window-width window) t-p-w-w)
|
||||
(< (window-total-width window) t-p-w-w)
|
||||
t-p-w-w))))
|
||||
|
||||
|
||||
|
|
15
src/indent.c
15
src/indent.c
|
@ -577,12 +577,15 @@ scan_for_column (ptrdiff_t *endpos, EMACS_INT *goalcol,
|
|||
|
||||
if (!NILP (BVAR (current_buffer, truncate_lines)))
|
||||
lines_truncated = true;
|
||||
else if (w && FIXNUMP (Vtruncate_partial_width_windows))
|
||||
lines_truncated =
|
||||
w->total_cols < XFIXNAT (Vtruncate_partial_width_windows);
|
||||
else if (w && !NILP (Vtruncate_partial_width_windows))
|
||||
lines_truncated =
|
||||
w->total_cols < FRAME_COLS (XFRAME (WINDOW_FRAME (w)));
|
||||
else if (!NILP (Vtruncate_partial_width_windows) && w
|
||||
&& w->total_cols < FRAME_COLS (XFRAME (WINDOW_FRAME (w))))
|
||||
{
|
||||
if (FIXNUMP (Vtruncate_partial_width_windows))
|
||||
lines_truncated =
|
||||
w->total_cols < XFIXNAT (Vtruncate_partial_width_windows);
|
||||
else
|
||||
lines_truncated = true;
|
||||
}
|
||||
/* Special optimization for buffers with long and truncated
|
||||
lines: assumes that each character is a single column. */
|
||||
if (lines_truncated)
|
||||
|
|
Loading…
Add table
Reference in a new issue