navigation to previous group

This commit is contained in:
Zhang Chiyuan 2008-03-06 02:46:14 +00:00
parent 4570f1bac2
commit 148bcf4799

View File

@ -503,14 +503,22 @@ otherwise, nil returned."
(interactive) (interactive)
(let ((overlay (yas/current-overlay-for-navigation))) (let ((overlay (yas/current-overlay-for-navigation)))
(if overlay (if overlay
(let ((prev (yas/group-prev (yas/navigate-group (overlay-get overlay 'yas/group) nil)
(overlay-get overlay 'yas/group)))) (let ((snippet (yas/snippet-of-current-keymap))
(if prev (done nil))
(goto-char (overlay-start (if snippet
(yas/field-overlay (do* ((tabstops (yas/snippet-tabstops snippet) (cdr tabstops))
(yas/group-primary-field prev)))) (tabstop (car tabstops) (car tabstops)))
(yas/exit-snippet (overlay-get overlay 'yas/snippet)))) ((or (null tabstops)
(message "Not in a snippet field.")))) done)
(unless done (message "Not in a snippet field.")))
(when (= (point)
(overlay-start
(yas/field-overlay
(yas/group-primary-field tabstop))))
(setq done t)
(yas/navigate-group tabstop nil)))
(message "Not in a snippet field."))))))
(defun yas/exit-snippet (snippet) (defun yas/exit-snippet (snippet)
"Goto exit-marker of SNIPPET and delete the snippet." "Goto exit-marker of SNIPPET and delete the snippet."