emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/lua-mode 78f0e09 260/468: Make sure nested token searches


From: Philip Kaludercic
Subject: [nongnu] elpa/lua-mode 78f0e09 260/468: Make sure nested token searches begin from open-token positions
Date: Thu, 5 Aug 2021 04:58:49 -0400 (EDT)

branch: elpa/lua-mode
commit 78f0e09565d77938e9974ac3b38b26a75c1fa6d9
Author: immerrr <immerrr+lua@gmail.com>
Commit: immerrr <immerrr+lua@gmail.com>

    Make sure nested token searches begin from open-token positions
    
    There's a `(forward-char 1)' in the beginning of
    `lua-find-matching-token-word' function to make sure the open-token is
    not found repeatedly that may skip 1-character close-token (e.g. ] or })
    if it's right after the open counterpart.
    
    For example (| being current point):
    - |function() return {} end -> (forward-sexp)
    - |function() return {} end -> (forward-char 1)
    - f|unction() return {} end -> (re-search-forward indentation-modifier)
    - function() return {|} end -> (forward-char 1)
    - function() return {}| end
    
    At this point closing curly braces will be matched incorrectly as the
    close brace has been skipped unmatched.
---
 Makefile             |  1 +
 lua-mode.el          |  1 +
 test/generic-test.el | 13 +++++++++++++
 3 files changed, 15 insertions(+)

diff --git a/Makefile b/Makefile
index 3702314..2c946fb 100644
--- a/Makefile
+++ b/Makefile
@@ -14,6 +14,7 @@ TESTS += test/builtin-font-lock-test.el
 TESTS += test/electric-mode-test.el
 TESTS += test/indentation-test.el
 TESTS += test/strings-and-comments-test.el
+TESTS += test/generic-test.el
 
 default:
        @echo version is $(VERSION)
diff --git a/lua-mode.el b/lua-mode.el
index ad10382..6ff8798 100644
--- a/lua-mode.el
+++ b/lua-mode.el
@@ -1049,6 +1049,7 @@ TOKEN-TYPE determines where the token occurs on a 
statement. open indicates that
                               (eq match-type 'middle-or-open)
                               (eq found-type 'middle-or-open)
                               (eq match-type found-type))
+                          (goto-char found-pos)
                           (lua-find-matching-token-word found-token
                                                         search-direction)))
                     (when maybe-found-pos
diff --git a/test/generic-test.el b/test/generic-test.el
new file mode 100644
index 0000000..148e1a0
--- /dev/null
+++ b/test/generic-test.el
@@ -0,0 +1,13 @@
+(load (concat (file-name-directory (or load-file-name (buffer-file-name)
+                                       default-directory))
+              "test-helper.el") nil 'nomessage 'nosuffix)
+
+(ert-deftest lua-forward-sexp-curly-braces ()
+  (with-lua-buffer
+   (lua-insert-goto-<>
+    '("local x = <>function() return {{}} end"
+      ""
+      "function foobar() end"))
+   (lua-forward-sexp)
+   (should (looking-back "x = function() return {{}} end"))))
+



reply via email to

[Prev in Thread] Current Thread [Next in Thread]