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

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

[nongnu] elpa/lua-mode de12f4b 086/468: lua-mark-all-multiline-literals:


From: Philip Kaludercic
Subject: [nongnu] elpa/lua-mode de12f4b 086/468: lua-mark-all-multiline-literals: also handle multiline comments
Date: Thu, 5 Aug 2021 04:58:13 -0400 (EDT)

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

    lua-mark-all-multiline-literals: also handle multiline comments
---
 lua-mode.el | 30 ++++++++++++++++++++++--------
 1 file changed, 22 insertions(+), 8 deletions(-)

diff --git a/lua-mode.el b/lua-mode.el
index 4530610..9a9a7da 100644
--- a/lua-mode.el
+++ b/lua-mode.el
@@ -1209,14 +1209,28 @@ If END is nil, stop at `end-of-buffer'."
   (interactive)
   (lua-clear-multiline-delims begin end)
   (save-excursion
-    (if begin (goto-char begin))
-    (while (re-search-forward "\\[\\(=*\\)\\[" end 'noerror)
-      (unless (lua-comment-or-string-p)
-        (message "found %s" (match-string 0))
-        (lua-mark-char-multiline-delim (match-beginning 0) 'string)
-        (when (re-search-forward (format "\\]%s\\]" (or (match-string 1) "")) 
end 'noerror)
-          (message "found match %s" (match-string 0))
-          (lua-mark-char-multiline-delim (1- (match-end 0)) 'string))))))
+    (goto-char (or begin 1))
+    ;; look for
+    ;; 1. (optional) two or more dashes followed by
+    ;; 2. lua multiline delimiter [[
+
+    (while (re-search-forward "\\(?2:--\\)?\\[\\(?1:=*\\)\\[" end 'noerror)
+      ;; match-start + 1 is considered instead of match-start, because
+      ;; such  approach  handles  '---[[' situation  correctly:  Emacs
+      ;; thinks 2nd dash (i.e.  match-start) is not yet a comment, but
+      ;; the third one is, hence the +1.  In all the other situations,
+      ;; '+1'  is safe  to use  because  it bears  the same  syntactic
+      ;; properties, i.e.  if match-start is inside string-or-comment,
+      ;; then '+1' is too and vice versa.
+      ;;
+      ;; PS. ping me if you find a situation in which this is not true
+      (unless (lua-comment-or-string-p (1+ (match-beginning 0)))
+        (let ((type (if (match-beginning 2) 'comment 'string)))
+          (message "found %s" (match-string 0))
+          (lua-mark-char-multiline-delim (match-beginning 0) type)
+          (when (re-search-forward (format "\\]%s\\]" (or (match-string 1) 
"")) end 'noerror)
+            (message "found match %s" (match-string 0))
+            (lua-mark-char-multiline-delim (1- (match-end 0)) type)))))))
 
 (provide 'lua-mode)
 



reply via email to

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