[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/evil-matchit 86daa28dbd 201/244: doc, minor regex issue, t
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/evil-matchit 86daa28dbd 201/244: doc, minor regex issue, tdd for lua |
Date: |
Thu, 6 Jan 2022 02:59:01 -0500 (EST) |
branch: elpa/evil-matchit
commit 86daa28dbd200c9a9b016380431f47522fd3c921
Author: Chen Bin <chenbin.sh@gmail.com>
Commit: Chen Bin <chenbin.sh@gmail.com>
doc, minor regex issue, tdd for lua
---
Makefile | 3 ++-
evil-matchit-c.el | 7 ++----
evil-matchit-cmake.el | 9 +++++++-
evil-matchit-elixir.el | 11 +++++-----
evil-matchit-fortran.el | 15 +++++++------
evil-matchit-latex.el | 24 ++++++++++----------
evil-matchit-org.el | 1 -
evil-matchit-python.el | 53 +++++++++++++++++++++++++--------------------
evil-matchit-ruby.el | 7 ++++--
evil-matchit-script.el | 27 +++++++++++++----------
evil-matchit-sh.el | 9 ++++----
evil-matchit-sql.el | 28 ++++++++++++------------
evil-matchit-verilog.el | 31 ++++++++++++++------------
tests/evil-matchit-tests.el | 49 ++++++++++++++++++++++++++++++++++++++++-
14 files changed, 170 insertions(+), 104 deletions(-)
diff --git a/Makefile b/Makefile
index a6ed2b7173..c5e5e0675e 100644
--- a/Makefile
+++ b/Makefile
@@ -11,7 +11,8 @@ clean:
deps:
@mkdir -p deps;
@if [ ! -f deps/evil-1.14.0/evil.el ]; then curl -L
https://stable.melpa.org/packages/evil-1.14.0.tar | tar x -C deps/; fi;
+ @if [ ! -f deps/lua-mode.el ]; then curl -L
https://raw.githubusercontent.com/immerrr/lua-mode/master/lua-mode.el >
deps/lua-mode.el; fi;
.PHONY: test
test: deps clean
- @$(EMACS) -batch -Q -L . -L deps/evil-1.14.0 -l evil-matchit.el -l
tests/evil-matchit-tests.el
\ No newline at end of file
+ @$(EMACS) -batch -Q -L . -L deps/evil-1.14.0 -l deps/lua-mode.el -l
evil-matchit.el -l tests/evil-matchit-tests.el
\ No newline at end of file
diff --git a/evil-matchit-c.el b/evil-matchit-c.el
index 6bd20124d1..cbaa44d234 100644
--- a/evil-matchit-c.el
+++ b/evil-matchit-c.el
@@ -27,16 +27,13 @@
;;; Code:
(require 'evil-matchit-sdk)
-;; ruby/bash/lua/vimrc
(defvar evilmi-c-match-tags
'((("# *ifdef" "# *ifndef" "# *if") ("# *elif" "# *else") "# *endif"
"MONOGAMY")
- ("switch" "case" "default" "MONOGAMY")
- ))
+ ("switch" "case" "default" "MONOGAMY")))
(defvar evilmi-c-extract-keyword-howtos
'(("^[ \t]*\\(# *[a-z]+\\)" 1)
- ("^[ \t]*\\([a-z]+\\)\\([ (:].*\\| *\\)$" 1)
- ))
+ ("^[ \t]*\\([a-z]+\\)\\([ (:].*\\| *\\)$" 1)))
;;;###autoload
(defun evilmi-c-get-tag ()
diff --git a/evil-matchit-cmake.el b/evil-matchit-cmake.el
index 59a1ac3e49..bbf98ed83a 100644
--- a/evil-matchit-cmake.el
+++ b/evil-matchit-cmake.el
@@ -1,4 +1,4 @@
-;;; evil-matchit-cmake.el ---cmake (ruby/lua) plugin of evil-matchit
+;;; evil-matchit-cmake.el --- cmake plugin of evil-matchit
;; Copyright (C) 2014-2020 Chen Bin <chenbin DOT sh AT gmail DOT com>
@@ -24,6 +24,10 @@
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;
+
;;; Code:
;; OPTIONAL, you don't need SDK to write a plugin for evil-matchit
@@ -57,3 +61,6 @@
evilmi-cmake-extract-keyword-howtos))
(provide 'evil-matchit-cmake)
+
+(provide 'evil-matchit-cmake)
+;;; evil-matchit-cmake.el ends here
diff --git a/evil-matchit-elixir.el b/evil-matchit-elixir.el
index e42b9a4ee7..a0ff995604 100644
--- a/evil-matchit-elixir.el
+++ b/evil-matchit-elixir.el
@@ -1,4 +1,4 @@
-;;; evil-matchit-elixir.el ---elixir plugin of evil-matchit
+;;; evil-matchit-elixir.el --- elixir plugin of evil-matchit
;; Copyright (C) 2018-2020 Chen Bin <chenbin DOT sh AT gmail DOT com>
@@ -22,8 +22,9 @@
;;
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-
+;;
+;;; Commentary:
+;;
;;; Code:
;; OPTIONAL, you don't need SDK to write a plugin for evil-matchit
@@ -64,13 +65,13 @@
rlt))
;;;###autoload
-(defun evilmi-elixir-jump (rlt NUM)
+(defun evilmi-elixir-jump (rlt num)
(cond
((integerp rlt)
(goto-char rlt))
(t
(evilmi-sdk-jump rlt
- NUM
+ num
evilmi-elixir-match-tags
evilmi-elixir-extract-keyword-howtos))))
diff --git a/evil-matchit-fortran.el b/evil-matchit-fortran.el
index f5f45dece3..74e4d1e8f8 100644
--- a/evil-matchit-fortran.el
+++ b/evil-matchit-fortran.el
@@ -1,4 +1,4 @@
-;;; evil-matchit-fortran.el ---fortran (ruby/lua) plugin of evil-matchit
+;;; evil-matchit-fortran.el --- fortran plugin of evil-matchit
;; Copyright (C) 2014-2020 Chen Bin <chenbin DOT sh AT gmail DOT com>
@@ -22,8 +22,10 @@
;;
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-
+;;
+;;; Commentary:
+;;
+;;
;;; Code:
;; OPTIONAL, you don't need SDK to write a plugin for evil-matchit
@@ -56,12 +58,11 @@
;;;###autoload
(defun evilmi-fortran-get-tag ()
- (evilmi-sdk-get-tag evilmi-fortran-match-tags
evilmi-fortran-extract-keyword-howtos)
- )
+ (evilmi-sdk-get-tag evilmi-fortran-match-tags
evilmi-fortran-extract-keyword-howtos))
;;;###autoload
(defun evilmi-fortran-jump (rlt NUM)
- (evilmi-sdk-jump rlt NUM evilmi-fortran-match-tags
evilmi-fortran-extract-keyword-howtos)
- )
+ (evilmi-sdk-jump rlt NUM evilmi-fortran-match-tags
evilmi-fortran-extract-keyword-howtos))
(provide 'evil-matchit-fortran)
+;;; evil-matchit-fortran.el ends here
diff --git a/evil-matchit-latex.el b/evil-matchit-latex.el
index 1a5aa556e9..6eec68f1c8 100644
--- a/evil-matchit-latex.el
+++ b/evil-matchit-latex.el
@@ -1,4 +1,4 @@
-;;; evil-matchit-latex.el ---latex plugin of evil-matchit
+;;; evil-matchit-latex.el --- latex plugin of evil-matchit
;; Copyright (C) 2014-2020 Chen Bin <chenbin DOT sh AT gmail DOT com>
@@ -22,31 +22,29 @@
;;
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-
+;;
+;;; Commentary:
+;;
;;; Code:
+
(require 'evil-matchit-sdk)
(defvar evilmi-latex-extract-keyword-howtos
- '(("\\\\\\([a-zA-Z]+\\(\{[a-zA-Z0-9+*_-]+\}\\)?\\)" 1)
- ))
-;; (defvar evilmi-latex-regexp
"\\\\\\([a-zA-Z]+\\(\{[a-zA-Z0-9+*_-]+\}\\)?\\)")
+ '(("\\\\\\([a-zA-Z]+\\(\{[a-zA-Z0-9+*_-]+\}\\)?\\)" 1)))
(defvar evilmi-latex-match-tags
'((("if[a-zA-Z]+" "if") "else" "fi" "MONOGAMY")
("left" nil "right" "MONOGAMY")
("begin[a-z]+" nil "end[a-z]+")
- ("begin\{[a-zA-Z0-9+*_-]+\}" nil "end\{[a-zA-Z0-9+*_-]+\}")
- ))
+ ("begin\{[a-zA-Z0-9+*_-]+\}" nil "end\{[a-zA-Z0-9+*_-]+\}")))
;;;###autoload
(defun evilmi-latex-get-tag ()
- (let (rlt)
- (setq rlt (evilmi-sdk-get-tag evilmi-latex-match-tags
evilmi-latex-extract-keyword-howtos))
- rlt))
+ (evilmi-sdk-get-tag evilmi-latex-match-tags
evilmi-latex-extract-keyword-howtos))
;;;###autoload
-(defun evilmi-latex-jump (rlt NUM)
- (evilmi-sdk-jump rlt NUM evilmi-latex-match-tags
evilmi-latex-extract-keyword-howtos))
+(defun evilmi-latex-jump (rlt num)
+ (evilmi-sdk-jump rlt num evilmi-latex-match-tags
evilmi-latex-extract-keyword-howtos))
(provide 'evil-matchit-latex)
+;;; evil-matchit-latex.el ends here
diff --git a/evil-matchit-org.el b/evil-matchit-org.el
index 89aa268359..be716a9f61 100644
--- a/evil-matchit-org.el
+++ b/evil-matchit-org.el
@@ -41,7 +41,6 @@ expression to match the current line. The second is the index
of sub-matches
to extract the keyword which starts from one. The sub-match is the match
defined
between '\\(' and '\\)' in regular expression.")
-;; ruby/bash/lua/vimrc
(defvar evilmi-org-match-tags
'((("begin_src") () ( "end_src") "MONOGAMY")
(("begin_example") () ( "end_example") "MONOGAMY")
diff --git a/evil-matchit-python.el b/evil-matchit-python.el
index 7135f75321..4368e0f764 100644
--- a/evil-matchit-python.el
+++ b/evil-matchit-python.el
@@ -1,4 +1,4 @@
-;;; evil-matchit-python.el ---python plugin of evil-matchit
+;;; evil-matchit-python.el --- python plugin of evil-matchit
;; Copyright (C) 2014-2020 Chen Bin <chenbin DOT sh AT gmail DOT com>
@@ -24,12 +24,16 @@
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;
+
;;; Code:
(require 'evil-matchit-sdk)
-;; @return number of indent
(defun evilmi--python-calculate-indent (line)
+ "Return number of indent of LINE."
(let* (prefix)
(cond
((string-match "^[ \t]*$" line)
@@ -47,9 +51,10 @@
;; line begin at the first column
0))))
-;; jump from else to if, jump from finally to try
-;; only python need this hack, a weird language
(defun evilmi--python-move-to-first-open-tag (cur-indent)
+ "Jump to the open tag based on CUR-INDENT.
+For example, jump from the tag \"finally\" to \"try\".
+Only python need this hack."
(let* (out-of-loop
keyword
where-to-go
@@ -57,15 +62,15 @@
(cur-line (evilmi-sdk-curline)))
;; extract keyword from current line
- (if (string-match "^[ \t]*\\([a-z]+\\) *.*:\s*\\(#.*\\)?$" cur-line)
+ (if (string-match "^[ \t]*\\([a-z]+\\) *.*:[ \t]*\\(#.*\\)?$" cur-line)
(setq keyword (match-string 1 cur-line)))
(cond
((string= keyword "else")
- (setq regexp "^[ \t]*\\(if\\) *.*:\s*\\(#.*\\)?$"))
+ (setq regexp "^[ \t]*\\(if\\) *.*:[ \t]*\\(#.*\\)?$"))
((or (string= keyword "finally") (string= keyword "except"))
- (setq regexp "^[ \t]*\\(try\\) *.*:\s*\\(#.*\\)?$")))
+ (setq regexp "^[ \t]*\\(try\\) *.*:[ \t]*\\(#.*\\)?$")))
(when regexp
(save-excursion
@@ -86,6 +91,7 @@
(skip-chars-forward " \t")))))
(defun evilmi--python-move-to-next-open-tag (keyword cur-indent)
+ "Move to next open tag using KEYWORD and CUR-INDENT."
(let* (out-of-loop
where-to-go
regexp
@@ -93,13 +99,13 @@
(cond
((string= keyword "try")
- (setq regexp "^[ \t]*\\(except\\) *.*:\s*\\(#.*\\)?$"))
+ (setq regexp "^[ \t]*\\(except\\) *.*:[ \t]*\\(#.*\\)?$"))
((string= keyword "except")
- (setq regexp "^[ \t]*\\(except\\|finally\\) *.*:\s*\\(#.*\\)?$"))
+ (setq regexp "^[ \t]*\\(except\\|finally\\) *.*:[ \t]*\\(#.*\\)?$"))
((or (string= keyword "elif") (string= keyword "if"))
- (setq regexp "^[ \t]*\\(elif\\|else\\) *.*:\s*\\(#.*\\)?$")))
+ (setq regexp "^[ \t]*\\(elif\\|else\\) *.*:[ \t]*\\(#.*\\)?$")))
(save-excursion
(while (not out-of-loop)
@@ -111,8 +117,8 @@
(setq where-to-go (line-beginning-position)))
(setq out-of-loop t))
;; if it's last line, we need get out of loop
- (if (= (point-max) (line-end-position))
- (setq out-of-loop t))))
+ (when (= (point-max) (line-end-position))
+ (setq out-of-loop t))))
(when where-to-go
(goto-char where-to-go)
@@ -120,9 +126,9 @@
;;;###autoload
(defun evilmi-python-get-tag ()
- "Reutrn '(start-position tag-type keyword)."
+ "Return '(start-position tag-type keyword)."
(let* (rlt
- (regexp "^[ \t]*\\([a-z]+\\) *.*:\s*\\(#.*\\)?$")
+ (regexp "^[ \t]*\\([a-z]+\\) *.*:[ \t]*\\(#.*\\)?$")
(cur-line (evilmi-sdk-curline))
next-line)
@@ -141,9 +147,7 @@
;; double check next line to make sure current line is close tag
;; if next line indention is less than current line or next line is
empty line
;; we are at closed tag now, will jump backward
- (setq rlt (list (line-end-position)
- 1
- "")))
+ (setq rlt (list (line-end-position) 1 "")))
(t
(setq rlt nil)))
@@ -153,17 +157,17 @@
rlt))
;;;###autoload
-(defun evilmi-python-jump (rlt NUM)
- (let* ((p (nth 0 rlt))
- (tag-type (nth 1 rlt))
- (keyword (nth 2 rlt))
+(defun evilmi-python-jump (info num)
+ "Use INFO returned by `evilmi-python-get-tag' and NUM to jump to matched
tag."
+ (ignore num)
+ (let* ((p (nth 0 info))
+ (tag-type (nth 1 info))
+ (keyword (nth 2 info))
(cur-line (evilmi-sdk-curline))
- cur-indent
+ (cur-indent (evilmi--python-calculate-indent cur-line))
dendent
rlt)
- (setq cur-indent (evilmi--python-calculate-indent cur-line))
-
(if evilmi-debug (message "evilmi-python-jump called. tag-type=%d p=%d"
tag-type p))
(cond
;; start from closed tag
@@ -208,3 +212,4 @@
rlt))
(provide 'evil-matchit-python)
+;;; evil-matchit-python.el ends here
diff --git a/evil-matchit-ruby.el b/evil-matchit-ruby.el
index 19672a709f..75061a0c2f 100644
--- a/evil-matchit-ruby.el
+++ b/evil-matchit-ruby.el
@@ -1,4 +1,4 @@
-;;; evil-matchit-ruby.el ---ruby plugin of evil-matchit
+;;; evil-matchit-ruby.el --- ruby plugin of evil-matchit
;; Copyright (C) 2014-2020 Chen Bin <chenbin DOT sh AT gmail DOT com>
@@ -29,7 +29,9 @@
;; OPTIONAL, you don't need SDK to write a plugin for evil-matchit
;; but SDK do make you write less code, isn't it?
;; All you need to do is just define the match-tags for SDK algorithm to
lookup.
-
+;;
+;;; Commentary:
+;;
;;; Code:
(require 'evil-matchit-sdk)
@@ -57,3 +59,4 @@
(evilmi-sdk-jump rlt num evilmi-ruby-match-tags
evilmi-ruby-extract-keyword-howtos))
(provide 'evil-matchit-ruby)
+;;; evil-matchit-ruby.el ends here
diff --git a/evil-matchit-script.el b/evil-matchit-script.el
index 4d2a847303..7bc7c4b7fd 100644
--- a/evil-matchit-script.el
+++ b/evil-matchit-script.el
@@ -1,4 +1,4 @@
-;;; evil-matchit-script.el ---script (ruby/lua) plugin of evil-matchit
+;;; evil-matchit-script.el --- script (vimrc/lua) plugin of evil-matchit
;; Copyright (C) 2014-2020 Chen Bin <chenbin DOT sh AT gmail DOT com>
@@ -23,6 +23,8 @@
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
+;;; Commentary:
+;;
;;; Code:
@@ -31,29 +33,30 @@
;; All you need to do is just define the match-tags for SDK algorithm to
lookup.
(require 'evil-matchit-sdk)
-;; ruby/bash/lua/vimrc
(defvar evilmi-script-match-tags
'((("unless" "if") ("elif" "elsif" "elseif" "else") ("end" "fi" "endif"))
("begin" ("rescue" "ensure") "end")
("case" ("when" "else") ("esac" "end"))
("for" () "end")
(("fun!" "function!" "class" "def" "while" "function" "do") () ("end"
"endfun" "endfunction"))
- ("repeat" () "until")
- ))
+ ("repeat" () "until")))
(defvar evilmi-script-extract-keyword-howtos
- '(("^.*\\(=\\|local\s\\)\s*\\(function\\)\s*.*$" 2)
- ("^\s*\\([a-z]+\!?\\)\\(\s.*\\| *\\)$" 1)
- ("^.*\s\\(do\\)\s|[a-z0-9A-Z,|]+|$" 1)))
+ '(("^.*\\(=\\|local[ \t]\\)[ \t]*\\(function\\)[ \t]*.*$" 2)
+ ;; lua code: "local thread = coroutine.create(function() ... )"
+ ("\\(function\\)([^()]*)[ \t]*$" 1)
+ ("^[ \t]*\\([a-z]+!?\\)[)]?\\([ \t].*\\| *\\)$" 1)
+ ("^.*[ \t]\\(do\\)[ \t]|[a-z0-9A-Z,|]+|$" 1)))
;;;###autoload
(defun evilmi-script-get-tag ()
- (evilmi-sdk-get-tag evilmi-script-match-tags
evilmi-script-extract-keyword-howtos)
- )
+ "Get tag at point."
+ (evilmi-sdk-get-tag evilmi-script-match-tags
evilmi-script-extract-keyword-howtos))
;;;###autoload
-(defun evilmi-script-jump (rlt NUM)
- (evilmi-sdk-jump rlt NUM evilmi-script-match-tags
evilmi-script-extract-keyword-howtos)
- )
+(defun evilmi-script-jump (info num)
+ "Use INFO returned by `evilmi-script-get-tag' and NUM to jump to matched
tag."
+ (evilmi-sdk-jump info num evilmi-script-match-tags
evilmi-script-extract-keyword-howtos))
(provide 'evil-matchit-script)
+;;; evil-matchit-script.el ends here
\ No newline at end of file
diff --git a/evil-matchit-sh.el b/evil-matchit-sh.el
index 1015a27429..932ed0fb4a 100644
--- a/evil-matchit-sh.el
+++ b/evil-matchit-sh.el
@@ -1,4 +1,4 @@
-;;; evil-matchit-sh.el ---sh (bash/zsh) plugin of evil-matchit
+;;; evil-matchit-sh.el --- sh (bash/zsh) plugin of evil-matchit
;; Copyright (C) 2014-2020 Chen Bin <chenbin DOT sh AT gmail DOT com>
@@ -22,8 +22,9 @@
;;
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-
+;;
+;;; Commentary:
+;;
;;; Code:
;; OPTIONAL, you don't need SDK to write a plugin for evil-matchit
@@ -31,7 +32,6 @@
;; All you need to do is just define the match-tags for SDK algorithm to
lookup.
(require 'evil-matchit-sdk)
-;; ruby/bash/lua/vimrc
(defvar evilmi-sh-match-tags
'((("if") ("elif" "else") ("fi") "MONOGAMY")
("case" (";;") ("esac") "MONOGAMY")
@@ -51,3 +51,4 @@
(evilmi-sdk-jump rlt NUM evilmi-sh-match-tags
evilmi-sh-extract-keyword-howtos))
(provide 'evil-matchit-sh)
+;;; evil-matchit-sh.el ends here
diff --git a/evil-matchit-sql.el b/evil-matchit-sql.el
index 4a3382118c..01c485a4e5 100644
--- a/evil-matchit-sql.el
+++ b/evil-matchit-sql.el
@@ -1,4 +1,4 @@
-;;; evil-matchit-sql.el ---sql plugin of evil-matchit
+;;; evil-matchit-sql.el --- sql plugin of evil-matchit
;; Copyright (C) 2014-2020 Chen Bin <chenbin DOT sh AT gmail DOT com>
@@ -22,8 +22,9 @@
;;
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-
+;;
+;;; Commentary:
+;;
;;; Code:
;; OPTIONAL, you don't need SDK to write a plugin for evil-matchit
@@ -71,31 +72,30 @@
;; WHEN OTHERS THEN
;;
;; create[ or replace] procedure|function|event
- ;; '^\s*\<\%(do\|for\|while\|loop\)\>.*:'.
+ ;; '^[ \t]*\<\%(do\|for\|while\|loop\)\>.*:'.
;; TODO for one howto, if it cannot match any keyword,
;; should try next howto, the purpose is avoid missing any howto
(defvar evilmi-sql-extract-keyword-howtos
- '(("^[ \t]*\\([a-zA-Z]+ [a-zA-Z]+\\)" 1)
+ '(("^[ \t]*\\([a-zA-Z]+[ \t][a-zA-Z]+\\)" 1)
("^[ \t]*\\([a-zA-Z]+\\)" 1)
- ("^.* \\(loop\\)[;]? *$" 1)
- ))
+ ("^.*[ \t]\\(loop\\)[;]?[ \t]*$" 1)))
(defvar evilmi-sql-match-tags
'(("if" ("elsif" "else" "elseif" "else *if") ("end" "end *if"))
(("loop") ("leave" "break" "continue" "exit") ("end loop"))
("begin" () "end")
("case" ("when *others") ("end *case" "end"))
- (("do") () "do *end")
- ))
+ (("do") () "do *end")))
;;;###autoload
(defun evilmi-sql-get-tag ()
- (let (rlt)
- (setq rlt (evilmi-sdk-get-tag evilmi-sql-match-tags
evilmi-sql-extract-keyword-howtos))
- rlt))
+ "Get tag at point."
+ (evilmi-sdk-get-tag evilmi-sql-match-tags evilmi-sql-extract-keyword-howtos))
;;;###autoload
-(defun evilmi-sql-jump (rlt NUM)
- (evilmi-sdk-jump rlt NUM evilmi-sql-match-tags
evilmi-sql-extract-keyword-howtos))
+(defun evilmi-sql-jump (info num)
+ "Use INFO returned by `evilmi-sql-get-tag' and NUM to jump to matched tag."
+ (evilmi-sdk-jump info num evilmi-sql-match-tags
evilmi-sql-extract-keyword-howtos))
(provide 'evil-matchit-sql)
+;;; evil-matchit-sql.el ends here
diff --git a/evil-matchit-verilog.el b/evil-matchit-verilog.el
index eed25fa911..2f5c8a61db 100644
--- a/evil-matchit-verilog.el
+++ b/evil-matchit-verilog.el
@@ -1,4 +1,4 @@
-;;; evil-matchit-verilog.el ---verilog plugin of evil-matchit
+;;; evil-matchit-verilog.el --- verilog plugin of evil-matchit
;; Copyright (C) 2014-2020 Chen Bin <chenbin DOT sh AT gmail DOT com>
@@ -22,8 +22,9 @@
;;
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-
+;;
+;;; Commentary:
+;;
;;; Code:
;; OPTIONAL, you don't need SDK to write a plugin for evil-matchit
@@ -93,11 +94,12 @@
;;;###autoload
(defun evilmi-verilog-get-tag ()
- (let* ((orig-info (evilmi-sdk-get-tag evilmi-verilog-match-tags
+ "Get tag at point."
+ (let* ((info (evilmi-sdk-get-tag evilmi-verilog-match-tags
evilmi-verilog-extract-keyword-howtos)))
- (if evilmi-debug (message "evilmi-verilog-get-tag called => %s" orig-info))
+ (if evilmi-debug (message "evilmi-verilog-get-tag called => %s" info))
;; hack if current line is `if' or `else if'
- (unless orig-info
+ (unless info
(let* ((cur-line (evilmi-sdk-curline))
next-line
(pos (line-beginning-position)))
@@ -105,19 +107,20 @@
;; second chance for if else statement
(save-excursion
(forward-line 1)
- (setq orig-info (evilmi-sdk-get-tag evilmi-verilog-match-tags
+ (setq info (evilmi-sdk-get-tag evilmi-verilog-match-tags
evilmi-verilog-extract-keyword-howtos)))
;; move to the next line now. maybe there exist end statement
- (when orig-info
+ (when info
(forward-line 1)
- (setq orig-info (cons pos (cdr orig-info)))))))
- orig-info))
+ (setq info (cons pos (cdr info)))))))
+ info))
;;;###autoload
-(defun evilmi-verilog-jump (orig-info num)
- (let* ((orig-keyword (evilmi-sdk-keyword (cadr orig-info))))
- (if evilmi-debug (message "evilmi-verilog-jump called => %s" orig-info))
- (evilmi-sdk-jump orig-info
+(defun evilmi-verilog-jump (info num)
+ "Use INFO returned by `evilmi-verlog-get-tag' and NUM to jump to matched
tag."
+ (let* ((orig-keyword (evilmi-sdk-keyword (cadr info))))
+ (if evilmi-debug (message "evilmi-verilog-jump called => %s" info))
+ (evilmi-sdk-jump info
num
evilmi-verilog-match-tags
evilmi-verilog-extract-keyword-howtos)))
diff --git a/tests/evil-matchit-tests.el b/tests/evil-matchit-tests.el
index bddc0eebb7..1768c2319e 100644
--- a/tests/evil-matchit-tests.el
+++ b/tests/evil-matchit-tests.el
@@ -173,8 +173,55 @@
; jump back
(evilmi-jump-items)
(should (eq (following-char) ?{))
- (should (string-match "switch(c)" (evilmi-sdk-curline) ))
+ (should (string-match "switch(c)" (evilmi-sdk-curline)))
(should (eq major-mode 'c-mode))))
+
+(ert-deftest evilmi-test-lua ()
+ (with-temp-buffer
+ (insert "if configTable:FindFirstChild(configName) then\n"
+ " configs[configName] =
configTable:FindFirstChild(configName).Value\n"
+ "else\n"
+ " configs[configName] = defaultValue\n"
+ "end\n"
+ "\n"
+ "local thread = coroutine.create(function()\n"
+ " while true do\n"
+ " wait()\n"
+ " if state then\n"
+ " display.Text = state.Name\n"
+ " end\n"
+ " end\n"
+ "end)\n")
+ (lua-mode)
+
+ ;; jump from start
+ (goto-char (point-min))
+
+ ;; test if else end
+ (evilmi-jump-items)
+ (should (string= "else" (thing-at-point 'symbol)))
+ (evilmi-jump-items)
+ (should (string= "end" (thing-at-point 'symbol)))
+ (evilmi-jump-items)
+ ;; no back to the beginning
+ (should (string= "if" (thing-at-point 'symbol)))
+ (should (eq (point) (point-min)))
+
+ ;; test function
+ (search-forward "local thread = coroutine.create")
+ (evilmi-jump-items)
+ (should (string= "end)" (evilmi-sdk-curline)))
+ (evilmi-jump-items)
+ (should (string= "local thread = coroutine.create(function()" (string-trim
(evilmi-sdk-curline))))
+ ;; test while embedded in function
+ (search-forward "while true do")
+ (evilmi-jump-items)
+ (should (string= "end" (thing-at-point 'symbol)))
+ (evilmi-jump-items)
+ (should (string= "while true do" (string-trim (evilmi-sdk-curline))))
+
+ (should (eq major-mode 'lua-mode))))
+
(ert-run-tests-batch-and-exit)
;;; evil-matchit-tests.el ends here
- [nongnu] elpa/evil-matchit e15ad8406b 155/244: Merge pull request #95 from linchen2chris/master, (continued)
- [nongnu] elpa/evil-matchit e15ad8406b 155/244: Merge pull request #95 from linchen2chris/master, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-matchit a8a8625fc2 144/244: Merge pull request #90 from Khady/patch-2, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-matchit 11f57d8f52 142/244: Merge pull request #89 from Khady/patch-1, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-matchit f471bc97bd 137/244: tsx needs jsx support as well, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-matchit 0d463ab3da 172/244: Ocaml: add normal parentheses support, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-matchit 5cea6fde1c 162/244: clean code and wording, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-matchit fb04ffae4b 176/244: Treat source blocks labelled as "elisp"., ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-matchit b00671fb9e 186/244: Mark evilmi-jump-items as a jump motion, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-matchit ea1e867129 181/244: support more ruby syntax, thanks to @kriansa, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-matchit 9ef1325305 200/244: wording, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-matchit 86daa28dbd 201/244: doc, minor regex issue, tdd for lua,
ELPA Syncer <=
- [nongnu] elpa/evil-matchit 437f67689c 203/244: fix f90-mode bug, add fortran unit test, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-matchit 8c8c94bea8 231/244: fixed ci, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-matchit 96a1aba323 210/244: Add ocaml tests, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-matchit 9cd0ddaacb 233/244: can jump between quotes in plain text, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-matchit 539192328e 215/244: fixed minor bug #127, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-matchit 23a0576255 213/244: fixed: can not jump tag from prompt line in shell-mode sometimes, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-matchit d701acb054 158/244: Merge pull request #96 from JJPandari/master, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-matchit cc3654b00d 133/244: only keep fn-end and do-else-end pairs, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-matchit 7bee6fad80 167/244: Merge pull request #106 from porras/patch-1, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-matchit abe43359bf 160/244: Merge pull request #98 from nitros12/master, ELPA Syncer, 2022/01/06