place cursor at a proper position after snippet expanded.

This commit is contained in:
Zhang Chiyuan 2008-03-03 16:29:22 +00:00
parent 6dae705a41
commit 748d767cf1

View File

@ -311,9 +311,22 @@ will be deleted before inserting template."
;; Step 10: move to end and make sure exit-marker exist ;; Step 10: move to end and make sure exit-marker exist
(goto-char (point-max)) (goto-char (point-max))
(unless (yas/snippet-exit-marker snippet) (unless (yas/snippet-exit-marker snippet)
(yas/snippet-exit-marker-set snippet (copy-marker (point) t))))) (yas/snippet-exit-marker-set snippet (copy-marker (point) t)))
(delete-char length))) ;; Step 11: remove the trigger key
(widen)
(delete-char length)
;; Step 12: place the cursor at a proper place
(let ((groups (yas/snippet-field-groups snippet))
(exit-marker (yas/snippet-exit-marker snippet)))
(if groups
(goto-char (overlay-start
(yas/snippet-field-overlay
(yas/snippet-field-group-primary
(car groups)))))
;; no need to call exit-snippet, since no overlay created.
(goto-char exit-marker)))))))
(defun yas/current-snippet-overlay () (defun yas/current-snippet-overlay ()
"Get the most proper overlay which is belongs to a snippet." "Get the most proper overlay which is belongs to a snippet."