Make regexp syntax compatible with Emacs 22

This commit is contained in:
Zhang Chiyuan 2008-03-07 06:17:01 +00:00
parent 95578c22d0
commit 4c08e75673

View File

@ -41,14 +41,16 @@ will first try \"bar\", if not found, then \"foo-bar\" is tried.")
current column if this variable is non-`nil'.") current column if this variable is non-`nil'.")
(make-variable-buffer-local 'yas/indent-line) (make-variable-buffer-local 'yas/indent-line)
(defvar yas/trigger-key (kbd "TAB") (defvar yas/trigger-keys (list (kbd "<tab>")
"The key to bind as a trigger of snippet.") (kbd "TAB"))
"The keys to bind as a trigger of snippet.")
(defvar yas/trigger-fallback 'indent-according-to-mode (defvar yas/trigger-fallback 'indent-according-to-mode
"The fallback command to call when there's no snippet to expand.") "The fallback command to call when there's no snippet to expand.")
(make-variable-buffer-local 'yas/trigger-fallback) (make-variable-buffer-local 'yas/trigger-fallback)
(defvar yas/keymap (make-sparse-keymap) (defvar yas/keymap (make-sparse-keymap)
"The keymap of snippet.") "The keymap of snippet.")
(define-key yas/keymap (kbd "<tab>") 'yas/next-field-group)
(define-key yas/keymap (kbd "TAB") 'yas/next-field-group) (define-key yas/keymap (kbd "TAB") 'yas/next-field-group)
(define-key yas/keymap (kbd "S-TAB") 'yas/prev-field-group) (define-key yas/keymap (kbd "S-TAB") 'yas/prev-field-group)
(define-key yas/keymap (kbd "<S-iso-lefttab>") 'yas/prev-field-group) (define-key yas/keymap (kbd "<S-iso-lefttab>") 'yas/prev-field-group)
@ -83,8 +85,8 @@ mode will be listed under the menu \"yasnippet\".")
(concat "YASESCAPE" "BACKQUOTE" "PROTECTGUARD")) (concat "YASESCAPE" "BACKQUOTE" "PROTECTGUARD"))
(defconst yas/field-regexp (defconst yas/field-regexp
(concat "$\\(?1:[0-9]+\\)" "\\|" (concat "$\\([0-9]+\\)" "\\|"
"${\\(?:\\(?1:[0-9]+\\):\\)?\\(?2:[^}]*\\)}")) "${\\(?:\\([0-9]+\\):\\)?\\([^}]*\\)}"))
(defvar yas/snippet-id-seed 0 (defvar yas/snippet-id-seed 0
"Contains the next id for a snippet") "Contains the next id for a snippet")
@ -342,7 +344,9 @@ will be deleted before inserting template."
;; Step 5: Create fields ;; Step 5: Create fields
(goto-char (point-min)) (goto-char (point-min))
(while (re-search-forward yas/field-regexp nil t) (while (re-search-forward yas/field-regexp nil t)
(let ((number (match-string-no-properties 1))) (let ((number (or (match-string-no-properties 1)
(match-string-no-properties 2)))
(value (match-string-no-properties 3)))
(if (and number (if (and number
(string= "0" number)) (string= "0" number))
(progn (progn
@ -354,7 +358,7 @@ will be deleted before inserting template."
(yas/make-field (yas/make-field
(make-overlay (match-beginning 0) (match-end 0)) (make-overlay (match-beginning 0) (match-end 0))
(and number (string-to-number number)) (and number (string-to-number number))
(match-string-no-properties 2)))))) value)))))
;; Step 6: Sort and link each field group ;; Step 6: Sort and link each field group
(setf (yas/snippet-groups snippet) (setf (yas/snippet-groups snippet)
@ -594,7 +598,8 @@ If POINT is not given, default is to current point."
") -- pluskid <pluskid@gmail.com>"))) ") -- pluskid <pluskid@gmail.com>")))
(defun yas/initialize () (defun yas/initialize ()
"Do necessary initialization." "Do necessary initialization."
(global-set-key yas/trigger-key 'yas/expand) (dolist (key yas/trigger-keys)
(global-set-key key 'yas/expand))
(when yas/use-menu (when yas/use-menu
(define-key-after global-map (define-key-after global-map
[menu-bar yasnippet] [menu-bar yasnippet]