]> git.eshelyaron.com Git - emacs.git/commitdiff
Support lua-ts-mode in align.el
authorjohn muhl <jm@pub.pink>
Tue, 10 Oct 2023 14:18:10 +0000 (09:18 -0500)
committerStefan Kangas <stefankangas@gmail.com>
Sat, 21 Oct 2023 10:25:25 +0000 (12:25 +0200)
* lisp/align.el (align-rules-list): Add lua-ts-mode.  (Bug#66466)
* lisp/progmodes/lua-ts-mode.el (lua-ts-mode): Indent region
before aligning.
* test/lisp/align-tests.el (align-lua):
* test/lisp/align-resources/lua-ts-mode.erts: Add tests.

lisp/align.el
lisp/progmodes/lua-ts-mode.el
test/lisp/align-resources/lua-ts-mode.erts [new file with mode: 0644]
test/lisp/align-tests.el

index a286addb51f9079c1fcb7d5cec57fd67c86b869f..9fa78525ecbd9918ed4f1eb17b4cb0c362f2c82d 100644 (file)
@@ -577,7 +577,18 @@ The possible settings for `align-region-separate' are:
                     "="
                     (group (zero-or-more (syntax whitespace)))))
      (group . (1 2))
-     (modes . '(conf-toml-mode toml-ts-mode))))
+     (modes . '(conf-toml-mode toml-ts-mode lua-mode lua-ts-mode)))
+
+    (double-dash-comment
+     (regexp . ,(rx (group (zero-or-more (syntax whitespace)))
+                    "--"
+                    (zero-or-more nonl)))
+     (modes  . '(lua-mode lua-ts-mode))
+     (column . comment-column)
+     (valid  . ,(lambda ()
+                  (save-excursion
+                    (goto-char (match-beginning 1))
+                    (not (bolp)))))))
   "A list describing all of the available alignment rules.
 The format is:
 
index 030a3585158e6bad6be61d85fb55534f9aa2d4cc..6983329707354cb3c6a5617c3de156bd8b11ba14 100644 (file)
@@ -443,6 +443,9 @@ Calls REPORT-FN directly."
                                            "function"))
                                   symbol-end)))))
 
+    ;; Align.
+    (setq-local align-indent-before-aligning t)
+
     (treesit-major-mode-setup))
 
   (add-hook 'flymake-diagnostic-functions #'lua-ts-flymake-luacheck nil 'local))
diff --git a/test/lisp/align-resources/lua-ts-mode.erts b/test/lisp/align-resources/lua-ts-mode.erts
new file mode 100644 (file)
index 0000000..b0473ad
--- /dev/null
@@ -0,0 +1,67 @@
+Name: align assignments
+
+=-=
+local first=1
+local s <const> =2
+local last=3
+=-=
+local first     = 1
+local s <const> = 2
+local last      = 3
+=-=-=
+
+Name: align fields
+
+=-=
+local Table={
+first=1,
+second=2,
+last=3,
+}
+=-=
+local Table = {
+    first   = 1,
+    second  = 2,
+    last    = 3,
+}
+=-=-=
+
+Name: align comments
+
+=-=
+local first-- 1
+local second -- 2
+local last      -- 3
+=-=
+local first         -- 1
+local second        -- 2
+local last          -- 3
+=-=-=
+
+Name: align assignments and comments
+
+=-=
+local first=1-- one
+local second=2 -- two
+local last=3    -- three
+=-=
+local first  = 1    -- one
+local second = 2    -- two
+local last   = 3    -- three
+=-=-=
+
+Name: align fields and comments
+
+=-=
+local T={
+first=1,--one
+second=2, --two
+last=3,         --three
+}
+=-=
+local T    = {
+    first  = 1,     --one
+    second = 2,     --two
+    last   = 3,     --three
+}
+=-=-=
index a4d9303827fc0f1747e7bd938a142e4bf730dbd1..e5fcd255907087ee7da3477a92130834d4d87f29 100644 (file)
   (ert-test-erts-file (ert-resource-file "latex-mode.erts")
                       (test-align-transform-fun #'latex-mode)))
 
+(ert-deftest align-lua ()
+  (skip-unless (treesit-ready-p 'lua))
+  (let ((comment-column 20)
+        (indent-tabs-mode nil))
+    (ert-test-erts-file (ert-resource-file "lua-ts-mode.erts")
+                        (test-align-transform-fun #'lua-ts-mode))))
+
 (ert-deftest align-python ()
   (ert-test-erts-file (ert-resource-file "python-mode.erts")
                       (test-align-transform-fun #'python-mode)))