From: Eli Zaretskii Date: Fri, 30 Apr 2021 07:28:50 +0000 (+0300) Subject: Improve support for 'display-line-numbers-width-start' X-Git-Tag: emacs-28.0.90~2666 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=2a38a2c8757b2fa01d9a846af67546c63122bba3;p=emacs.git Improve support for 'display-line-numbers-width-start' * 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. --- diff --git a/lisp/display-line-numbers.el b/lisp/display-line-numbers.el index a6fa813afe7..72928492bb2 100644 --- a/lisp/display-line-numbers.el +++ b/lisp/display-line-numbers.el @@ -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))