Add yas-longest-key-from-whitespace

Example yas-key-syntaxes function.

* yasnippet.el (yas-longest-key-from-whitespace): new function.
* yasnippet-tests.el (complicated-yas-key-syntaxes): test it.
This commit is contained in:
Noam Postavsky 2014-08-10 13:07:43 -04:00
parent 10ecde158e
commit 5d10b5dfee
2 changed files with 16 additions and 1 deletions

View File

@ -349,7 +349,9 @@ TODO: correct this bug!"
("xxx 'quote" . "xxx OKquoteOK"))))
(let ((yas-key-syntaxes '(yas-shortest-key-until-whitespace))
(yas--foobarbaz t) (yas--barbaz t))
(yas-should-expand '(("foo-barbaz" . "foo-barOKbazOK"))))))))
(yas-should-expand '(("foo-barbaz" . "foo-barOKbazOK")))
(setq yas-key-syntaxes '(yas-longest-key-from-whitespace))
(yas-should-expand '(("foo-barbaz" . "OKfoo-barbazOK"))))))))
;;; Loading

View File

@ -2746,6 +2746,19 @@ element of `yas-key-syntaxes'."
(when (/= (skip-chars-backward "^[:space:]\n" (1- (point))) 0)
'again))
(defun yas-longest-key-from-whitespace (start-point)
"Go back to nearest whitespace, then go forward and return `again' until at START-POINT.
A newline will be considered whitespace even if the mode syntax
marks it as something else (typically comment ender). Use as
element of `yas-key-syntaxes'."
(if (= (point) start-point)
(yas-try-key-from-whitespace start-point)
(forward-char))
(unless (= original (1+ (point)))
'again))
;;; User convenience functions, for using in snippet definitions