From 164b997cb03294464030da065387f47beac272b7 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Tue, 27 Oct 2020 23:18:06 -0400 Subject: [PATCH] Add q text-object for all quotes --- modules/editor/evil/README.org | 2 ++ modules/editor/evil/autoload/textobjects.el | 20 ++++++++++++++++++++ modules/editor/evil/config.el | 1 + 3 files changed, 23 insertions(+) diff --git a/modules/editor/evil/README.org b/modules/editor/evil/README.org index 05d88a66a..b0affc699 100644 --- a/modules/editor/evil/README.org +++ b/modules/editor/evil/README.org @@ -106,6 +106,8 @@ And these are text objects added by this module: + =g= The entire buffer + =i j k= by indentation (=k= includes one line above; =j= includes one line above and below) (provided by ~evil-indent-plus~) ++ =q= For quotes (any kind) ++ =u= For URLs + =x= XML attributes (provided by ~exato~) ** Custom Ex Commands diff --git a/modules/editor/evil/autoload/textobjects.el b/modules/editor/evil/autoload/textobjects.el index ec40a417a..5808946ea 100644 --- a/modules/editor/evil/autoload/textobjects.el +++ b/modules/editor/evil/autoload/textobjects.el @@ -42,3 +42,23 @@ This excludes the protocol and querystring." (evil-range beg (- end (if (evil-visual-state-p) 1 0)) type))) + +;;;###autoload (autoload '+evil:inner-any-quote "editor/evil/autoload/textobjects" nil nil) +(evil-define-text-object +evil:inner-any-quote (count &optional beg end type) + "Select the closest inner quote." + (let ((evil-textobj-anyblock-blocks + '(("'" . "'") + ("\"" . "\"") + ("`" . "`") + ("“" . "”")))) + (evil-textobj-anyblock-inner-block count beg end type))) + +;;;###autoload (autoload '+evil:outer-any-quote "editor/evil/autoload/textobjects" nil nil) +(evil-define-text-object +evil:outer-any-quote (count &optional beg end type) + "Select the closest outer quote." + (let ((evil-textobj-anyblock-blocks + '(("'" . "'") + ("\"" . "\"") + ("`" . "`") + ("“" . "”")))) + (evil-textobj-anyblock-a-block count beg end type))) diff --git a/modules/editor/evil/config.el b/modules/editor/evil/config.el index 27b6113d2..b4ad23408 100644 --- a/modules/editor/evil/config.el +++ b/modules/editor/evil/config.el @@ -541,6 +541,7 @@ directives. By default, this only recognizes C directives.") :textobj "i" #'evil-indent-plus-i-indent #'evil-indent-plus-a-indent :textobj "j" #'evil-indent-plus-i-indent-up-down #'evil-indent-plus-a-indent-up-down :textobj "k" #'evil-indent-plus-i-indent-up #'evil-indent-plus-a-indent-up + :textobj "q" #'+evil:inner-any-quote #'+evil:outer-any-quote :textobj "u" #'+evil:inner-url-txtobj #'+evil:outer-url-txtobj :textobj "x" #'evil-inner-xml-attr #'evil-outer-xml-attr