From b54ea8ef900e876a8715d54eed0f577fe93b38f4 Mon Sep 17 00:00:00 2001 From: bmag Date: Wed, 27 Jun 2018 09:13:21 +0300 Subject: [PATCH] line-nums: don't default to text/prog-mode if disabled by user When :enabled-for-modes is nil we default it to '(prog-mode text-mode), but if any of them is in :disabled-for-modes then it shouldn't be enabled by default. This commit fixes the second part. --- layers/+spacemacs/spacemacs-defaults/funcs.el | 20 +++++++++++-------- .../spacemacs-base/line-numbers-utest.el | 5 +++++ 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/layers/+spacemacs/spacemacs-defaults/funcs.el b/layers/+spacemacs/spacemacs-defaults/funcs.el index 20ac29418846..6c9bdb796cff 100644 --- a/layers/+spacemacs/spacemacs-defaults/funcs.el +++ b/layers/+spacemacs/spacemacs-defaults/funcs.el @@ -1346,14 +1346,18 @@ Decision is based on `dotspacemacs-line-numbers'." ;; for the different possible cases (defun spacemacs//linum-enabled-for-current-major-mode () "Return non-nil if line number is enabled for current major-mode." - ;; default `enabled-for-modes' to '(prog-mode text-mode), because it is a more - ;; sensible default than enabling in all buffers - including Magit buffers, - ;; terminal buffers, etc. - (let* ((user-enabled-for-modes (spacemacs/mplist-get-values dotspacemacs-line-numbers - :enabled-for-modes)) - (enabled-for-modes (or user-enabled-for-modes '(prog-mode text-mode))) - (disabled-for-modes (spacemacs/mplist-get-values dotspacemacs-line-numbers - :disabled-for-modes)) + (let* ((disabled-for-modes (spacemacs/mplist-get-values dotspacemacs-line-numbers + :disabled-for-modes)) + (user-enabled-for-modes (spacemacs/mplist-get-values dotspacemacs-line-numbers + :enabled-for-modes)) + ;; default `enabled-for-modes' to '(prog-mode text-mode), because it is + ;; a more sensible default than enabling in all buffers - including + ;; Magit buffers, terminal buffers, etc. But don't include prog-mode or + ;; text-mode if they're explicitly disabled by user + (enabled-for-modes (or user-enabled-for-modes + (seq-difference '(prog-mode text-mode) + disabled-for-modes + #'eq))) (enabled-for-parent (or (and (equal enabled-for-modes '(all)) 'all) (apply #'derived-mode-p enabled-for-modes))) (disabled-for-parent (apply #'derived-mode-p disabled-for-modes))) diff --git a/tests/layers/+distribution/spacemacs-base/line-numbers-utest.el b/tests/layers/+distribution/spacemacs-base/line-numbers-utest.el index c13f4e032c82..0092a7fb101e 100644 --- a/tests/layers/+distribution/spacemacs-base/line-numbers-utest.el +++ b/tests/layers/+distribution/spacemacs-base/line-numbers-utest.el @@ -51,3 +51,8 @@ :disabled-for-modes linum-test-parent1))) (should-not (test--enable-linum-for-mode 'linum-test-mode1)) (should (test--enable-linum-for-mode 'linum-test-mode2)))) + +(ert-deftest test-enable-linum-for-mode--9 () + (let ((dotspacemacs-line-numbers '(:disabled-for-modes text-mode))) + (should-not (test--enable-linum-for-mode 'text-mode)) + (should (test--enable-linum-for-mode 'prog-mode))))