Change doom/toggle-line-numbers to cycle styles #376
Also fixes doom/toggle-line-numbers when doom-line-numbers-style is nil.
This commit is contained in:
parent
1fda25ce9a
commit
01787fc876
2 changed files with 37 additions and 27 deletions
|
@ -9,21 +9,34 @@
|
||||||
(unless (frame-parameter nil 'fullscreen)
|
(unless (frame-parameter nil 'fullscreen)
|
||||||
'fullboth)))
|
'fullboth)))
|
||||||
|
|
||||||
|
(defvar doom--line-number-style doom-line-numbers-style)
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun doom/toggle-line-numbers (&optional arg)
|
(defun doom/toggle-line-numbers ()
|
||||||
"Toggle `linum-mode'."
|
"Toggle line numbers.
|
||||||
(interactive "P")
|
|
||||||
(cond ((boundp 'display-line-numbers)
|
Cycles through regular, relative and no line numbers. The order depends on what
|
||||||
(setq display-line-numbers
|
`doom-line-numbers-style' is set to.
|
||||||
(pcase arg
|
|
||||||
('(4) 'relative)
|
Uses `display-line-numbers' in Emacs 26+ and `nlinum-mode' everywhere else."
|
||||||
(1 t)
|
(interactive)
|
||||||
(-1 nil)
|
(let* ((order (pcase doom-line-numbers-style
|
||||||
(_ (not display-line-numbers)))))
|
(`relative '(relative t nil))
|
||||||
((featurep 'nlinum)
|
(`t '(t relative nil))
|
||||||
(nlinum-mode (or arg (if nlinum-mode -1 +1))))
|
(`nil '(nil t relative))))
|
||||||
(t
|
(queue (memq doom--line-number-style order))
|
||||||
(error "No line number plugin detected"))))
|
(next (if (= (length queue) 1)
|
||||||
|
(car order)
|
||||||
|
(car (cdr queue)))))
|
||||||
|
(setq doom--line-number-style next)
|
||||||
|
(cond ((boundp 'display-line-numbers)
|
||||||
|
(setq display-line-numbers next))
|
||||||
|
((featurep 'nlinum)
|
||||||
|
(pcase next
|
||||||
|
(`t (nlinum-relative-mode -1) (nlinum-mode +1))
|
||||||
|
(`relative (nlinum-relative-mode +1))
|
||||||
|
(`nil (nlinum-mode -1))))
|
||||||
|
(t
|
||||||
|
(error "No line number plugin detected")))))
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun doom-resize-window (window new-size &optional horizontal force-p)
|
(defun doom-resize-window (window new-size &optional horizontal force-p)
|
||||||
|
|
|
@ -319,13 +319,15 @@ DEFAULT is non-nil, set the default mode-line for all buffers."
|
||||||
;;
|
;;
|
||||||
|
|
||||||
(defvar doom-line-numbers-style t
|
(defvar doom-line-numbers-style t
|
||||||
"The style to use for the line number display.
|
"The default styles to use for the line number display.
|
||||||
|
|
||||||
Accepts the same arguments as `display-line-numbers', which are:
|
Takes the same argument as `display-line-numbers' in Emacs 26, which are:
|
||||||
|
|
||||||
nil No line numbers
|
nil No line numbers
|
||||||
t Ordinary line numbers
|
t Ordinary line numbers
|
||||||
'relative Relative line numbers")
|
'relative Relative line numbers
|
||||||
|
|
||||||
|
Use `doom/toggle-line-numbers' to cycle between these line number styles.")
|
||||||
|
|
||||||
(defun doom|enable-line-numbers (&optional arg)
|
(defun doom|enable-line-numbers (&optional arg)
|
||||||
"Enables the display of line numbers, using `display-line-numbers' (in Emacs
|
"Enables the display of line numbers, using `display-line-numbers' (in Emacs
|
||||||
|
@ -333,13 +335,9 @@ t Ordinary line numbers
|
||||||
|
|
||||||
See `doom-line-numbers-style' to control the style of line numbers to display."
|
See `doom-line-numbers-style' to control the style of line numbers to display."
|
||||||
(cond ((boundp 'display-line-numbers)
|
(cond ((boundp 'display-line-numbers)
|
||||||
(setq display-line-numbers
|
(setq display-line-numbers (unless (eq arg -1) doom-line-numbers-style)))
|
||||||
(pcase arg
|
|
||||||
(+1 doom-line-numbers-style)
|
|
||||||
(-1 nil)
|
|
||||||
(_ doom-line-numbers-style))))
|
|
||||||
((eq doom-line-numbers-style 'relative)
|
((eq doom-line-numbers-style 'relative)
|
||||||
(if (= arg -1)
|
(if (eq arg -1)
|
||||||
(nlinum-relative-off)
|
(nlinum-relative-off)
|
||||||
(nlinum-relative-on)))
|
(nlinum-relative-on)))
|
||||||
((not (null doom-line-numbers-style))
|
((not (null doom-line-numbers-style))
|
||||||
|
@ -418,8 +416,7 @@ character that looks like a space that `whitespace-mode' won't affect.")
|
||||||
(def-package! nlinum-relative
|
(def-package! nlinum-relative
|
||||||
:unless (boundp 'display-line-numbers)
|
:unless (boundp 'display-line-numbers)
|
||||||
:commands nlinum-relative-mode
|
:commands nlinum-relative-mode
|
||||||
:config
|
:config (after! evil (nlinum-relative-setup-evil)))
|
||||||
(after! evil (nlinum-relative-setup-evil)))
|
|
||||||
|
|
||||||
|
|
||||||
;;
|
;;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue