branch: elpa/evil-matchit
commit 43be86d8c41841a20733718d177e8299d5379218
Author: Chen Bin <[email protected]>
Commit: Chen Bin <[email protected]>
support css-in-js styled components
---
README.org | 2 +-
evil-matchit-javascript.el | 60 ++++++++++++++++++++++++++++++++++------------
evil-matchit.el | 4 ++--
pkg.sh | 2 +-
4 files changed, 49 insertions(+), 19 deletions(-)
diff --git a/README.org b/README.org
index 084a5f102a..5dd87c97c2 100644
--- a/README.org
+++ b/README.org
@@ -1,4 +1,4 @@
-* evil-matchit (v2.3.2)
+* evil-matchit (v2.3.3)
[[http://melpa.org/#/evil-matchit][file:http://melpa.org/packages/evil-matchit-badge.svg]]
[[http://stable.melpa.org/#/evil-matchit][file:http://stable.melpa.org/packages/evil-matchit-badge.svg]]
diff --git a/evil-matchit-javascript.el b/evil-matchit-javascript.el
index e5478a81b4..562f567799 100644
--- a/evil-matchit-javascript.el
+++ b/evil-matchit-javascript.el
@@ -28,6 +28,14 @@
(require 'evil-matchit-sdk)
+;; should try next howto, the purpose is avoid missing any howto
+(defvar evilmi-javascript-extract-keyword-howtos
+ '(("const .* *= *\\(styled\\)[^`]*` *$" 1) ; styled component
+ ("^[ \t]*\\(`\\); *$" 1)))
+
+(defvar evilmi-javascript-match-tags
+ '((("styled") () "`")))
+
(defvar evilmi-javascript-matching-chars
(string-to-list "{[(}}])"))
@@ -54,22 +62,44 @@
;;;###autoload
(defun evilmi-javascript-get-tag ()
;; only handle open tag
- (cond
- ((memq (following-char)
- evilmi-javascript-matching-chars)
- (list (point)))
- (t
- (let* ((r (evilmi--javascript-find-open-brace (evilmi-sdk-curline)))
- (p (line-beginning-position)))
- (when r
- (forward-line (1- (car r)))
- (search-forward (cadr r) nil nil)
- (backward-char)
- (list p))))))
+ (let* (rlt)
+ (cond
+ ;; bracket
+ ((memq (following-char)
+ evilmi-javascript-matching-chars)
+ (setq rlt (list (point))))
+
+ ;; use defined tag
+ ((setq rlt (evilmi-sdk-get-tag evilmi-javascript-match-tags
+ evilmi-javascript-extract-keyword-howtos))
+ ;; do nothing
+ )
+
+ ;; other javascript statements containing brackets
+ (t
+ (let* ((r (evilmi--javascript-find-open-brace (evilmi-sdk-curline)))
+ (p (line-beginning-position)))
+ (when r
+ (forward-line (1- (car r)))
+ (search-forward (cadr r) nil nil)
+ (backward-char)
+ (setq rlt (list p))))))
+ rlt))
;;;###autoload
-(defun evilmi-javascript-jump (rlt NUM)
- (when rlt
+(defun evilmi-javascript-jump (rlt num)
+ "Jump to the matching tag using RLT and NUM."
+ (cond
+ ((not rlt)
+ ;; don nothing
+ )
+ ((evilmi-sdk-get-tag evilmi-javascript-match-tags
+ evilmi-javascript-extract-keyword-howtos)
+ (evilmi-sdk-jump rlt
+ num
+ evilmi-javascript-match-tags
+ evilmi-javascript-extract-keyword-howtos))
+ (t
(evilmi--simple-jump)
(let* ((cur-line (evilmi-sdk-curline)))
;; hack for javascript
@@ -77,6 +107,6 @@
(string-match "^[ \t]*}\(.*\))\; *$" cur-line)
(string-match "^[ \t]*}\])\; *$" cur-line))
(line-end-position)
- (1+ (point))))))
+ (1+ (point)))))))
(provide 'evil-matchit-javascript)
diff --git a/evil-matchit.el b/evil-matchit.el
index e8a9944cfa..2841bac7ed 100644
--- a/evil-matchit.el
+++ b/evil-matchit.el
@@ -4,7 +4,7 @@
;; Author: Chen Bin <[email protected]>
;; URL: http://github.com/redguardtoo/evil-matchit
-;; Version: 2.3.2
+;; Version: 2.3.3
;; Keywords: matchit vim evil
;; Package-Requires: ((evil "1.2.0") (emacs "24.4"))
;;
@@ -455,7 +455,7 @@ If IS-FORWARD is t, jump forward; or else jump backward."
;;;###autoload
(defun evilmi-version()
(interactive)
- (message "2.3.2"))
+ (message "2.3.3"))
;;;###autoload
(define-minor-mode evil-matchit-mode
diff --git a/pkg.sh b/pkg.sh
index dfc8e57a03..26de8a61d8 100755
--- a/pkg.sh
+++ b/pkg.sh
@@ -1,6 +1,6 @@
#!/bin/bash
name=evil-matchit
-version=2.3.2
+version=2.3.3
pkg=$name-$version
mkdir $pkg
cp README.org $pkg