diff --git a/modules/editor/evil/autoload/textobjects.el b/modules/editor/evil/autoload/textobjects.el index bdadf229c..a1c53b03f 100644 --- a/modules/editor/evil/autoload/textobjects.el +++ b/modules/editor/evil/autoload/textobjects.el @@ -11,3 +11,33 @@ (cl-destructuring-bind (beg . end) (bounds-of-thing-at-point 'defun) (evil-range beg end type))) + +;;;###autoload (autoload '+evil:inner-url-txtobj "editor/evil/autoload/textobjects" nil nil) +(evil-define-text-object +evil:inner-url-txtobj (count &optional _beg _end type) + "Text object to select the inner url at point. + +This excludes the protocol and querystring." + (cl-destructuring-bind (beg . end) + (bounds-of-thing-at-point 'url) + (evil-range + (save-excursion + (goto-char beg) + (re-search-forward "://" end t)) + (save-excursion + (goto-char end) + (- (if-let (pos (re-search-backward "[?#]" beg t)) + pos + end) + (if (evil-visual-state-p) + 1 + 0))) + type))) + +;;;###autoload (autoload '+evil:outer-url-txtobj "editor/evil/autoload/textobjects" nil nil) +(evil-define-text-object +evil:outer-url-txtobj (count &optional _beg _end type) + "Text object to select the whole url at point." + (cl-destructuring-bind (beg . end) + (bounds-of-thing-at-point 'url) + (evil-range + beg (- end (if (evil-visual-state-p) 1 0)) + type))) diff --git a/modules/editor/evil/config.el b/modules/editor/evil/config.el index bb225764c..3a57ce55d 100644 --- a/modules/editor/evil/config.el +++ b/modules/editor/evil/config.el @@ -548,6 +548,7 @@ To change these keys see `+evil-repeat-keys'." :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 "u" #'+evil:inner-url-txtobj #'+evil:outer-url-txtobj :textobj "x" #'evil-inner-xml-attr #'evil-outer-xml-attr ;; evil-easymotion (see `+evil/easymotion')