branch: master commit 8e7295b93460b7d389ecb65969fcedbee6495de8 Author: Joao Tavora <joaotav...@gmail.com> Commit: Joao Tavora <joaotav...@gmail.com>
Closes #403: more uniform behaviour for `yas-use-menu' Suggested by Noam Postavsky, this uses the :visible arg to `easy-menu-define' to hide the whole "YASnippet" menu according to the run-time value of `yas-use-menu'. Previously, only the load-time value was considered and some functions we're noops when `yas-use-menu' was nil. The per-mode snippet submenus are now always updated even if `yas-use-menu' is nil, although they won't be shown until it becomes non-nil. * yasnippet.el (yas--minor-mode-menu): Use :visible arg and eval `yas-use-menu' (yas--update-template): Always update the menu. (yas--show-menu-p): Always return t if `yas-use-menu' is non-nil and not `abbreviate' (yas-define-menu): Always define a menu. (yas-use-menu): Update docstring. --- yasnippet.el | 45 ++++++++++++++++++++------------------------- 1 files changed, 20 insertions(+), 25 deletions(-) diff --git a/yasnippet.el b/yasnippet.el index 50a6e4b..252083a 100644 --- a/yasnippet.el +++ b/yasnippet.el @@ -313,6 +313,8 @@ menu and the modes set in `yas--extra-modes' are listed. - If set to `full', every submenu is listed +- If set to `nil', hide the menu. + Any other non-nil value, every submenu is listed." :type '(choice (const :tag "Full" full) (const :tag "Abbreviate" abbreviate) @@ -546,7 +548,7 @@ snippet itself contains a condition that returns the symbol (easy-menu-define yas--minor-mode-menu yas-minor-mode-map "Menu used when `yas-minor-mode' is active." - '("YASnippet" + '("YASnippet" :visible yas-use-menu "----" ["Expand trigger" yas-expand :help "Possibly expand tab trigger before point"] @@ -1063,8 +1065,7 @@ Also takes care of adding and updating to the associated menu." (yas--add-template table template) ;; Take care of the menu ;; - (when yas-use-menu - (yas--update-template-menu table template))) + (yas--update-template-menu table template)) (defun yas--update-template-menu (table template) "Update every menu-related for TEMPLATE." @@ -1976,10 +1977,7 @@ static in the menu." (mapcar #'(lambda (table) (yas--table-mode table)) (yas--get-snippet-tables)))) - ((eq yas-use-menu 'full) - t) - ((eq yas-use-menu t) - t))) + (yas-use-menu t))) (defun yas--delete-from-keymap (keymap uuid) "Recursively delete items with UUID from KEYMAP and its submenus." @@ -2022,24 +2020,21 @@ MENU is a list, its elements can be: list of groups of the snippets defined thereafter. OMIT-ITEMS is a list of snippet uuid's that will always be -omitted from MODE's menu, even if they're manually loaded. - -This function does nothing if `yas-use-menu' is nil." - (when yas-use-menu - (let* ((table (yas--table-get-create mode)) - (hash (yas--table-uuidhash table))) - (yas--define-menu-1 table - (yas--menu-keymap-get-create mode) - menu - hash) - (dolist (uuid omit-items) - (let ((template (or (gethash uuid hash) - (yas--populate-template (puthash uuid - (yas--make-blank-template) - hash) - :table table - :uuid uuid)))) - (setf (yas--template-menu-binding-pair template) (cons nil :none))))))) +omitted from MODE's menu, even if they're manually loaded." + (let* ((table (yas--table-get-create mode)) + (hash (yas--table-uuidhash table))) + (yas--define-menu-1 table + (yas--menu-keymap-get-create mode) + menu + hash) + (dolist (uuid omit-items) + (let ((template (or (gethash uuid hash) + (yas--populate-template (puthash uuid + (yas--make-blank-template) + hash) + :table table + :uuid uuid)))) + (setf (yas--template-menu-binding-pair template) (cons nil :none)))))) (defun yas--define-menu-1 (table menu-keymap menu uuidhash &optional group-list) "Helper for `yas-define-menu'."