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

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

[nongnu] elpa/lua-mode c3b103d 290/468: lua-beginning-of-proc: improve d


From: Philip Kaludercic
Subject: [nongnu] elpa/lua-mode c3b103d 290/468: lua-beginning-of-proc: improve defun header regex
Date: Thu, 5 Aug 2021 04:58:55 -0400 (EDT)

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

    lua-beginning-of-proc: improve defun header regex
    
    Now it matches all common Lua function headers, including:
    - local function XXX(...)
    - XXX = function(...)
    - XXX = local function(...)
---
 lua-mode.el          |  9 +++++++--
 test/generic-test.el | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 57 insertions(+), 2 deletions(-)

diff --git a/lua-mode.el b/lua-mode.el
index 6640468..122a51e 100644
--- a/lua-mode.el
+++ b/lua-mode.el
@@ -1537,6 +1537,11 @@ If not, return nil."
        ;; 4. if there's no previous line, indentation is 0
        0))))
 
+(defvar lua--beginning-of-defun-re
+  (lua-rx-to-string '(: bol (? (symbol "local") ws+) lua-funcheader))
+  "Lua top level (matches only at the beginning of line) function header 
regex.")
+
+
 (defun lua-beginning-of-proc (&optional arg)
   "Move backward to the beginning of a lua proc (or similar).
 
@@ -1548,11 +1553,11 @@ Returns t unless search stops due to beginning or end 
of buffer."
   (or arg (setq arg 1))
 
   (while (and (> arg 0)
-              (re-search-backward "^function[ \t]" nil t))
+              (re-search-backward lua--beginning-of-defun-re nil t))
     (setq arg (1- arg)))
 
   (while (and (< arg 0)
-              (re-search-forward "^function[ \t]" nil t))
+              (re-search-forward lua--beginning-of-defun-re nil t))
     (beginning-of-line)
     (setq arg (1+ arg)))
 
diff --git a/test/generic-test.el b/test/generic-test.el
index 0090674..f9d6d47 100644
--- a/test/generic-test.el
+++ b/test/generic-test.el
@@ -19,3 +19,53 @@
       "--[[end here]] end"))
    (lua-forward-sexp)
    (should (looking-back (rx "--[[end here]] end")))))
+
+(ert-deftest lua-beginning-of-defun-different-headers ()
+  (with-lua-buffer
+   (lua-insert-goto-<>
+    '("function foobar()"
+      "<>"
+      "end"))
+   (beginning-of-defun)
+   (should (looking-at "function foobar()")))
+
+  (with-lua-buffer
+   (lua-insert-goto-<>
+    '("local function foobar()"
+      "<>"
+      "end"))
+   (beginning-of-defun)
+   (should (looking-at "local function foobar()")))
+
+  (with-lua-buffer
+   (lua-insert-goto-<>
+    '("local foobar = function()"
+      "<>"
+      "end"))
+   (beginning-of-defun)
+   (should (looking-at "local foobar = function()")))
+
+  (with-lua-buffer
+   (lua-insert-goto-<>
+    '("foobar = function()"
+      "<>"
+      "end"))
+   (beginning-of-defun)
+   (should (looking-at "foobar = function()"))))
+
+(ert-deftest lua-beginning-of-defun-accepts-dots-and-colons ()
+   (with-lua-buffer
+    (lua-insert-goto-<>
+     '("foo.bar = function (x,y,z)"
+       "<>"
+       "end"))
+    (beginning-of-defun)
+    (should (looking-at "foo\\.bar = function (x,y,z)")))
+
+   (with-lua-buffer
+    (lua-insert-goto-<>
+     '("function foo.bar:baz (x,y,z)"
+       "<>"
+       "end"))
+    (beginning-of-defun)
+    (should (looking-at "function foo.bar:baz (x,y,z)"))))



reply via email to

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