File: test-electric-mode.el

package info (click to toggle)
lua-mode 20201010-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 308 kB
  • sloc: lisp: 2,626; makefile: 40; sh: 21
file content (88 lines) | stat: -rw-r--r-- 2,869 bytes parent folder | download | duplicates (2)
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
81
82
83
84
85
86
87
88
;; -*- flycheck-disabled-checkers: (emacs-lisp-checkdoc) -*-

(load (concat (file-name-directory (or load-file-name (buffer-file-name)
                                       default-directory))
              "utils.el") nil 'nomessage 'nosuffix)

(require 'lua-mode)


(describe "Test electric mode"
  (it "works with curly braces"
    (with-lua-buffer
     (setq-local blink-matching-paren nil)
     (make-local-variable 'electric-indent-mode)
     (electric-indent-mode 1)
     (execute-kbd-macro (kbd "return SPC foo SPC { M-j"))
     (execute-kbd-macro (kbd "'baz' M-j"))
     (expect (current-indentation) :to-be lua-indent-level)

     (execute-kbd-macro (kbd "}"))
     (expect (current-indentation) :to-be 0)))

  (it "works with parentheses"
    (with-lua-buffer
     (setq-local blink-matching-paren nil)
     (make-local-variable 'electric-indent-mode)
     (electric-indent-mode 1)
     (execute-kbd-macro (kbd "return SPC foo SPC ( M-j"))
     (execute-kbd-macro (kbd "'baz' M-j"))
     (should (eq (current-indentation) lua-indent-level))

     (execute-kbd-macro (kbd ")"))
     (should (eq (current-indentation) 0))))

  (it "works with end"
    (with-lua-buffer
     (execute-kbd-macro (kbd "if SPC foo SPC then M-j"))
     (execute-kbd-macro (kbd "'baz' M-j"))
     (should (eq (current-indentation) lua-indent-level))

     (abbrev-mode 1)
     (execute-kbd-macro (kbd "end M-j"))
     (beginning-of-line 0)
     (should (eq (current-indentation) 0))))


  (it "works with else"
    (with-lua-buffer
     (execute-kbd-macro (kbd "if SPC foo SPC then M-j"))
     (execute-kbd-macro (kbd "'baz' M-j"))
     (should (eq (current-indentation) lua-indent-level))

     (abbrev-mode 1)
     (execute-kbd-macro (kbd "else M-j"))
     (beginning-of-line 0)
     (should (eq (current-indentation) 0))))


  (it "works with elseif"
    (with-lua-buffer
     (execute-kbd-macro (kbd "if SPC foo SPC then"))
     (newline-and-indent)
     (execute-kbd-macro (kbd "'baz'"))
     (newline-and-indent)
     (should (eq (current-indentation) lua-indent-level))

     (abbrev-mode 1)
     (execute-kbd-macro (kbd "elseif"))
     (newline-and-indent)
     (beginning-of-line 0)
     (should (eq (current-indentation) 0)))))


(when (fboundp 'electric-pair-mode)
  (describe "Electric pair mode"
    (it "skips parens when electric-pair-skip-self is t"
      (let ((old-mode (if electric-pair-mode 1 0)))
        (unwind-protect
            (with-lua-buffer
             (setq-local blink-matching-paren nil)
             (setq-local electric-pair-skip-self t)
             (setq-local 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))))))