mirror of
https://github.com/joaotavora/yasnippet.git
synced 2025-10-15 05:53:04 +00:00
Fix Issue 126.
Fix some `yas/load-snippet-buffer' bug after using `yas/visit-snippet-file'
This commit is contained in:
parent
927545a1fa
commit
9a31fb851d
59
yasnippet.el
59
yasnippet.el
@ -1444,7 +1444,7 @@ Here's a list of currently recognized directives:
|
|||||||
(when yas/current-template
|
(when yas/current-template
|
||||||
(if yas/visit-from-menu
|
(if yas/visit-from-menu
|
||||||
(yas/visit-snippet-file-1 yas/current-template)
|
(yas/visit-snippet-file-1 yas/current-template)
|
||||||
(let ((where (if mark-active
|
(let ((where (if (region-active-p)
|
||||||
(cons (region-beginning) (region-end))
|
(cons (region-beginning) (region-end))
|
||||||
(cons (point) (point)))))
|
(cons (point) (point)))))
|
||||||
(yas/expand-snippet (yas/template-content yas/current-template)
|
(yas/expand-snippet (yas/template-content yas/current-template)
|
||||||
@ -1520,32 +1520,31 @@ TEMPLATES is a list of `yas/template'."
|
|||||||
"If non-nil, attempt to prompt for templates like TextMate.")
|
"If non-nil, attempt to prompt for templates like TextMate.")
|
||||||
(defun yas/x-pretty-prompt-templates (prompt templates)
|
(defun yas/x-pretty-prompt-templates (prompt templates)
|
||||||
"Display TEMPLATES, grouping neatly by table name."
|
"Display TEMPLATES, grouping neatly by table name."
|
||||||
(let ((props (list))
|
(let ((pretty-alist (list))
|
||||||
menu
|
menu
|
||||||
more-than-one-table
|
more-than-one-table
|
||||||
prefix)
|
prefix)
|
||||||
(dolist (tl templates)
|
(dolist (tl templates)
|
||||||
(push tl (getf props (intern (yas/table-name (yas/template-table tl))))))
|
(aput 'pretty-alist (yas/template-table tl) (cons tl (aget pretty-alist (yas/template-table tl)))))
|
||||||
(setq more-than-one-table (> (length props) 2))
|
(setq more-than-one-table (> (length pretty-alist) 1))
|
||||||
(setq prefix (if more-than-one-table
|
(setq prefix (if more-than-one-table
|
||||||
" " ""))
|
" " ""))
|
||||||
(dolist (thing props)
|
(dolist (table-and-templates pretty-alist)
|
||||||
(cond ((listp thing)
|
(when (cdr table-and-templates)
|
||||||
(setq menu (nconc (mapcar #'(lambda (tl)
|
(if more-than-one-table
|
||||||
(cons (concat prefix (yas/template-name tl))
|
(push (yas/table-name (car table-and-templates)) menu))
|
||||||
tl))
|
(dolist (template (cdr table-and-templates))
|
||||||
thing)
|
(push (cons (concat prefix (yas/template-name template))
|
||||||
menu)))
|
template) menu))))
|
||||||
(more-than-one-table
|
|
||||||
(push (symbol-name thing) menu))))
|
|
||||||
(setq menu (nreverse menu))
|
(setq menu (nreverse menu))
|
||||||
(x-popup-menu (if (fboundp 'posn-at-point)
|
(or (x-popup-menu (if (fboundp 'posn-at-point)
|
||||||
(let ((x-y (posn-x-y (posn-at-point (point)))))
|
(let ((x-y (posn-x-y (posn-at-point (point)))))
|
||||||
(list (list (+ (car x-y) 10)
|
(list (list (+ (car x-y) 10)
|
||||||
(+ (cdr x-y) 20))
|
(+ (cdr x-y) 20))
|
||||||
(selected-window)))
|
(selected-window)))
|
||||||
t)
|
t)
|
||||||
(list prompt (push "title" menu)))))
|
(list prompt (push "title" menu)))
|
||||||
|
(keyboard-quit))))
|
||||||
|
|
||||||
(defun yas/ido-prompt (prompt choices &optional display-fn)
|
(defun yas/ido-prompt (prompt choices &optional display-fn)
|
||||||
(when (and (featurep 'ido)
|
(when (and (featurep 'ido)
|
||||||
@ -2241,7 +2240,7 @@ by condition."
|
|||||||
(or (and (rest templates) ;; more than one template for same key
|
(or (and (rest templates) ;; more than one template for same key
|
||||||
(yas/prompt-for-template templates))
|
(yas/prompt-for-template templates))
|
||||||
(car templates))))
|
(car templates))))
|
||||||
(where (if mark-active
|
(where (if (region-active-p)
|
||||||
(cons (region-beginning) (region-end))
|
(cons (region-beginning) (region-end))
|
||||||
(cons (point) (point)))))
|
(cons (point) (point)))))
|
||||||
(if yas/current-template
|
(if yas/current-template
|
||||||
@ -2260,20 +2259,20 @@ visited file in `snippet-mode'."
|
|||||||
(let* ((yas/buffer-local-condition 'always)
|
(let* ((yas/buffer-local-condition 'always)
|
||||||
(templates (yas/all-templates (yas/get-snippet-tables)))
|
(templates (yas/all-templates (yas/get-snippet-tables)))
|
||||||
(template (and templates
|
(template (and templates
|
||||||
(or (and (rest templates) ;; more than one template for same key
|
(or (yas/prompt-for-template templates
|
||||||
(yas/prompt-for-template templates
|
"Choose a snippet template to edit: ")
|
||||||
"Choose a snippet template to edit: "))
|
|
||||||
(car templates)))))
|
(car templates)))))
|
||||||
|
|
||||||
(when template
|
(if template
|
||||||
(yas/visit-snippet-file-1 template))))
|
(yas/visit-snippet-file-1 template)
|
||||||
|
(message "No snippets tables active!"))))
|
||||||
|
|
||||||
(defun yas/visit-snippet-file-1 (template)
|
(defun yas/visit-snippet-file-1 (template)
|
||||||
(let ((file (yas/template-file template)))
|
(let ((file (yas/template-file template)))
|
||||||
(cond ((and file (file-readable-p file))
|
(cond ((and file (file-readable-p file))
|
||||||
(find-file-other-window file)
|
(find-file-other-window file)
|
||||||
(snippet-mode)
|
(snippet-mode)
|
||||||
(setq yas/editing-template template))
|
(set (make-local-variable 'yas/editing-template) template))
|
||||||
(file
|
(file
|
||||||
(message "Original file %s no longer exists!" file))
|
(message "Original file %s no longer exists!" file))
|
||||||
(t
|
(t
|
||||||
@ -2295,7 +2294,7 @@ visited file in `snippet-mode'."
|
|||||||
(pp-to-string (yas/template-content template))
|
(pp-to-string (yas/template-content template))
|
||||||
(yas/template-content template))))
|
(yas/template-content template))))
|
||||||
(snippet-mode)
|
(snippet-mode)
|
||||||
(setq yas/editing-template template)))))
|
(set (make-local-variable 'yas/editing-template) template)))))
|
||||||
|
|
||||||
(defun yas/guess-snippet-directories-1 (table)
|
(defun yas/guess-snippet-directories-1 (table)
|
||||||
"Guesses possible snippet subdirectories for TABLE."
|
"Guesses possible snippet subdirectories for TABLE."
|
||||||
@ -2359,7 +2358,7 @@ where snippets of table might exist."
|
|||||||
|
|
||||||
(switch-to-buffer "*new snippet*")
|
(switch-to-buffer "*new snippet*")
|
||||||
(erase-buffer)
|
(erase-buffer)
|
||||||
(set (make-local-variable 'yas/editing-template) nil)
|
(kill-all-local-variables)
|
||||||
(snippet-mode)
|
(snippet-mode)
|
||||||
(set (make-local-variable 'yas/guessed-modes) (mapcar #'(lambda (d)
|
(set (make-local-variable 'yas/guessed-modes) (mapcar #'(lambda (d)
|
||||||
(intern (yas/table-name (car d))))
|
(intern (yas/table-name (car d))))
|
||||||
@ -3358,7 +3357,7 @@ considered when expanding the snippet."
|
|||||||
|
|
||||||
;; If a region is active, set `yas/selected-text'
|
;; If a region is active, set `yas/selected-text'
|
||||||
(setq yas/selected-text
|
(setq yas/selected-text
|
||||||
(when mark-active
|
(when (region-active-p)
|
||||||
(prog1 (buffer-substring-no-properties (region-beginning)
|
(prog1 (buffer-substring-no-properties (region-beginning)
|
||||||
(region-end))
|
(region-end))
|
||||||
(unless start (setq start (region-beginning))
|
(unless start (setq start (region-beginning))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user