branch: master commit 205b0e697055d8dd92366da8ba0963e350ad7817 Author: Noam Postavsky <npost...@users.sourceforge.net> Commit: Noam Postavsky <npost...@users.sourceforge.net>
move snippet saving from loading to closing yas-load-snippet-buffer now just loads the snippet, yas-load-snippet-buffer-and-close also saves it. --- yasnippet.el | 81 ++++++++++++++++++++++++++++----------------------------- 1 files changed, 40 insertions(+), 41 deletions(-) diff --git a/yasnippet.el b/yasnippet.el index 5d0d90a..19c6a5a 100644 --- a/yasnippet.el +++ b/yasnippet.el @@ -2527,10 +2527,7 @@ neither do the elements of PARENTS." TABLE is a symbol naming a passed to `yas--table-get-create'. -When called interactively, prompt for the table name and -whether (and where) to save the snippet. - -Returns the name of the file saved (if any)." +When called interactively, prompt for the table name." (interactive (list (yas--read-table) t)) (cond ;; We have `yas--editing-template', this buffer's content comes from a @@ -2549,43 +2546,45 @@ Returns the name of the file saved (if any)." (set (make-local-variable 'yas--editing-template) (yas--define-snippets-1 (yas--parse-template buffer-file-name) table))))) - - (prog1 - (when (and interactive - (or - ;; Only offer to save this if it looks like a library or new - ;; snippet (loaded from elisp, from a dir in `yas-snippet-dirs' - ;; which is not the first, or from an unwritable file) - ;; - (not (yas--template-file yas--editing-template)) - (not (file-writable-p (yas--template-file yas--editing-template))) - (and (listp yas-snippet-dirs) - (second yas-snippet-dirs) - (not (string-match (expand-file-name (first yas-snippet-dirs)) - (yas--template-file yas--editing-template))))) - (y-or-n-p (yas--format "Looks like a library or new snippet. Save to new file? "))) - (let* ((option (first (yas--guess-snippet-directories (yas--template-table yas--editing-template)))) - (chosen (and option - (yas--make-directory-maybe option)))) - (when chosen - (let ((default-file-name (or (and (yas--template-file yas--editing-template) - (file-name-nondirectory (yas--template-file yas--editing-template))) - (yas--template-name yas--editing-template)))) - (write-file (concat chosen "/" - (read-from-minibuffer (format "File name to create in %s? " chosen) - default-file-name))) - (setf (yas--template-file yas--editing-template) buffer-file-name))))) - (when interactive - (yas--message 3 "Snippet \"%s\" loaded for %s." - (yas--template-name yas--editing-template) - (yas--table-name (yas--template-table yas--editing-template)))))) - -(defun yas-load-snippet-buffer-and-close (table &optional kill interactive) - "Call `yas-load-snippet-buffer' and then `quit-window', prefix - argument KILL passed to `quit-window'." - (interactive (list (yas--read-table) current-prefix-arg t)) - (and (yas-load-snippet-buffer table interactive) - (quit-window kill))) + (when interactive + (yas--message 3 "Snippet \"%s\" loaded for %s." + (yas--template-name yas--editing-template) + (yas--table-name (yas--template-table yas--editing-template))))) + +(defun yas-load-snippet-buffer-and-close (table &optional kill) + "Load the snippet with `yas-load-snippet-buffer', offer to + save, then `quit-window' if saved. + +The prefix argument KILL is passed to `quit-window'. + +Don't use this from a Lisp program, call `yas-load-snippet-buffer' +and `kill-buffer' instead." + (interactive (list (yas--read-table) current-prefix-arg)) + (yas-load-snippet-buffer table t) + (when (and (or + ;; Only offer to save this if it looks like a library or new + ;; snippet (loaded from elisp, from a dir in `yas-snippet-dirs' + ;; which is not the first, or from an unwritable file) + ;; + (not (yas--template-file yas--editing-template)) + (not (file-writable-p (yas--template-file yas--editing-template))) + (and (listp yas-snippet-dirs) + (second yas-snippet-dirs) + (not (string-match (expand-file-name (first yas-snippet-dirs)) + (yas--template-file yas--editing-template))))) + (y-or-n-p (yas--format "Looks like a library or new snippet. Save to new file? "))) + (let* ((option (first (yas--guess-snippet-directories (yas--template-table yas--editing-template)))) + (chosen (and option + (yas--make-directory-maybe option)))) + (when chosen + (let ((default-file-name (or (and (yas--template-file yas--editing-template) + (file-name-nondirectory (yas--template-file yas--editing-template))) + (yas--template-name yas--editing-template)))) + (write-file (concat chosen "/" + (read-from-minibuffer (format "File name to create in %s? " chosen) + default-file-name))) + (setf (yas--template-file yas--editing-template) buffer-file-name) + (quit-window kill)))))) (defun yas-tryout-snippet (&optional debug) "Test current buffer's snippet template in other buffer."