mirror of
https://github.com/joaotavora/yasnippet.git
synced 2025-10-13 21:13:04 +00:00
Fix another failure of cc-mode indentation
Suggested by OGAWA Hirofumi in https://github.com/joaotavora/yasnippet/issues/953. * yasnippet.el (yas--snippet-create): Call before and after change functions around yas--snippet-parse-create. * yasnippet-tests.el (indent-cc-mode-2): New test.
This commit is contained in:
parent
7a178a2ca0
commit
8328c38d77
@ -556,6 +556,22 @@ int foo()
|
|||||||
}
|
}
|
||||||
}" (buffer-string)))))
|
}" (buffer-string)))))
|
||||||
|
|
||||||
|
(ert-deftest indent-cc-mode-2 ()
|
||||||
|
"Handling of cc-mode's preprocessor indentation."
|
||||||
|
(with-temp-buffer
|
||||||
|
(c-mode)
|
||||||
|
(yas-minor-mode +1)
|
||||||
|
(yas-expand-snippet "\
|
||||||
|
#ifndef `\"FOO\"`
|
||||||
|
#define FOO
|
||||||
|
#endif
|
||||||
|
")
|
||||||
|
(should (string= "\
|
||||||
|
#ifndef FOO
|
||||||
|
#define FOO
|
||||||
|
#endif
|
||||||
|
" (buffer-substring-no-properties (point-min) (point-max))))))
|
||||||
|
|
||||||
(ert-deftest indent-snippet-mode ()
|
(ert-deftest indent-snippet-mode ()
|
||||||
"Handling of snippet-mode indentation."
|
"Handling of snippet-mode indentation."
|
||||||
;; This is an interesting case because newlines match [[:space:]] in
|
;; This is an interesting case because newlines match [[:space:]] in
|
||||||
|
@ -4035,13 +4035,18 @@ Returns the newly created snippet."
|
|||||||
;; content.
|
;; content.
|
||||||
(let ((buffer-undo-list t))
|
(let ((buffer-undo-list t))
|
||||||
;; Some versions of cc-mode fail when inserting snippet
|
;; Some versions of cc-mode fail when inserting snippet
|
||||||
;; content in a narrowed buffer.
|
;; content in a narrowed buffer, so make sure to insert
|
||||||
|
;; before narrowing. Furthermore, call before and after
|
||||||
|
;; change functions, otherwise cc-mode's cache can get
|
||||||
|
;; messed up.
|
||||||
(goto-char begin)
|
(goto-char begin)
|
||||||
|
(run-hook-with-args 'before-change-functions begin begin)
|
||||||
(insert content)
|
(insert content)
|
||||||
(setq end (+ end (length content)))
|
(setq end (+ end (length content)))
|
||||||
(narrow-to-region begin end)
|
(narrow-to-region begin end)
|
||||||
(goto-char (point-min))
|
(goto-char (point-min))
|
||||||
(yas--snippet-parse-create snippet))
|
(yas--snippet-parse-create snippet)
|
||||||
|
(run-hook-with-args 'after-change-functions (point-min) (point-max) 0))
|
||||||
(when (listp buffer-undo-list)
|
(when (listp buffer-undo-list)
|
||||||
(push (cons (point-min) (point-max))
|
(push (cons (point-min) (point-max))
|
||||||
buffer-undo-list))
|
buffer-undo-list))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user