[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] master 0aae4c8 04/39: Improve which-key-show-docstrings option
From: |
Justin Burkett |
Subject: |
[elpa] master 0aae4c8 04/39: Improve which-key-show-docstrings option |
Date: |
Thu, 21 Jun 2018 15:48:12 -0400 (EDT) |
branch: master
commit 0aae4c8634f5e282d7b0c2037d291ab926134730
Author: Justin Burkett <address@hidden>
Commit: Justin Burkett <address@hidden>
Improve which-key-show-docstrings option
Add setting docstring-only to omit command names. Add
which-key-docstring-face.
See #185
---
which-key.el | 46 +++++++++++++++++++++++++++++++++-------------
1 file changed, 33 insertions(+), 13 deletions(-)
diff --git a/which-key.el b/which-key.el
index 6ae8b72..1f4bfa1 100644
--- a/which-key.el
+++ b/which-key.el
@@ -218,11 +218,15 @@ only the first match is used to perform replacements from
(defcustom which-key-show-docstrings nil
"If non-nil, show each command's docstring next to the command
in the which-key buffer. This will only display the docstring up
-to the first line break. You probably also want to adjust
-`which-key-max-description-length' at the same time if you use
-this feature."
+to the first line break. If you set this variable to the symbol
+docstring-only, then the command's name with be omitted. You
+probably also want to adjust `which-key-max-description-length'
+at the same time if you use this feature."
:group 'which-key
- :type 'boolean)
+ :type '(radio
+ (const :tag "Do not show docstrings" nil)
+ (const :tag "Add docstring to command names" t)
+ (const :tag "Replace command name with docstring" docstring-only)))
(defcustom which-key-highlighted-command-list '()
"A list of strings and/or cons cells used to highlight certain
@@ -566,6 +570,11 @@ and it matches a string in
`which-key-highlighted-command-list'."
"Face for special keys (SPC, TAB, RET)"
:group 'which-key-faces)
+(defface which-key-docstring-face
+ '((t . (:inherit which-key-note-face)))
+ "Face for docstrings"
+ :group 'which-key-faces)
+
;;;; Custom popup
(defcustom which-key-custom-popup-max-dimensions-function nil
@@ -1574,6 +1583,25 @@ ORIGINAL-DESCRIPTION is the description given by
(match-string 1 key-str)
(car (last (split-string key-str " ")))))))
+(defun which-key--maybe-add-docstring (current original)
+ "Maybe concat a docstring to CURRENT and return result.
+Specifically, do this if ORIGINAL is a command with a docstring
+and `which-key-show-docstrings' is non-nil. If
+`which-key-show-docstrings' is the symbol docstring-only, just
+return the docstring."
+ (let* ((orig-sym (intern original))
+ (doc (when (commandp orig-sym)
+ (documentation orig-sym)))
+ (docstring (when doc
+ (propertize (car (split-string doc "\n"))
+ 'face 'which-key-docstring-face))))
+ (cond ((not (and which-key-show-docstrings docstring))
+ current)
+ ((eq which-key-show-docstrings 'docstring-only)
+ docstring)
+ (t
+ (format "%s %s" current docstring)))))
+
(defun which-key--format-and-replace (unformatted)
"Take a list of (key . desc) cons cells in UNFORMATTED, add
faces and perform replacements according to the three replacement
@@ -1596,15 +1624,7 @@ alists. Returns a list (key separator description)."
(key-binding (which-key--maybe-replace (cons keys orig-desc)))
(final-desc (which-key--propertize-description
(cdr key-binding) group local hl-face orig-desc)))
- (when (and which-key-show-docstrings
- (commandp (intern orig-desc))
- (documentation (intern orig-desc)))
- (setq final-desc
- (format "%s %s"
- final-desc
- (car
- (split-string
- (documentation (intern orig-desc)) "\n")))))
+ (setq final-desc (which-key--maybe-add-docstring final-desc orig-desc))
(when (consp key-binding)
(push
(list (which-key--propertize-key
- [elpa] master updated (81c4a3d -> fb09d75), Justin Burkett, 2018/06/21
- [elpa] master 1dd91df 01/39: Implement #182, Justin Burkett, 2018/06/21
- [elpa] master 1219622 02/39: Remove debugging message, Justin Burkett, 2018/06/21
- [elpa] master c71fbbb 03/39: Add option to show docstrings in which-key buffer, Justin Burkett, 2018/06/21
- [elpa] master fce520f 08/39: Improve which-key--format-and-replace, Justin Burkett, 2018/06/21
- [elpa] master caa18b2 12/39: Fix descriptions of keys involving meta when showing keymaps, Justin Burkett, 2018/06/21
- [elpa] master e5db4b6 07/39: Handle null description in which-key--propertize-description, Justin Burkett, 2018/06/21
- [elpa] master 0aae4c8 04/39: Improve which-key-show-docstrings option,
Justin Burkett <=
- [elpa] master 6a4d2c2 09/39: Extract which-key--ignore-keys-regexp and which-key-show-keymap-1, Justin Burkett, 2018/06/21
- [elpa] master ca991b0 11/39: Autoload the show keymap functions, Justin Burkett, 2018/06/21
- [elpa] master fd714bc 13/39: Fix docstring of which-key--get-keymap-bindings, Justin Burkett, 2018/06/21
- [elpa] master b5f7063 15/39: Detect menu-items in which-key--get-keymap-bindings, Justin Burkett, 2018/06/21
- [elpa] master 5493d22 05/39: Fix description truncation when showing docstrings, Justin Burkett, 2018/06/21
- [elpa] master 2e53187 14/39: Fix typo in previous commit, Justin Burkett, 2018/06/21
- [elpa] master 7da9f8c 16/39: Fix which-key--show-keymap when no bidnings found, Justin Burkett, 2018/06/21
- [elpa] master 3c05294 26/39: Fix which-key--create-pages, Justin Burkett, 2018/06/21
- [elpa] master adc0d66 06/39: Use safe version of propertize, Justin Burkett, 2018/06/21
- [elpa] master 0f80d0f 17/39: Use symbol at point in whow keymap functions, Justin Burkett, 2018/06/21