Don't indent empty lines in snippet expansion

* yasnippet.el (yas--indent-region): Indent only non-empty lines.
* yasnippet-tests.el (basic-indentation): Add empy and non-empty (but
blank) lines in test snippet.
This commit is contained in:
Noam Postavsky 2016-05-04 12:35:48 -04:00
parent bdfab67eac
commit 146b161112
2 changed files with 7 additions and 2 deletions

View File

@ -200,6 +200,10 @@
(set (make-local-variable 'yas-indent-line) 'auto) (set (make-local-variable 'yas-indent-line) 'auto)
(set (make-local-variable 'yas-also-auto-indent-first-line) t) (set (make-local-variable 'yas-also-auto-indent-first-line) t)
(yas-expand-snippet "def ${1:method}${2:(${3:args})}\n$0\nend") (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))) (cl-loop repeat 3 do (ert-simulate-command '(yas-next-field)))
(yas-mock-insert (make-string (random 5) ?\ )) ; purposedly mess up indentation (yas-mock-insert (make-string (random 5) ?\ )) ; purposedly mess up indentation
(yas-expand-snippet "class << ${self}\n $0\nend") (yas-expand-snippet "class << ${self}\n $0\nend")

View File

@ -3918,7 +3918,8 @@ The SNIPPET's markers are preserved."
(goto-char from) (goto-char from)
(save-restriction (save-restriction
(widen) (widen)
(cl-loop do ;; Indent each non-empty line.
(cl-loop if (/= (line-beginning-position) (line-end-position)) do
(back-to-indentation) (back-to-indentation)
(let ((trouble-markers ; The markers at (point). (let ((trouble-markers ; The markers at (point).
(cl-remove (point) snippet-markers :test #'/=))) (cl-remove (point) snippet-markers :test #'/=)))