diff --git a/core/autoload/ui.el b/core/autoload/ui.el index 6ef70992e..112c7f1d0 100644 --- a/core/autoload/ui.el +++ b/core/autoload/ui.el @@ -5,36 +5,31 @@ "Toggle line numbers. Cycles through regular, relative and no line numbers. The order depends on what -`doom-line-numbers-style' is set to. +`display-line-numbers-type' is set to. If you're using Emacs 26+, and +visual-line-mode is on, this skips relative and uses visual instead. -Uses `display-line-numbers' in Emacs 26+ and `nlinum-mode' everywhere else." +See `display-line-numbers' for what these values mean." (interactive) - (defvar doom--line-number-style doom-line-numbers-style) - (let* ((styles '(t relative nil)) - (order (cons doom-line-numbers-style (delq doom-line-numbers-style styles))) - (queue (memq doom--line-number-style order)) - (next (if (= (length queue) 1) - (car order) - (car (cdr queue))))) - (setq doom--line-number-style next) - (cond ((boundp 'display-line-numbers) - (when (and (eq next 'relative) - doom-line-numbers-visual-style) - (setq next 'visual)) - (setq display-line-numbers next)) - ((featurep 'nlinum) - (pcase next - (`t (nlinum-relative-off) (nlinum-mode +1)) - (`relative (nlinum-relative-on)) - (`nil (nlinum-mode -1)))) - (t - (error "No line number plugin detected"))) - (message "Switched to %s line numbers" - (pcase next - (`t "normal") - (`relative "relative") - (`visual "visual") - (`nil "disabled"))))) + (defvar doom--line-number-style display-line-numbers-type) + (let ((nlinum-p (get 'display-line-numbers 'nlinum))) + (let* ((styles `(t ,(if (and (not nlinum-p) visual-line-mode) 'visual 'relative) nil)) + (order (cons display-line-numbers-type (remq display-line-numbers-type styles))) + (queue (memq doom--line-number-style order)) + (next (if (= (length queue) 1) + (car order) + (car (cdr queue))))) + (setq doom--line-number-style next) + (if (get 'display-line-numbers 'nlinum) + (pcase next + (`t (nlinum-relative-off) (nlinum-mode +1)) + (`relative (nlinum-relative-on)) + (`nil (nlinum-mode -1))) + (setq display-line-numbers next)) + (message "Switched to %s line numbers" + (pcase next + (`t "normal") + (`nil "disabled") + (x (symbol-name next))))))) ;;;###autoload (defun doom-resize-window (window new-size &optional horizontal force-p)