From 7daa3aaae92f36e9740b13f6d46000cd6e2f69dd Mon Sep 17 00:00:00 2001 From: Steven vanZyl Date: Sat, 26 Sep 2020 11:49:03 -0400 Subject: [PATCH 1/5] Improve fill-column module for 27 Emacs 27 introduced `display-fill-column-indicator-mode` which replaces `hl-fill-column`. This commit adds some conditionals to use `display-fill-column-indicator-mode` on Emacs 27+, or falls back to `hl-fill-column-mode` on older versions. --- modules/ui/fill-column/autoload.el | 11 +++++++---- modules/ui/fill-column/packages.el | 4 +++- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/modules/ui/fill-column/autoload.el b/modules/ui/fill-column/autoload.el index 2aede4639..a96814ea5 100644 --- a/modules/ui/fill-column/autoload.el +++ b/modules/ui/fill-column/autoload.el @@ -1,9 +1,12 @@ ;;; ui/fill-column/autoload.el -*- lexical-binding: t; -*- -;; DEPRECATED Replaced by `display-fill-column-indicator-mode' in Emacs 27+ - ;;;###autoload (autoload 'hl-fill-column-mode "hl-fill-column" nil t) ;;;###autoload -(add-hook! '(text-mode-hook prog-mode-hook conf-mode-hook) - #'hl-fill-column-mode) +;; Emacs 27 introduced `display-fill-column-indicator-mode' which should be +;; used instead of `hl-fill-column-mode' +(if (>= emacs-major-version 27) + (add-hook! '(text-mode-hook prog-mode-hook conf-mode-hook) + #'display-fill-column-indicator-mode) + (add-hook! '(text-mode-hook prog-mode-hook conf-mode-hook) + #'hl-fill-column-mode)) diff --git a/modules/ui/fill-column/packages.el b/modules/ui/fill-column/packages.el index 83e03b79a..d2d48d959 100644 --- a/modules/ui/fill-column/packages.el +++ b/modules/ui/fill-column/packages.el @@ -1,4 +1,6 @@ ;; -*- no-byte-compile: t; -*- ;;; ui/fill-column/packages.el -(package! hl-fill-column :pin "5782a91ba0182c4e562fa0db6379ff9dd472856b") +;; `hl-fill-column' is only used on Emacs versions before 27 +(when (< emacs-major-version 27) + (package! hl-fill-column :pin "5782a91ba0182c4e562fa0db6379ff9dd472856b")) From 5eb03ae45b5508065a4a43f46ac5db64f713fc1e Mon Sep 17 00:00:00 2001 From: Steven vanZyl Date: Sat, 26 Sep 2020 19:30:09 -0400 Subject: [PATCH 2/5] Change fill-column conditionals to use macro The conditionals in the `fill-column` module used the raw version number, this commit changes them to use the macro provided by DOOM. Suggested by @gagbo --- modules/ui/fill-column/autoload.el | 2 +- modules/ui/fill-column/packages.el | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/ui/fill-column/autoload.el b/modules/ui/fill-column/autoload.el index a96814ea5..2f1fb38aa 100644 --- a/modules/ui/fill-column/autoload.el +++ b/modules/ui/fill-column/autoload.el @@ -5,7 +5,7 @@ ;;;###autoload ;; Emacs 27 introduced `display-fill-column-indicator-mode' which should be ;; used instead of `hl-fill-column-mode' -(if (>= emacs-major-version 27) +(if EMACS27+ (add-hook! '(text-mode-hook prog-mode-hook conf-mode-hook) #'display-fill-column-indicator-mode) (add-hook! '(text-mode-hook prog-mode-hook conf-mode-hook) diff --git a/modules/ui/fill-column/packages.el b/modules/ui/fill-column/packages.el index d2d48d959..667e0e7ea 100644 --- a/modules/ui/fill-column/packages.el +++ b/modules/ui/fill-column/packages.el @@ -2,5 +2,5 @@ ;;; ui/fill-column/packages.el ;; `hl-fill-column' is only used on Emacs versions before 27 -(when (< emacs-major-version 27) +(unless EMACS27+ (package! hl-fill-column :pin "5782a91ba0182c4e562fa0db6379ff9dd472856b")) From f96b2310dfceae46d21c4aa55ac078221c516b2c Mon Sep 17 00:00:00 2001 From: Steven vanZyl Date: Sat, 26 Sep 2020 19:40:02 -0400 Subject: [PATCH 3/5] Add keybinding to toggle fill column indicator Added a keybinding to the Toggles menu to toggle the fill column indicator if the `fill-column` module is enabled. The keybind is `SPC t c`. Suggested by lunik1 on Discord --- modules/config/default/+emacs-bindings.el | 4 ++++ modules/config/default/+evil-bindings.el | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/modules/config/default/+emacs-bindings.el b/modules/config/default/+emacs-bindings.el index ba3034287..78bc96cf9 100644 --- a/modules/config/default/+emacs-bindings.el +++ b/modules/config/default/+emacs-bindings.el @@ -266,6 +266,10 @@ ;;; t --- toggle (:prefix-map ("t" . "toggle") :desc "Big mode" "b" #'doom-big-font-mode + (:when (and (featurep! :ui fill-column) EMACS27+) + :desc "Fill Column Indicator" "c" #'display-fill-column-indicator-mode) + (:when (and (featurep! :ui fill-column) (not EMACS27+)) + :desc "Fill Column Indicator" "c" #'hl-fill-column-mode) :desc "Flymake" "f" #'flymake-mode :desc "Frame fullscreen" "F" #'toggle-frame-fullscreen :desc "Indent style" "I" #'doom/toggle-indent-style diff --git a/modules/config/default/+evil-bindings.el b/modules/config/default/+evil-bindings.el index 9a98d39b7..bbdf4fba6 100644 --- a/modules/config/default/+evil-bindings.el +++ b/modules/config/default/+evil-bindings.el @@ -650,6 +650,10 @@ ;;; t --- toggle (:prefix-map ("t" . "toggle") :desc "Big mode" "b" #'doom-big-font-mode + (:when (and (featurep! :ui fill-column) EMACS27+) + :desc "Fill Column Indicator" "c" #'display-fill-column-indicator-mode) + (:when (and (featurep! :ui fill-column) (not EMACS27+)) + :desc "Fill Column Indicator" "c" #'hl-fill-column-mode) :desc "Flymake" "f" #'flymake-mode (:when (featurep! :checkers syntax) :desc "Flycheck" "f" #'flycheck-mode) From 67c1e7c3f9610b8971bcd2b1b015e9dc72ece40b Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sun, 4 Oct 2020 23:25:53 -0400 Subject: [PATCH 4/5] Bump :ui Alexander-Miller/treemacs@027e03b -> Alexander-Miller/treemacs@6c00fe7 Bad-ptr/persp-mode.el@14325c1 -> Bad-ptr/persp-mode.el@c132efe DarthFennec/highlight-indent-guides@a4f7714 -> DarthFennec/highlight-indent-guides@cf352c8 dimitri/switch-window@8710f63 -> dimitri/switch-window@277706b ema2159/centaur-tabs@7e0332b -> ema2159/centaur-tabs@5453317 emacs-straight/minimap@d8850be -> emacs-straight/minimap@37a0200 hlissner/emacs-doom-themes@24023de -> hlissner/emacs-doom-themes@d6ee47d hlissner/emacs-solaire-mode@cd63b67 -> hlissner/emacs-solaire-mode@d751c1c jabranham/mixed-pitch@1cad46f -> jabranham/mixed-pitch@d305108 seagle0128/doom-modeline@ffbaaee -> seagle0128/doom-modeline@538017a Fix #4023 --- modules/ui/doom/packages.el | 4 ++-- modules/ui/indent-guides/packages.el | 2 +- modules/ui/minimap/packages.el | 2 +- modules/ui/modeline/packages.el | 2 +- modules/ui/tabs/packages.el | 2 +- modules/ui/treemacs/packages.el | 2 +- modules/ui/window-select/packages.el | 2 +- modules/ui/workspaces/packages.el | 2 +- modules/ui/zen/packages.el | 2 +- 9 files changed, 10 insertions(+), 10 deletions(-) diff --git a/modules/ui/doom/packages.el b/modules/ui/doom/packages.el index 7d74eb69d..357dadcbe 100644 --- a/modules/ui/doom/packages.el +++ b/modules/ui/doom/packages.el @@ -1,5 +1,5 @@ ;; -*- no-byte-compile: t; -*- ;;; ui/doom/packages.el -(package! doom-themes :pin "24023de3c80c9f3afc3d012762d1ef0f8dbd326e") -(package! solaire-mode :pin "cd63b675140232f399e7733d7ce95a0b931b1058") +(package! doom-themes :pin "d6ee47dc8ed2cf9e585f62243214af03ba5b1687") +(package! solaire-mode :pin "d751c1c4e97fe6a57740be4da74a2f4b77e3d96d") diff --git a/modules/ui/indent-guides/packages.el b/modules/ui/indent-guides/packages.el index 08105150a..b305d6e75 100644 --- a/modules/ui/indent-guides/packages.el +++ b/modules/ui/indent-guides/packages.el @@ -1,4 +1,4 @@ ;; -*- no-byte-compile: t; -*- ;;; ui/indent-guides/packages.el -(package! highlight-indent-guides :pin "a4f771418e4eed1f3f7879a43af28cf97747d41c") +(package! highlight-indent-guides :pin "cf352c85cd15dd18aa096ba9d9ab9b7ab493e8f6") diff --git a/modules/ui/minimap/packages.el b/modules/ui/minimap/packages.el index ee936e23a..db80715ea 100644 --- a/modules/ui/minimap/packages.el +++ b/modules/ui/minimap/packages.el @@ -1,4 +1,4 @@ ;; -*- no-byte-compile: t; -*- ;;; ui/minimap/packages.el -(package! minimap :pin "d8850be6fb7b3dbff0cd9b5a04d10a6dcc527326") +(package! minimap :pin "37a0200b0ca5d7a9f9fb545d4011324ed0512fbd") diff --git a/modules/ui/modeline/packages.el b/modules/ui/modeline/packages.el index fb6cc0dac..536b8c470 100644 --- a/modules/ui/modeline/packages.el +++ b/modules/ui/modeline/packages.el @@ -2,7 +2,7 @@ ;;; ui/modeline/packages.el (unless (featurep! +light) - (package! doom-modeline :pin "ffbaaee832f1c97ff608bc4959b408997d959b7d")) + (package! doom-modeline :pin "538017a399cb7b499853bdaf50928ca8b270693d")) (package! anzu :pin "7b8688c84d6032300d0c415182c7c1ad6cb7f819") (when (featurep! :editor evil) (package! evil-anzu :pin "d3f6ed4773b48767bd5f4708c7f083336a8a8a86")) diff --git a/modules/ui/tabs/packages.el b/modules/ui/tabs/packages.el index 1f4d6178e..aafa0e5a0 100644 --- a/modules/ui/tabs/packages.el +++ b/modules/ui/tabs/packages.el @@ -1,4 +1,4 @@ ;; -*- no-byte-compile: t; -*- ;;; ui/tabs/packages.el -(package! centaur-tabs :pin "7e0332b138f836b9d0b6d2134310f53369598cfd") +(package! centaur-tabs :pin "5453317b6b9f68bfbd934eee3b883207bfa331e0") diff --git a/modules/ui/treemacs/packages.el b/modules/ui/treemacs/packages.el index c1f7afbc2..bb2ce8563 100644 --- a/modules/ui/treemacs/packages.el +++ b/modules/ui/treemacs/packages.el @@ -1,7 +1,7 @@ ;; -*- no-byte-compile: t; -*- ;;; ui/treemacs/packages.el -(package! treemacs :pin "027e03b6fac5c0a870440d27c35d53bbe0215d81") +(package! treemacs :pin "6c00fe74079a057ad4efc772eab9d73e4f09fa10") ;; These packages have no :pin because they're in the same repo (when (featurep! :editor evil +everywhere) (package! treemacs-evil)) diff --git a/modules/ui/window-select/packages.el b/modules/ui/window-select/packages.el index 42a5e241a..c2a65ca67 100644 --- a/modules/ui/window-select/packages.el +++ b/modules/ui/window-select/packages.el @@ -2,7 +2,7 @@ ;;; ui/window-select/packages.el (if (featurep! +switch-window) - (package! switch-window :pin "8710f6304d843365fb59b6efe7e1f729d14e557c") + (package! switch-window :pin "277706b863c05b3931925ee9dae8970d605bf061") (package! ace-window :pin "c7cb315c14e36fded5ac4096e158497ae974bec9")) (when (featurep! +numbers) diff --git a/modules/ui/workspaces/packages.el b/modules/ui/workspaces/packages.el index 0e0afdad5..b5f025787 100644 --- a/modules/ui/workspaces/packages.el +++ b/modules/ui/workspaces/packages.el @@ -1,4 +1,4 @@ ;; -*- no-byte-compile: t; -*- ;;; ui/workspaces/packages.el -(package! persp-mode :pin "14325c11f7a347717d7c3780f29b24a38c68fbfc") +(package! persp-mode :pin "c132efe3094ce1368f54195028b29b82c65a64dc") diff --git a/modules/ui/zen/packages.el b/modules/ui/zen/packages.el index fc23a8004..ae10e3c07 100644 --- a/modules/ui/zen/packages.el +++ b/modules/ui/zen/packages.el @@ -2,4 +2,4 @@ ;;; ui/zen/packages.el (package! writeroom-mode :pin "8a226a31a12a9203067094774ba6fd6175793e70") -(package! mixed-pitch :pin "1cad46fddf741ed7ec5fc477d70e079e908e9ce6") +(package! mixed-pitch :pin "d305108f9520e196b533f05d1dcc284cf535faaf") From 3f28411f643c4cd4d55cb0e6fe8477266ac1d997 Mon Sep 17 00:00:00 2001 From: Steven vanZyl Date: Mon, 5 Oct 2020 10:08:51 -0400 Subject: [PATCH 5/5] Use delegate function As suggested by Henrik I changed it to use a delegate function, which reduces code duplication and makes things cleaner --- modules/config/default/+emacs-bindings.el | 6 ++---- modules/config/default/+evil-bindings.el | 6 ++---- modules/ui/fill-column/autoload.el | 14 +++++++++----- modules/ui/fill-column/packages.el | 4 ++-- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/modules/config/default/+emacs-bindings.el b/modules/config/default/+emacs-bindings.el index 78bc96cf9..f44db782e 100644 --- a/modules/config/default/+emacs-bindings.el +++ b/modules/config/default/+emacs-bindings.el @@ -266,10 +266,8 @@ ;;; t --- toggle (:prefix-map ("t" . "toggle") :desc "Big mode" "b" #'doom-big-font-mode - (:when (and (featurep! :ui fill-column) EMACS27+) - :desc "Fill Column Indicator" "c" #'display-fill-column-indicator-mode) - (:when (and (featurep! :ui fill-column) (not EMACS27+)) - :desc "Fill Column Indicator" "c" #'hl-fill-column-mode) + (:when (featurep! :ui fill-column) + :desc "Fill Column Indicator" "c" #'+fill-column-enable-h) :desc "Flymake" "f" #'flymake-mode :desc "Frame fullscreen" "F" #'toggle-frame-fullscreen :desc "Indent style" "I" #'doom/toggle-indent-style diff --git a/modules/config/default/+evil-bindings.el b/modules/config/default/+evil-bindings.el index bbdf4fba6..403851ac4 100644 --- a/modules/config/default/+evil-bindings.el +++ b/modules/config/default/+evil-bindings.el @@ -650,10 +650,8 @@ ;;; t --- toggle (:prefix-map ("t" . "toggle") :desc "Big mode" "b" #'doom-big-font-mode - (:when (and (featurep! :ui fill-column) EMACS27+) - :desc "Fill Column Indicator" "c" #'display-fill-column-indicator-mode) - (:when (and (featurep! :ui fill-column) (not EMACS27+)) - :desc "Fill Column Indicator" "c" #'hl-fill-column-mode) + (:when (featurep! :ui fill-column) + :desc "Fill Column Indicator" "c" #'+fill-column-enable-h) :desc "Flymake" "f" #'flymake-mode (:when (featurep! :checkers syntax) :desc "Flycheck" "f" #'flycheck-mode) diff --git a/modules/ui/fill-column/autoload.el b/modules/ui/fill-column/autoload.el index 2f1fb38aa..cb2e595bf 100644 --- a/modules/ui/fill-column/autoload.el +++ b/modules/ui/fill-column/autoload.el @@ -5,8 +5,12 @@ ;;;###autoload ;; Emacs 27 introduced `display-fill-column-indicator-mode' which should be ;; used instead of `hl-fill-column-mode' -(if EMACS27+ - (add-hook! '(text-mode-hook prog-mode-hook conf-mode-hook) - #'display-fill-column-indicator-mode) - (add-hook! '(text-mode-hook prog-mode-hook conf-mode-hook) - #'hl-fill-column-mode)) +(defun +fill-column-enable-h (&optional arg) + (interactive "p") + (if (fboundp 'display-fill-column-indicator-mode) + (display-fill-column-indicator-mode arg) + (hl-fill-column-mode arg))) + +;;;###autoload +(add-hook! '(text-mode-hook prog-mode-hook conf-mode-hook) + #'+fill-column-enable-h) diff --git a/modules/ui/fill-column/packages.el b/modules/ui/fill-column/packages.el index 667e0e7ea..12420f96a 100644 --- a/modules/ui/fill-column/packages.el +++ b/modules/ui/fill-column/packages.el @@ -2,5 +2,5 @@ ;;; ui/fill-column/packages.el ;; `hl-fill-column' is only used on Emacs versions before 27 -(unless EMACS27+ - (package! hl-fill-column :pin "5782a91ba0182c4e562fa0db6379ff9dd472856b")) +(unless (fboundp 'display-fill-column-indicator-mode) + (package! hl-fill-column :pin "5782a91ba0182c4e562fa0db6379ff9dd472856b"))