[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/evil-matchit 1c1a218d34 067/244: sql
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/evil-matchit 1c1a218d34 067/244: sql |
Date: |
Thu, 6 Jan 2022 02:58:50 -0500 (EST) |
branch: elpa/evil-matchit
commit 1c1a218d34362808ba085342bdfba7471d0e27c1
Author: Chen Bin <chenbin.sh@gmail.com>
Commit: Chen Bin <chenbin.sh@gmail.com>
sql
---
evil-matchit-sql.el | 101 ++++++++++++++++++++++++++++++++++++++++++++++++++++
evil-matchit.el | 6 ++++
2 files changed, 107 insertions(+)
diff --git a/evil-matchit-sql.el b/evil-matchit-sql.el
new file mode 100644
index 0000000000..5d2c32870a
--- /dev/null
+++ b/evil-matchit-sql.el
@@ -0,0 +1,101 @@
+;;; evil-matchit-sql.el ---sql plugin of evil-matchit
+
+;; Copyright (C) 2014 Chen Bin <chenbin.sh@gmail.com>
+
+;; Author: Chen Bin <chenbin.sh@gmail.com>
+
+;; This file is not part of GNU Emacs.
+
+;;; License:
+
+;; This file is part of evil-matchit
+;;
+;; evil-matchit is free software: you can redistribute it and/or
+;; modify it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+;;
+;; evil-matchit is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+
+;;; Code:
+
+;; OPTIONAL, you don't need SDK to write a plugin for evil-matchit
+;; but SDK don make you write less code, isn't it?
+;; All you need to do is just define the match-tags for SDK algorithm to
lookup.
+(require 'evil-matchit-sdk)
+
+;; copied from sql.vim
+;; Handle the following:
+;; if
+;; elseif | elsif
+;; else [if]
+;; end if
+;;
+;; [while condition] loop
+;; leave
+;; break
+;; continue
+;; exit
+;; end loop
+;;
+;; for
+;; leave
+;; break
+;; continue
+;; exit
+;; end loop
+;;
+;; do
+;; statements
+;; doend
+;;
+;; case
+;; when
+;; when
+;; default
+;; end case
+;;
+;; merge
+;; when not matched
+;; when matched
+;;
+;; EXCEPTION
+;; WHEN column_not_found THEN
+;; WHEN OTHERS THEN
+;;
+;; create[ or replace] procedure|function|event
+ ;; '^\s*\<\%(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]+\\)" 1)
+ ("^.* \\(loop\\)[;]? *$" 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")
+ ))
+
+;;;###autoload
+(defun evilmi-sql-get-tag ()
+ (let (rlt)
+ (setq rlt (evilmi-sdk-get-tag evilmi-sql-match-tags
evilmi-sql-extract-keyword-howtos))
+ rlt))
+
+;;;###autoload
+(defun evilmi-sql-jump (rlt NUM)
+ (evilmi-sdk-jump rlt NUM evilmi-sql-match-tags
evilmi-sql-extract-keyword-howtos))
+
+(provide 'evil-matchit-sql)
diff --git a/evil-matchit.el b/evil-matchit.el
index 55171f3bda..51f1802390 100644
--- a/evil-matchit.el
+++ b/evil-matchit.el
@@ -128,6 +128,12 @@ If this flag is nil, then 50 means jump 50 times.")
(plist-put evilmi-plugins 'python-mode '((evilmi-simple-get-tag
evilmi-simple-jump)
(evilmi-python-get-tag
evilmi-python-jump)))
+ ;; SQL
+ (autoload 'evilmi-sql-get-tag "evil-matchit-sql" nil)
+ (autoload 'evilmi-sql-jump "evil-matchit-sql" nil)
+ (plist-put evilmi-plugins 'sql-mode '((evilmi-simple-get-tag
evilmi-simple-jump)
+ (evilmi-sql-get-tag
evilmi-sql-jump)))
+
;; C/C++
(autoload 'evilmi-c-get-tag "evil-matchit-c" nil)
(autoload 'evilmi-c-jump "evil-matchit-c" nil)
- [nongnu] elpa/evil-matchit bd4feb7884 036/244: support cmake v1.2.5, (continued)
- [nongnu] elpa/evil-matchit bd4feb7884 036/244: support cmake v1.2.5, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-matchit 6fabc1b8e7 048/244: support funtional javascript syntax v1.3.1, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-matchit 575e1e652a 037/244: support go-mode v1.2.6, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-matchit d7f45fd142 039/244: updated doc v1.2.7, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-matchit 4d8d55e7f4 052/244: typo, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-matchit 0b2c287826 053/244: perfect support for ruby-mode v1.3.3 #29, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-matchit b4ae58d214 040/244: some ad on stable, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-matchit 04e1d796b9 042/244: support "# ifdef" in c, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-matchit 937a407596 058/244: more tolerant algorithm in c/c++ v1.4.2, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-matchit 9158dc87cc 062/244: case sensitive code is cleaned because Emacs will handle it, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-matchit 1c1a218d34 067/244: sql,
ELPA Syncer <=
- [nongnu] elpa/evil-matchit 1017e2e6ec 069/244: README.org: update MELPA URL, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-matchit 3f08492ec4 072/244: FIXED: #43 no jump at the first line in html v1.5.2, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-matchit bfe8afe2a1 070/244: Merge pull request #40 from xuchunyang/patch-1, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-matchit 257d4ab10c 071/244: #41 workaround web-mode v11 issue, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-matchit c4be28092f 087/244: perfect support for visual-line state v2.1, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-matchit 4780ef4e4a 104/244: scan-sexps buggy in latex-mode, fallback to Evil API, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-matchit 38df050735 103/244: clean code, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-matchit 0941f38bfe 118/244: Add ocaml plugin to evil-matchit.el, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-matchit 4fdcda9fec 056/244: updated README, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-matchit 2f8449cfec 057/244: support Laravel Blade Templating, ELPA Syncer, 2022/01/06