doomemacs/modules/defuns/defuns-regex.el
2016-05-20 22:37:30 -04:00

41 lines
1.5 KiB
EmacsLisp

;;; defuns-regex.el
;;;###autoload
(defun doom|reb-cleanup ()
(replace-regexp "^[ \n]*" "" nil (point-min) (point-max))
(text-scale-set 2)
(goto-char 2))
;;;###autoload (autoload 'doom:regex "defuns-regex" nil t)
(evil-define-operator doom:regex (beg end type &optional regexstr bang)
"Either a) converts selected (or entered-in) pcre regex into elisp
regex, OR b) opens up re-builder."
: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)))))
(provide 'defuns-regex)
;;; defuns-regex.el ends here