1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
(require 'ert)
(require 's)
(defmacro with-lua-buffer (&rest body)
`(with-temp-buffer
(switch-to-buffer (current-buffer))
(lua-mode)
(font-lock-fontify-buffer)
,@body))
(ert-deftest test-electric-brace ()
(with-lua-buffer
(execute-kbd-macro (kbd "return SPC foo SPC { C-j"))
(execute-kbd-macro (kbd "'baz' C-j"))
(should (eq (current-indentation) lua-indent-level))
(execute-kbd-macro (kbd "}"))
(should (eq (current-indentation) 0))))
(ert-deftest test-electric-paren ()
(with-lua-buffer
(execute-kbd-macro (kbd "return SPC foo SPC ( C-j"))
(execute-kbd-macro (kbd "'baz' C-j"))
(should (eq (current-indentation) lua-indent-level))
(execute-kbd-macro (kbd ")"))
(should (eq (current-indentation) 0))))
(ert-deftest test-electric-end ()
(with-lua-buffer
(execute-kbd-macro (kbd "if SPC foo SPC then C-j"))
(execute-kbd-macro (kbd "'baz' C-j"))
(should (eq (current-indentation) lua-indent-level))
(abbrev-mode 1)
(execute-kbd-macro (kbd "end C-j"))
(beginning-of-line 0)
(should (eq (current-indentation) 0))))
(ert-deftest test-electric-else ()
(with-lua-buffer
(execute-kbd-macro (kbd "if SPC foo SPC then C-j"))
(execute-kbd-macro (kbd "'baz' C-j"))
(should (eq (current-indentation) lua-indent-level))
(abbrev-mode 1)
(execute-kbd-macro (kbd "else C-j"))
(beginning-of-line 0)
(should (eq (current-indentation) 0))))
(ert-deftest test-electric-elseif ()
(with-lua-buffer
(execute-kbd-macro (kbd "if SPC foo SPC then C-j"))
(execute-kbd-macro (kbd "'baz' C-j"))
(should (eq (current-indentation) lua-indent-level))
(abbrev-mode 1)
(execute-kbd-macro (kbd "elseif C-j"))
(beginning-of-line 0)
(should (eq (current-indentation) 0))))
(when (fboundp 'electric-pair-mode)
(ert-deftest test-electric-pair-skip-self ()
(let ((old-mode (if electric-pair-mode 1 0)))
(unwind-protect
(with-lua-buffer
(set (make-local-variable 'electric-pair-skip-self) t)
(set (make-local-variable 'lua-electric-flag) t)
(electric-pair-mode 1)
(execute-kbd-macro "(")
(should (string= (buffer-string) "()"))
(execute-kbd-macro ")")
(should (string= (buffer-string) "()")))
(electric-pair-mode old-mode)))))
|