]> git.eshelyaron.com Git - emacs.git/commitdiff
Use truncated-partial-width-window-p in more places (bug#56815)
authorJuri Linkov <juri@linkov.net>
Sat, 27 Aug 2022 19:52:03 +0000 (22:52 +0300)
committerJuri Linkov <juri@linkov.net>
Sat, 27 Aug 2022 19:52:03 +0000 (22:52 +0300)
* 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.

lisp/simple.el
lisp/window.el
src/indent.c

index d18d54ce16c345f700117ca2ccf0d1e5299b7c34..ceb29b1e30aab02122c935b25713e76bc0262424 100644 (file)
@@ -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.
index 4d88ffa903935be50cf57910c656e2144add3cf4..db69379e692dffd585b6a37c46fd9aeadcb73cfc 100644 (file)
@@ -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))))
 
 \f
index cb368024d974b78d4ce25765bd676ac78ad314d9..aa905f387bbd4427d744065516dbc04e7638ddba 100644 (file)
@@ -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)