Add my:regex to convert pcre->elisp regex
This commit is contained in:
parent
5d24a9b3f7
commit
afd74a0c98
1 changed files with 30 additions and 1 deletions
|
@ -15,7 +15,36 @@
|
|||
|
||||
(after "evil"
|
||||
(evil-set-initial-state 'reb-mode 'insert)
|
||||
(evil-ex-define-cmd "re[gex]" 're-builder))))
|
||||
(evil-ex-define-cmd "re[gex]" 'my:regex)
|
||||
;; Either a) converts selected (or entered-in) pcre regex into elisp
|
||||
;; regex, OR b) opens up re-builder.
|
||||
(evil-define-operator my:regex (beg end type &optional regexstr bang)
|
||||
:move-point nil
|
||||
:type inclusive
|
||||
:repeat nil
|
||||
(interactive "<R><a><!>")
|
||||
(if (reb-mode-buffer-p)
|
||||
(if regexstr
|
||||
(let ((regexstr (s-trim (buffer-string))))
|
||||
(if bang
|
||||
(rxt-explain-pcre regexstr)
|
||||
(rxt-pcre-to-elisp (s-trim (buffer-string)))))
|
||||
(erase-buffer)
|
||||
(insert (concat "/" regexstr "/")))
|
||||
(cond ((and beg end (/= beg (1- end))) ; Convert selection from pcre regex to elisp
|
||||
(let ((regexstr (buffer-substring-no-properties beg end)))
|
||||
(if bang
|
||||
(rxt-explain-pcre (concat "/" regexstr "/"))
|
||||
(delete-region beg end)
|
||||
(insert (rxt-pcre-to-elisp regexstr)))))
|
||||
(regexstr ; Convert input regex into elisp regex
|
||||
(let ((newregex (rxt-pcre-to-elisp regexstr)))
|
||||
(when bang
|
||||
(setq newregex (s-replace "\\" "\\\\" newregex)))
|
||||
(kill-new newregex)
|
||||
(message "Copied regex to kill ring: %s" newregex)))
|
||||
(t
|
||||
(re-builder))))))))
|
||||
|
||||
(use-package pcre2el
|
||||
:config
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue