mirror of
https://github.com/joaotavora/yasnippet.git
synced 2025-10-13 21:13:04 +00:00
* Corrected some little snippet loading bugs
* Removed the indentation hack introduced by the previous rev because it looks dangerous and there are better ways. * Direct keybindings display correctly in menu. * Preparing to fix the yas/snippet-keymaps bug which is basically the same as autopair.el's issue.
This commit is contained in:
parent
3d4d06df1d
commit
73bad7366f
31
yasnippet.el
31
yasnippet.el
@ -764,7 +764,12 @@ Key bindings:
|
|||||||
;; Install the direct keymaps in `emulation-mode-map-alists'
|
;; Install the direct keymaps in `emulation-mode-map-alists'
|
||||||
;; (we use `add-hook' even though it's not technically a hook,
|
;; (we use `add-hook' even though it's not technically a hook,
|
||||||
;; but it works). Then define variables named after modes to
|
;; but it works). Then define variables named after modes to
|
||||||
;; index `yas/snippet-keymaps'.
|
;; index `yas/snippet-keymaps'.
|
||||||
|
;;
|
||||||
|
;; FIXME: this is quite wrong and breaks cua-mode for
|
||||||
|
;; example. It is either `yas/snippet-keymaps' that needs to
|
||||||
|
;; have a buffer-local value, or those little indicator vars
|
||||||
|
;; need to be set and unset buffer-locally (preferred).
|
||||||
;;
|
;;
|
||||||
(add-hook 'emulation-mode-map-alists 'yas/snippet-keymaps nil 'local)
|
(add-hook 'emulation-mode-map-alists 'yas/snippet-keymaps nil 'local)
|
||||||
(let ((modes-to-activate (list major-mode))
|
(let ((modes-to-activate (list major-mode))
|
||||||
@ -1776,7 +1781,11 @@ not need to be a real mode."
|
|||||||
;;
|
;;
|
||||||
(when keybinding
|
(when keybinding
|
||||||
(condition-case err
|
(condition-case err
|
||||||
(setq keybinding (read-kbd-macro (read (eighth snippet)) 'need-vector))
|
(let ((keybinding-string (or (and (string-match "\".*\"" (eighth snippet))
|
||||||
|
(read (eighth snippet)))
|
||||||
|
;; "KEY-DESC" with quotes is deprecated..., but supported
|
||||||
|
(eighth snippet))))
|
||||||
|
(setq keybinding (read-kbd-macro keybinding-string 'need-vector)))
|
||||||
(error
|
(error
|
||||||
(message "[yas] warning: keybinding \"%s\" invalid for snippet \"%s\" since %s."
|
(message "[yas] warning: keybinding \"%s\" invalid for snippet \"%s\" since %s."
|
||||||
keybinding name (error-message-string err))
|
keybinding name (error-message-string err))
|
||||||
@ -1831,8 +1840,9 @@ not need to be a real mode."
|
|||||||
`(menu-item ,(yas/template-name template)
|
`(menu-item ,(yas/template-name template)
|
||||||
,(yas/make-menu-binding template)
|
,(yas/make-menu-binding template)
|
||||||
:help ,name
|
:help ,name
|
||||||
:keys ,(when (and key name)
|
:keys ,(or (and key name
|
||||||
(concat key yas/trigger-symbol))))))))))
|
(concat key yas/trigger-symbol))
|
||||||
|
(and keybinding (key-description keybinding)))))))))))
|
||||||
|
|
||||||
(defun yas/show-menu-p (mode)
|
(defun yas/show-menu-p (mode)
|
||||||
(cond ((eq yas/use-menu 'abbreviate)
|
(cond ((eq yas/use-menu 'abbreviate)
|
||||||
@ -2216,6 +2226,9 @@ there, otherwise, proposes to create the first option returned by
|
|||||||
(let* ((file-dir (and file
|
(let* ((file-dir (and file
|
||||||
(directory-file-name (or (locate-dominating-file file ".yas-make-groups")
|
(directory-file-name (or (locate-dominating-file file ".yas-make-groups")
|
||||||
(directory-file-name (file-name-directory file))))))
|
(directory-file-name (file-name-directory file))))))
|
||||||
|
(extra-parents-file-name (concat file-dir "/.yas-parents"))
|
||||||
|
(no-hierarchy-parents (or no-hierarchy-parents
|
||||||
|
(file-readable-p extra-parents-file-name)))
|
||||||
(major-mode-name (and file-dir
|
(major-mode-name (and file-dir
|
||||||
(file-name-nondirectory file-dir)))
|
(file-name-nondirectory file-dir)))
|
||||||
(parent-file-dir (and file-dir
|
(parent-file-dir (and file-dir
|
||||||
@ -2230,7 +2243,6 @@ there, otherwise, proposes to create the first option returned by
|
|||||||
"[yas] Cannot auto-detect major mode! Enter a major mode: "))))
|
"[yas] Cannot auto-detect major mode! Enter a major mode: "))))
|
||||||
(parent-mode-sym (and parent-mode-name
|
(parent-mode-sym (and parent-mode-name
|
||||||
(intern parent-mode-name)))
|
(intern parent-mode-name)))
|
||||||
(extra-parents-file-name (concat file-dir "/.yas-parents"))
|
|
||||||
(more-parents (when (file-readable-p extra-parents-file-name)
|
(more-parents (when (file-readable-p extra-parents-file-name)
|
||||||
(mapcar #'intern
|
(mapcar #'intern
|
||||||
(split-string
|
(split-string
|
||||||
@ -2250,7 +2262,9 @@ With optional prefix argument KILL quit the window and buffer."
|
|||||||
(if buffer-file-name
|
(if buffer-file-name
|
||||||
(let ((major-mode-and-parent (yas/compute-major-mode-and-parents buffer-file-name)))
|
(let ((major-mode-and-parent (yas/compute-major-mode-and-parents buffer-file-name)))
|
||||||
(if major-mode-and-parent
|
(if major-mode-and-parent
|
||||||
(let* ((parsed (yas/parse-template buffer-file-name))
|
(let* ((yas/ignore-filenames-as-triggers (or yas/ignore-filenames-as-triggers
|
||||||
|
(locate-dominating-file buffer-file-name ".yas-ignore-filenames-as-triggers")))
|
||||||
|
(parsed (yas/parse-template buffer-file-name))
|
||||||
(name (and parsed
|
(name (and parsed
|
||||||
(third parsed))))
|
(third parsed))))
|
||||||
(when name
|
(when name
|
||||||
@ -2259,7 +2273,7 @@ With optional prefix argument KILL quit the window and buffer."
|
|||||||
(list parsed)
|
(list parsed)
|
||||||
(cdr major-mode-and-parent)))
|
(cdr major-mode-and-parent)))
|
||||||
(when (and (buffer-modified-p)
|
(when (and (buffer-modified-p)
|
||||||
(y-or-n-p "Save snippet? "))
|
(y-or-n-p "Also save snippet buffer? "))
|
||||||
(save-buffer))
|
(save-buffer))
|
||||||
(if kill
|
(if kill
|
||||||
(quit-window kill)
|
(quit-window kill)
|
||||||
@ -3294,8 +3308,7 @@ SNIPPET-MARKERS."
|
|||||||
(forward-line 1)))
|
(forward-line 1)))
|
||||||
(not (eobp))
|
(not (eobp))
|
||||||
(<= (point) end))
|
(<= (point) end))
|
||||||
(yas/indent-according-to-mode snippet-markers))
|
(yas/indent-according-to-mode snippet-markers))))
|
||||||
(yas/indent-according-to-mode snippet-markers)))
|
|
||||||
(t
|
(t
|
||||||
nil)))))
|
nil)))))
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user