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.
This commit is contained in:
Noam Postavsky 2013-10-26 13:42:32 -04:00
parent ffd497d541
commit 205b0e6970

View File

@ -2527,10 +2527,7 @@ neither do the elements of PARENTS."
TABLE is a symbol naming a passed to `yas--table-get-create'. TABLE is a symbol naming a passed to `yas--table-get-create'.
When called interactively, prompt for the table name and When called interactively, prompt for the table name."
whether (and where) to save the snippet.
Returns the name of the file saved (if any)."
(interactive (list (yas--read-table) t)) (interactive (list (yas--read-table) t))
(cond (cond
;; We have `yas--editing-template', this buffer's content comes from a ;; 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) (set (make-local-variable 'yas--editing-template)
(yas--define-snippets-1 (yas--parse-template buffer-file-name) (yas--define-snippets-1 (yas--parse-template buffer-file-name)
table))))) table)))))
(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)))))
(prog1 (defun yas-load-snippet-buffer-and-close (table &optional kill)
(when (and interactive "Load the snippet with `yas-load-snippet-buffer', offer to
(or save, then `quit-window' if saved.
;; 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) The prefix argument KILL is passed to `quit-window'.
"Call `yas-load-snippet-buffer' and then `quit-window', prefix
argument KILL passed to `quit-window'." Don't use this from a Lisp program, call `yas-load-snippet-buffer'
(interactive (list (yas--read-table) current-prefix-arg t)) and `kill-buffer' instead."
(and (yas-load-snippet-buffer table interactive) (interactive (list (yas--read-table) current-prefix-arg))
(quit-window kill))) (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) (defun yas-tryout-snippet (&optional debug)
"Test current buffer's snippet template in other buffer." "Test current buffer's snippet template in other buffer."