avoid the overlay modification hook to run during snippet creation.

This commit is contained in:
Zhang Chiyuan 2008-03-04 13:24:12 +00:00
parent 5a1f0a5c21
commit d8d887bc89

View File

@ -254,8 +254,7 @@ will be deleted before inserting template."
(goto-char start) (goto-char start)
(let ((length (- end start)) (let ((length (- end start))
(column (current-column)) (column (current-column)))
(inhibit-modification-hooks t))
(save-restriction (save-restriction
(narrow-to-region start start) (narrow-to-region start start)
@ -321,7 +320,24 @@ will be deleted before inserting template."
(yas/snippet-field-group-set-next prev group)) (yas/snippet-field-group-set-next prev group))
(setq prev group))) (setq prev group)))
;; Step 7: Set up properties of overlays, including keymaps ;; Step 7: Replace fields with default values
(dolist (group (yas/snippet-field-groups snippet))
(let ((value (yas/snippet-field-group-value group)))
(dolist (field (yas/snippet-field-group-fields group))
(let* ((overlay (yas/snippet-field-overlay field))
(start (overlay-start overlay))
(end (overlay-end overlay))
(length (- end start)))
(goto-char start)
(insert value)
(delete-char length)))))
;; Step 8: restore all escape characters
(yas/replace-all yas/escape-dollar "$")
(yas/replace-all yas/escape-backquote "`")
(yas/replace-all yas/escape-backslash "\\")
;; Step 9: Set up properties of overlays, including keymaps
(dolist (group (yas/snippet-field-groups snippet)) (dolist (group (yas/snippet-field-groups snippet))
(let ((overlay (yas/snippet-field-overlay (let ((overlay (yas/snippet-field-overlay
(yas/snippet-field-group-primary group)))) (yas/snippet-field-group-primary group))))
@ -336,23 +352,6 @@ will be deleted before inserting template."
'face 'face
'highlight)))) 'highlight))))
;; Step 8: Replace fields with default values
(dolist (group (yas/snippet-field-groups snippet))
(let ((value (yas/snippet-field-group-value group)))
(dolist (field (yas/snippet-field-group-fields group))
(let* ((overlay (yas/snippet-field-overlay field))
(start (overlay-start overlay))
(end (overlay-end overlay))
(length (- end start)))
(goto-char start)
(insert value)
(delete-char length)))))
;; Step 9: restore all escape characters
(yas/replace-all yas/escape-dollar "$")
(yas/replace-all yas/escape-backquote "`")
(yas/replace-all yas/escape-backslash "\\")
;; 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)