diff --git a/core/core-editor.el b/core/core-editor.el index 6f1bf5e9e..8df5381a2 100644 --- a/core/core-editor.el +++ b/core/core-editor.el @@ -215,9 +215,17 @@ extension, try to guess one." (er/contract-region 0))) (advice-add #'evil-escape :before #'doom*quit-expand-region)) -(def-package! help-fns+ ; Improved help commands - :commands (describe-buffer describe-command describe-file - describe-keymap describe-option describe-option-of-type)) +(def-package! helpful + :commands (helpful-callable helpful-function helpful-macro helpful-command + helpful-key helpful-variable helpful-at-point) + :init + (setq counsel-describe-function-function #'helpful-callable + counsel-describe-variable-function #'helpful-variable) + + (global-set-key [remap describe-function] #'helpful-callable) + (global-set-key [remap describe-command] #'helpful-command) + (global-set-key [remap describe-variable] #'helpful-variable) + (global-set-key [remap describe-key] #'helpful-key)) (def-package! pcre2el :commands rxt-quote-pcre) diff --git a/core/packages.el b/core/packages.el index 4b53245d1..a6b3292c4 100644 --- a/core/packages.el +++ b/core/packages.el @@ -27,7 +27,7 @@ (package! command-log-mode) (package! editorconfig) (package! expand-region) -(package! help-fns+) +(package! helpful) (package! pcre2el) (package! smart-forward) (package! smartparens) diff --git a/modules/feature/popup/+hacks.el b/modules/feature/popup/+hacks.el index 1e8ad3170..6c0e92095 100644 --- a/modules/feature/popup/+hacks.el +++ b/modules/feature/popup/+hacks.el @@ -109,7 +109,6 @@ the command buffer." (goto-char (cdr location)) (recenter) (setq origin (selected-window)))) - (+popup/close) (select-window origin))) ;; Help buffers use `pop-to-window' to decide where to open followed links, @@ -141,6 +140,18 @@ the command buffer." (doom--switch-from-popup (find-function-search-for-symbol fun 'defface file))))) +;; `helpful' +(after! helpful + (defun +popup*helpful--navigate (orig-fn &rest args) + (let (origin) + (save-popups! + (apply orig-fn args) + (setq origin (selected-window)) + (recenter)) + (select-window origin))) + (advice-add #'helpful--navigate :around #'+popup*helpful--navigate)) + + ;; `neotree' (after! neotree (advice-add #'neo-util--set-window-width :override #'ignore) diff --git a/modules/feature/popup/config.el b/modules/feature/popup/config.el index eda53a178..8f8d4d917 100644 --- a/modules/feature/popup/config.el +++ b/modules/feature/popup/config.el @@ -150,7 +150,7 @@ ALIST supports one custom parameter: `size', which will resolve to (set! :popup "^\\*Completions" '((slot . -1) (vslot . -2)) '((transient . 0))) (set! :popup "^\\*Compilation" nil '((transient . 0) (quit . t))) (set! :popup "^\\*\\(?:scratch\\|Messages\\)" nil '((transient))) - (set! :popup "^\\*Help" + (set! :popup "^\\*[Hh]elp" '((slot . 2) (vslot . 2) (size . 0.2)) '((select . t))) (set! :popup "^\\*doom \\(?:term\\|eshell\\)" diff --git a/modules/private/default/+bindings.el b/modules/private/default/+bindings.el index 10ee780fc..3fb5b1787 100644 --- a/modules/private/default/+bindings.el +++ b/modules/private/default/+bindings.el @@ -208,6 +208,7 @@ :desc "Find definition" :n "." #'+lookup/definition :desc "Find references" :n "/" #'+lookup/references :desc "Find documentation" :n "h" #'+lookup/documentation + :desc "Describe at point" :n "." #'helpful-at-point :desc "What face" :n "'" #'doom/what-face :desc "What minor modes" :n ";" #'doom/what-minor-mode :desc "Info" :n "i" #'info