From: Eli Zaretskii Date: Sun, 7 Apr 2024 09:08:18 +0000 (+0300) Subject: Fix truncation of long lines in compilation buffers X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=8e4bf42009aeef4b7cfe73d7aa71994a82fb5d51;p=emacs.git Fix truncation of long lines in compilation buffers * lisp/progmodes/compile.el (compilation--insert-abbreviated-line): Handle long lines that end in a newline. (Bug#70236) (cherry picked from commit 8f93cba324e4d4022a9422b8c56186213ba2de8d) --- diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el index 11d400e145a..d7690b7fa74 100644 --- a/lisp/progmodes/compile.el +++ b/lisp/progmodes/compile.el @@ -2644,24 +2644,29 @@ and runs `compilation-filter-hook'." (text-properties-at (1- beg)))) (insert string) ;; If we exceeded the limit, hide the last portion of the line. - (when (> (current-column) width) - (let ((start (save-excursion - (move-to-column width) - (point)))) - (buttonize-region - start (point) - (lambda (start) - (let ((inhibit-read-only t)) - (remove-text-properties start (save-excursion - (goto-char start) - (line-end-position)) - (text-properties-at start))))) - (put-text-property - start (if (= (aref string (1- (length string))) ?\n) - ;; Don't hide the final newline. - (1- (point)) - (point)) - 'display (if (char-displayable-p ?…) "[…]" "[...]")))))) + (let* ((ends-in-nl (= (aref string (1- (length string))) ?\n)) + (curcol (if ends-in-nl + (progn (backward-char) (current-column)) + (current-column)))) + (when (> curcol width) + (let ((start (save-excursion + (move-to-column width) + (point)))) + (buttonize-region + start (point) + (lambda (start) + (let ((inhibit-read-only t)) + (remove-text-properties start (save-excursion + (goto-char start) + (line-end-position)) + (text-properties-at start))))) + (put-text-property + start (if ends-in-nl + ;; Don't hide the final newline. + (1- (point)) + (point)) + 'display (if (char-displayable-p ?…) "[…]" "[...]")))) + (if ends-in-nl (forward-char))))) (defsubst compilation-buffer-internal-p () "Test if inside a compilation buffer."