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

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

[nongnu] elpa/evil-matchit 65b474bb02 031/244: Better C/C++, v1.2.2


From: ELPA Syncer
Subject: [nongnu] elpa/evil-matchit 65b474bb02 031/244: Better C/C++, v1.2.2
Date: Thu, 6 Jan 2022 02:58:47 -0500 (EST)

branch: elpa/evil-matchit
commit 65b474bb02f267604c80264e4e8327da459f4036
Author: Chen Bin <chenbin.sh@gmail.com>
Commit: Chen Bin <chenbin.sh@gmail.com>

    Better C/C++, v1.2.2
    
    - C macro is supported
    - minor tweak for js
---
 README.org             |   8 +++----
 evil-matchit-c.el      |  63 ++++++++++++++++++-------------------------------
 evil-matchit-pkg.el    |   2 +-
 evil-matchit-script.el |   6 ++---
 evil-matchit-simple.el |  19 +++++++++++----
 evil-matchit.el        |  30 +++++++++++++----------
 pkg.sh                 |   2 +-
 screencast.gif         | Bin 318348 -> 318348 bytes
 8 files changed, 65 insertions(+), 65 deletions(-)

diff --git a/README.org b/README.org
index 20c06c4811..03939a382e 100644
--- a/README.org
+++ b/README.org
@@ -1,4 +1,4 @@
-* evil-matchit (current version 1.2.1)
+* evil-matchit (current version 1.2.2)
 
 Vim [[http://www.vim.org/scripts/script.php?script_id=39][matchit.vim]] by 
Benji Fisher ported into Emacs.
 
@@ -134,7 +134,7 @@ I attached the full content of evil-matchit-script.el here:
 (require 'evil-matchit-sdk)
 
 ;; ruby/bash/lua/vimrc
-(defvar evilmi--script-match-tags
+(defvar evilmi-script-match-tags
   '((("unless" "if") ("elif" "elsif" "elseif" "else") ( "end" "fi" "endif"))
     ("begin" ("rescue" "ensure") "end")
     ("case" ("when" "else") ("esac" "end"))
@@ -150,12 +150,12 @@ The third column contains the closed tags(s).
 
 ;;;###autoload
 (defun evilmi-script-get-tag ()
-  (evilmi-sdk-get-tag evilmi--script-match-tags 
evilmi-sdk-extract-keyword-howtos)
+  (evilmi-sdk-get-tag evilmi-script-match-tags 
evilmi-sdk-extract-keyword-howtos)
   )
 
 ;;;###autoload
 (defun evilmi-script-jump (rlt NUM)
-  (evilmi-sdk-jump rlt NUM evilmi--script-match-tags 
evilmi-sdk-extract-keyword-howtos)
+  (evilmi-sdk-jump rlt NUM evilmi-script-match-tags 
evilmi-sdk-extract-keyword-howtos)
   )
 
 (provide 'evil-matchit-script)
diff --git a/evil-matchit-c.el b/evil-matchit-c.el
index ebdc5d68bf..05c9b2bcc2 100644
--- a/evil-matchit-c.el
+++ b/evil-matchit-c.el
@@ -1,4 +1,4 @@
-;;; evil-matchit-c.el ---c like language (c/c++/perl/java/javascript) plugin 
of evil-matchit
+;;; evil-matchit-c.el --c like language (c/c++/perl/java/javascript) plugin of 
evil-matchit
 
 ;; Copyright (C) 2013  Chen Bin <chenbin.sh@gmail.com>
 
@@ -25,56 +25,39 @@
 
 
 ;;; Code:
+(require 'evil-matchit-sdk)
 
-(require 'evil-matchit)
+;; ruby/bash/lua/vimrc
+(defvar evilmi-c-match-tags
+  '((("#ifdef" "#ifndef" "#if") ("#elif" "#else")  "#endif")
+    )
+  "The table we look up match tags. This is a three column table.
+The first column contains the open tag(s).
+The second column contains the middle tag(s).
+The third column contains the closed tags(s).
+"
+  )
 
-(defun evilmi--c-find-open-brace (cur-line)
-  (let (rlt)
-    (if (string-match "^[ \t]* [a-zA-Z0-9]+.*[{] *$" cur-line)
-        (setq rlt 1)
-      (save-excursion
-        (forward-line)
-        (setq cur-line (buffer-substring-no-properties
-                        (line-beginning-position) (line-end-position)))
-        (if (string-match "^[ \t]*{ *$" cur-line)
-            (setq rlt 2)
-          )
-        )
-      )
-    rlt
+(defvar evilmi-c-extract-keyword-howtos
+  '(("^[ \t]*\\(#[a-z]+\\)\\( .*\\| *\\)$" 1)
     )
+
+  "The list of HOWTO on extracting keyword from current line.
+Each howto is actually a pair. The first element of pair is the regular
+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.
+"
   )
 
 ;;;###autoload
 (defun evilmi-c-get-tag ()
-  (let (p
-        forward-line-num
-        rlt
-        (cur-line (buffer-substring-no-properties
-                   (line-beginning-position) (line-end-position)))
-        )
-
-    ;; only handle open tag
-    (if (not (memq (following-char) (string-to-list "{[(}}])")))
-        (if (setq forward-line-num (evilmi--c-find-open-brace cur-line))
-            (when forward-line-num
-              (setq p (line-beginning-position))
-              (forward-line (1- forward-line-num))
-              (search-forward "{" nil nil)
-              (backward-char)
-              (setq rlt (list p))
-              )
-          )
-      (setq rlt (list (point)))
-      )
-    rlt
-    )
+  (evilmi-sdk-get-tag evilmi-c-match-tags evilmi-c-extract-keyword-howtos)
   )
 
 ;;;###autoload
 (defun evilmi-c-jump (rlt NUM)
-  (if rlt (evil-jump-item))
-  (1+ (point))
+  (evilmi-sdk-jump rlt NUM evilmi-c-match-tags evilmi-c-extract-keyword-howtos)
   )
 
 (provide 'evil-matchit-c)
\ No newline at end of file
diff --git a/evil-matchit-pkg.el b/evil-matchit-pkg.el
index 5b601ba8d7..fcb225a24a 100644
--- a/evil-matchit-pkg.el
+++ b/evil-matchit-pkg.el
@@ -1,2 +1,2 @@
-(define-package "evil-matchit" "1.2.1"
+(define-package "evil-matchit" "1.2.2"
                 "Vim matchit ported into Emacs (requires EVIL)")
diff --git a/evil-matchit-script.el b/evil-matchit-script.el
index f0fbee8bb0..84881ce36f 100644
--- a/evil-matchit-script.el
+++ b/evil-matchit-script.el
@@ -32,7 +32,7 @@
 (require 'evil-matchit-sdk)
 
 ;; ruby/bash/lua/vimrc
-(defvar evilmi--script-match-tags
+(defvar evilmi-script-match-tags
   '((("unless" "if") ("elif" "elsif" "elseif" "else") ( "end" "fi" "endif"))
     ("begin" ("rescue" "ensure") "end")
     ("case" ("when" "else") ("esac" "end"))
@@ -48,12 +48,12 @@ The third column contains the closed tags(s).
 
 ;;;###autoload
 (defun evilmi-script-get-tag ()
-  (evilmi-sdk-get-tag evilmi--script-match-tags 
evilmi-sdk-extract-keyword-howtos)
+  (evilmi-sdk-get-tag evilmi-script-match-tags 
evilmi-sdk-extract-keyword-howtos)
   )
 
 ;;;###autoload
 (defun evilmi-script-jump (rlt NUM)
-  (evilmi-sdk-jump rlt NUM evilmi--script-match-tags 
evilmi-sdk-extract-keyword-howtos)
+  (evilmi-sdk-jump rlt NUM evilmi-script-match-tags 
evilmi-sdk-extract-keyword-howtos)
   )
 
 (provide 'evil-matchit-script)
\ No newline at end of file
diff --git a/evil-matchit-simple.el b/evil-matchit-simple.el
index 960004d368..89c7484608 100644
--- a/evil-matchit-simple.el
+++ b/evil-matchit-simple.el
@@ -30,7 +30,7 @@
 
 (defun evilmi--simple-find-open-brace (cur-line)
   (let (rlt)
-    (if (string-match "^[ \t]*[a-zA-Z0-9]+.*{ *$" cur-line)
+    (if (string-match "^[ \t]*\(?[a-zA-Z0-9]+.*{ *$" cur-line)
         (setq rlt 1)
       (save-excursion
         (forward-line)
@@ -73,8 +73,19 @@
 
 ;;;###autoload
 (defun evilmi-simple-jump (rlt NUM)
-  (if rlt (evil-jump-item))
-  (1+ (point))
-  )
+  (let (cur-line)
+    (when rlt
+      (evil-jump-item)
+
+      (setq cur-line (buffer-substring-no-properties
+                      (line-beginning-position)
+                      (line-end-position)))
+      ;; hack for javascript
+      (if (string-match "^[ \t]*})(.*)\; *$" cur-line)
+          (line-end-position)
+        (1+ (point))
+        )
+      )
+    ))
 
 (provide 'evil-matchit-simple)
\ No newline at end of file
diff --git a/evil-matchit.el b/evil-matchit.el
index 5b48d080db..5c29515b51 100644
--- a/evil-matchit.el
+++ b/evil-matchit.el
@@ -4,7 +4,7 @@
 
 ;; Author: Chen Bin <chenbin.sh@gmail.com>
 ;; URL: http://github.com/redguardtoo/evil-matchit
-;; Version: 1.2.1
+;; Version: 1.2.2
 ;; Keywords: matchit vim evil
 ;; Package-Requires: ((evil "1.0.7"))
 ;;
@@ -83,7 +83,16 @@
 
 (defun evilmi-init-plugins ()
   (interactive)
-  ;; html
+
+  ;; simple matching for languages containing "{(["
+  (autoload 'evilmi-simple-get-tag "evil-matchit-simple" nil t)
+  (autoload 'evilmi-simple-jump "evil-matchit-simple" nil t)
+  (mapc (lambda (mode)
+          (plist-put evilmi-plugins mode '((evilmi-simple-get-tag 
evilmi-simple-jump)))
+          )
+        '(java-mode js-mode js2-mode javascript-mode perl-mode cperl-mode))
+
+  ;; Html
   (autoload 'evilmi-html-get-tag "evil-matchit-html" nil t)
   (autoload 'evilmi-html-jump "evil-matchit-html" nil t)
   (mapc (lambda (mode)
@@ -92,30 +101,27 @@
           )
         '(web-mode html-mode nxml-mode nxhtml-mode sgml-mode))
 
-  ;; simple matching for languages containing "{(["
-  (autoload 'evilmi-simple-get-tag "evil-matchit-simple" nil t)
-  (autoload 'evilmi-simple-jump "evil-matchit-simple" nil t)
-
-  ;; latex
+  ;; Latex
   (autoload 'evilmi-latex-get-tag "evil-matchit-latex" nil t)
   (autoload 'evilmi-latex-jump "evil-matchit-latex" nil t)
   (plist-put evilmi-plugins 'latex-mode '((evilmi-latex-get-tag 
evilmi-latex-jump)))
 
-  ;; python
+  ;; Python
   (autoload 'evilmi-python-get-tag "evil-matchit-python" nil t)
   (autoload 'evilmi-python-jump "evil-matchit-python" nil t)
   (plist-put evilmi-plugins 'python-mode '((evilmi-simple-get-tag 
evilmi-simple-jump)
                                            (evilmi-python-get-tag 
evilmi-python-jump)))
 
-  ;; c like language (c/c++/perl/java/javascript)
+  ;; C/C++
   (autoload 'evilmi-c-get-tag "evil-matchit-c" nil t)
   (autoload 'evilmi-c-jump "evil-matchit-c" nil t)
   (mapc (lambda (mode)
-          (plist-put evilmi-plugins mode '((evilmi-c-get-tag evilmi-c-jump)))
+          (plist-put evilmi-plugins mode '((evilmi-simple-get-tag 
evilmi-simple-jump)
+                                           (evilmi-c-get-tag evilmi-c-jump)))
           )
-        '(c-mode c++-mode java-mode js-mode js2-mode javascript-mode perl-mode 
cperl-mode))
+        '(c-mode c++-mode))
 
-  ;; script language (bash/lua/ruby)
+  ;; Bash/Lua/Ruby ... any normal script languages
   (autoload 'evilmi-script-get-tag "evil-matchit-script" nil t)
   (autoload 'evilmi-script-jump "evil-matchit-script" nil t)
   (mapc (lambda (mode)
diff --git a/pkg.sh b/pkg.sh
index b9814bf22a..ef7ec2414a 100755
--- a/pkg.sh
+++ b/pkg.sh
@@ -1,5 +1,5 @@
 #!/bin/bash
-pkg=evil-matchit-1.2.1
+pkg=evil-matchit-1.2.2
 mkdir $pkg
 cp README.org $pkg
 cp *.el $pkg
diff --git a/screencast.gif b/screencast.gif
index 918426b854..be0908372c 100644
Binary files a/screencast.gif and b/screencast.gif differ



reply via email to

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