X-Git-Url: https://code.delx.au/gnu-emacs-elpa/blobdiff_plain/bfe14f19ac8f015b0b79b9222cb0059a9a01a7e5..146b161112b68c99ecd607ec5360accc1f4db3cd:/yasnippet-tests.el diff --git a/yasnippet-tests.el b/yasnippet-tests.el index e5c72df61..8ba4632d3 100644 --- a/yasnippet-tests.el +++ b/yasnippet-tests.el @@ -193,6 +193,55 @@ (ert-simulate-command '(yas-prev-field)) (should (looking-at "little sibling")))) +(ert-deftest basic-indentation () + (with-temp-buffer + (ruby-mode) + (yas-minor-mode 1) + (set (make-local-variable 'yas-indent-line) 'auto) + (set (make-local-variable 'yas-also-auto-indent-first-line) t) + (yas-expand-snippet "def ${1:method}${2:(${3:args})}\n$0\nend") + ;; Note that empty line is not indented. + (should (string= "def method(args) + +end" (buffer-string))) + (cl-loop repeat 3 do (ert-simulate-command '(yas-next-field))) + (yas-mock-insert (make-string (random 5) ?\ )) ; purposedly mess up indentation + (yas-expand-snippet "class << ${self}\n $0\nend") + (ert-simulate-command '(yas-next-field)) + (should (string= "def method(args) + class << self + + end +end" (buffer-string))) + (should (= 4 (current-column))))) + +(ert-deftest navigate-a-snippet-with-multiline-mirrors-issue-665 () + "In issue 665, a multi-line mirror is attempted. + +Indentation doesn't (yet) happen on these mirrors, but let this +test guard against any misnavigations that might be introduced by +an incorrect implementation of mirror auto-indentation" + (with-temp-buffer + (ruby-mode) + (yas-minor-mode 1) + (yas-expand-snippet "def initialize(${1:params})\n$2${1:$( +mapconcat #'(lambda (arg) + (format \"@%s = %s\" arg arg)) + (split-string yas-text \", \") + \"\n\")}\nend") + (yas-mock-insert "bla, ble, bli") + (ert-simulate-command '(yas-next-field)) + (let ((expected (mapconcat #'identity + '("@bla = bla" + "[[:blank:]]*@ble = ble" + "[[:blank:]]*@bli = bli") + "\n"))) + (should (looking-at expected)) + (yas-mock-insert "blo") + (ert-simulate-command '(yas-prev-field)) + (ert-simulate-command '(yas-next-field)) + (should (looking-at (concat "blo" expected)))))) + ;;; Snippet expansion and character escaping ;;; Thanks to @zw963 (Billy) for the testing @@ -851,7 +900,7 @@ add the snippets associated with the given mode." (defun yas-should-expand (keys-and-expansions) (dolist (key-and-expansion keys-and-expansions) (yas-exit-all-snippets) - (narrow-to-region (point) (point)) + (erase-buffer) (insert (car key-and-expansion)) (let ((yas-fallback-behavior nil)) (ert-simulate-command '(yas-expand))) @@ -865,7 +914,7 @@ add the snippets associated with the given mode." (defun yas-should-not-expand (keys) (dolist (key keys) (yas-exit-all-snippets) - (narrow-to-region (point) (point)) + (erase-buffer) (insert key) (let ((yas-fallback-behavior nil)) (ert-simulate-command '(yas-expand)))