Support yas/ symbols in yas-define-menu

These symbols were overlooked in backporting because they're not bound
or fbound.

* yasnippet.el (yas--define-menu-1): Rewrite with `cl-loop', and support
yas/ prefixed symbols.
This commit is contained in:
Noam Postavsky 2016-07-19 20:23:12 -04:00
parent 244cdfa53b
commit 5af9276f21

View File

@ -2075,31 +2075,37 @@ omitted from MODE's menu, even if they're manually loaded."
(defun yas--define-menu-1 (table menu-keymap menu uuidhash &optional group-list) (defun yas--define-menu-1 (table menu-keymap menu uuidhash &optional group-list)
"Helper for `yas-define-menu'." "Helper for `yas-define-menu'."
(dolist (e (reverse menu)) (cl-loop
(cond ((eq (first e) 'yas-item) for (type name submenu) in (reverse menu)
(let ((template (or (gethash (second e) uuidhash) if (or (eq type 'yas-item)
(puthash (second e) (and yas-alias-to-yas/prefix-p
(eq type 'yas/item)))
do (let ((template (or (gethash name uuidhash)
(puthash name
(yas--make-template (yas--make-template
:table table :table table
:perm-group group-list :perm-group group-list
:uuid (second e)) :uuid name)
uuidhash)))) uuidhash))))
(define-key menu-keymap (vector (gensym)) (define-key menu-keymap (vector (gensym))
(car (yas--template-menu-binding-pair-get-create template :stay))))) (car (yas--template-menu-binding-pair-get-create template :stay))))
((eq (first e) 'yas-submenu) else if (or (eq type 'yas-submenu)
(let ((subkeymap (make-sparse-keymap))) (and yas-alias-to-yas/prefix-p
(eq type 'yas/submenu)))
do (let ((subkeymap (make-sparse-keymap)))
(define-key menu-keymap (vector (gensym)) (define-key menu-keymap (vector (gensym))
`(menu-item ,(second e) ,subkeymap)) `(menu-item ,name ,subkeymap))
(yas--define-menu-1 table (yas--define-menu-1 table
subkeymap subkeymap
(third e) submenu
uuidhash uuidhash
(append group-list (list (second e)))))) (append group-list (list name))))
((eq (first e) 'yas-separator) else if (or (eq type 'yas-separator)
(define-key menu-keymap (vector (gensym)) (and yas-alias-to-yas/prefix-p
'(menu-item "----"))) (eq type 'yas/separator)))
(t do (define-key menu-keymap (vector (gensym))
(yas--message 1 "Don't know anything about menu entry %s" (first e)))))) '(menu-item "----"))
else do (yas--message 1 "Don't know anything about menu entry %s" type)))
(defun yas--define (mode key template &optional name condition group) (defun yas--define (mode key template &optional name condition group)
"Define a snippet. Expanding KEY into TEMPLATE. "Define a snippet. Expanding KEY into TEMPLATE.