]> git.eshelyaron.com Git - emacs.git/commitdiff
Improve support for 'display-line-numbers-width-start'
authorEli Zaretskii <eliz@gnu.org>
Fri, 30 Apr 2021 07:28:50 +0000 (10:28 +0300)
committerEli Zaretskii <eliz@gnu.org>
Fri, 30 Apr 2021 07:28:50 +0000 (10:28 +0300)
* lisp/display-line-numbers.el (display-line-numbers-width-start):
Allow the value to be a number.  (Bug#48095)
(display-line-numbers-mode): Handle
'display-line-numbers-width-start' whose value is a number.

lisp/display-line-numbers.el

index a6fa813afe71ca26278225e63d6c014b0c9c93e6..72928492bb214254050acdc0addb7ee23805c702 100644 (file)
@@ -56,12 +56,17 @@ See `display-line-numbers' for value options."
 
 (defcustom display-line-numbers-width-start nil
   "If non-nil, count number of lines to use for line number width.
-When `display-line-numbers-mode' is turned on,
-`display-line-numbers-width' is set to the minimum width necessary
-to display all line numbers in the buffer."
+When `display-line-numbers-mode' is turned on, if this option is
+non-nil, `display-line-numbers-width' is set up front to a width
+necessary to display all line numbers in the buffer.  If the value
+is a positive number, it is interpreted as extra lines to account
+for when computing the required width; this should be set to the
+number of lines in the tallest window in which you want to prevent
+the line-number width from changing."
   :group 'display-line-numbers
-  :type 'boolean
-  :version "26.1")
+  :type '(choice (boolean :tag "Minimum width for buffer's line count")
+                 (integer :tag "Number of extra lines to account for"))
+  :version "28.1")
 
 (defun display-line-numbers-update-width ()
   "Prevent the line number width from shrinking."
@@ -83,7 +88,11 @@ the mode is on, set `display-line-numbers' directly."
         (when display-line-numbers-width-start
           (setq display-line-numbers-width
                 (length (number-to-string
-                         (count-lines (point-min) (point-max))))))
+                         (+ (count-lines (point-min) (point-max))
+                            (if (and (numberp display-line-numbers-width-start)
+                                     (> display-line-numbers-width-start 0))
+                                display-line-numbers-width-start
+                              0))))))
         (when display-line-numbers-grow-only
           (add-hook 'pre-command-hook #'display-line-numbers-update-width nil t))
         (setq display-line-numbers display-line-numbers-type))