aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--evil-ex.el9
-rw-r--r--evil-vars.el3
2 files changed, 12 insertions, 0 deletions
diff --git a/evil-ex.el b/evil-ex.el
index 3120e79..2546cc1 100644
--- a/evil-ex.el
+++ b/evil-ex.el
@@ -721,6 +721,10 @@ This function interprets special file names like # and %."
(set-text-properties
0 (length evil-ex-argument) nil evil-ex-argument))
(let ((buf (current-buffer)))
+ (when evil-ex-reverse-range
+ (setq evil-ex-reverse-range nil)
+ (unless (y-or-n-p "Backward range given, OK to swap? ")
+ (user-error "Ex command cancelled")))
(unwind-protect
(cond
((not evil-ex-range)
@@ -773,6 +777,11 @@ This function interprets special file names like # and %."
(defun evil-ex-range (beg-line &optional end-line)
"Returns the first and last position of the current range."
+ (when (and end-line (< end-line beg-line))
+ (setq evil-ex-reverse-range t)
+ (let ((beg-line* beg-line))
+ (setq beg-line end-line
+ end-line beg-line*)))
(evil-range
(evil-line-position beg-line)
(evil-line-position (or end-line beg-line) -1)
diff --git a/evil-vars.el b/evil-vars.el
index 5bf1d17..b24004f 100644
--- a/evil-vars.el
+++ b/evil-vars.el
@@ -1890,6 +1890,9 @@ See `evil-ex-init-shell-argument-completion'.")
(defvar evil-ex-tree nil
"The syntax tree.")
+(defvar evil-ex-reverse-range nil
+ "Whether the current ex range was entered reversed.")
+
(defvar evil-ex-command nil
"The current Ex command.")