[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/evil-numbers caa4679814 031/145: Merge pull request #3 fro
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/evil-numbers caa4679814 031/145: Merge pull request #3 from mlf176f2/evil-numbers-in-region |
Date: |
Thu, 6 Jan 2022 03:00:16 -0500 (EST) |
branch: elpa/evil-numbers
commit caa467981427431a61f403090a2308fb51525db8
Merge: e40b606d92 6e13c0450a
Author: Michael Markert <markert.michael@googlemail.com>
Commit: Michael Markert <markert.michael@googlemail.com>
Merge pull request #3 from mlf176f2/evil-numbers-in-region
Allow region processing.
---
README.org | 4 +++
evil-numbers.el | 85 +++++++++++++++++++++++++++++++++++++--------------------
2 files changed, 59 insertions(+), 30 deletions(-)
diff --git a/README.org b/README.org
index 2e073a4e50..e0b8516c2d 100644
--- a/README.org
+++ b/README.org
@@ -4,6 +4,10 @@
- works like C-a/C-x in vim, i.e. searches for number up to eol and then
increments or decrements and keep zero padding up (unlike in vim)
+ - When a region is active, as in evil's visual mode, all the
+ numbers within that region will be incremented/decremented (unlike
+ in vim)
+
** Detected Literals
- binary, e.g. =0b0101=, =0B0101=
- octal, e.g. =0o755=, =0O700=
diff --git a/evil-numbers.el b/evil-numbers.el
index d92843c288..1c3bede879 100644
--- a/evil-numbers.el
+++ b/evil-numbers.el
@@ -53,40 +53,65 @@
;;; Code:
;;;###autoload
-(defun evil-numbers/inc-at-pt (amount)
- "Increment the number at point or after point before end-of-line by `amount'"
+(defun evil-numbers/inc-at-pt (amount &optional no-region)
+ "Increment the number at point or after point before end-of-line by `amount'.
+When region is selected, increment all numbers in the region by `amount'
+
+NO-REGION is internal flag that allows
+`evil-numbers/inc-at-point' to be called recursively when
+applying the regional features of `evil-numbers/inc-at-point'.
+
+"
(interactive "p*")
- (save-match-data
- (if (not (evil-numbers/search-number))
- (error "No number at point or until end of line")
- (or
- ;; find binary literals
- (evil-numbers/search-and-replace "0[bB][01]*" "01" "\\([01]+\\)" amount
2)
-
- ;; find octal literals
- (evil-numbers/search-and-replace "0[oO][0-7]*" "01234567"
"\\([0-7]+\\)" amount 8)
-
- ;; find hex literals
- (evil-numbers/search-and-replace "0[xX][0-9a-fA-F]*"
- "0123456789abcdefABCDEF"
- "\\([0-9a-fA-F]+\\)" amount 16)
-
- ;; find decimal literals
- (progn
- (skip-chars-backward "0123456789")
- (skip-chars-backward "-")
- (when (looking-at "-?\\([0-9]+\\)")
- (replace-match
- (format (format "%%0%dd" (- (match-end 1) (match-beginning 1)))
- (+ amount (string-to-number (match-string 0) 10))))
- ;; Moves point one position back to conform with Vim
- (forward-char -1)
- t))
- (error "No number at point or until end of line")))))
+ (cond
+ ((and (not no-region) (region-active-p))
+ (let (deactivate-mark
+ (rb (region-beginning))
+ (re (region-end)))
+ (save-excursion
+ (save-match-data
+ (goto-char rb)
+ (while (re-search-forward
"\\(?:0\\(?:[Bb][01]+\\|[Oo][0-7]+\\|[Xx][0-9A-Fa-f]+\\)\\|-?[0-9]+\\)" re t)
+ (evil-numbers/inc-at-pt amount 'no-region)
+ ;; Undo vim compatability.
+ (forward-char 1)))))
+ (setq deactivate-mark t))
+ (t
+ (save-match-data
+ (if (not (evil-numbers/search-number))
+ (error "No number at point or until end of line")
+ (or
+ ;; find binary literals
+ (evil-numbers/search-and-replace "0[bB][01]+" "01" "\\([01]+\\)"
amount 2)
+
+ ;; find octal literals
+ (evil-numbers/search-and-replace "0[oO][0-7]+" "01234567"
"\\([0-7]+\\)" amount 8)
+
+ ;; find hex literals
+ (evil-numbers/search-and-replace "0[xX][0-9a-fA-F]*"
+ "0123456789abcdefABCDEF"
+ "\\([0-9a-fA-F]+\\)" amount 16)
+
+ ;; find decimal literals
+ (progn
+ (skip-chars-backward "0123456789")
+ (skip-chars-backward "-")
+ (when (looking-at "-?\\([0-9]+\\)")
+ (replace-match
+ (format (format "%%0%dd" (- (match-end 1) (match-beginning 1)))
+ (+ amount (string-to-number (match-string 0) 10))))
+ ;; Moves point one position back to conform with Vim
+ (forward-char -1)
+ t))
+ (error "No number at point or until end of line")))))))
;;;###autoload
(defun evil-numbers/dec-at-pt (amount)
- "Decrement the number at point or after point before end-of-line by `amount'"
+ "Decrement the number at point or after point before end-of-line by `amount'.
+
+If a region is active, decrement all the numbers at a point by `amount'.
+
+This function uses `evil-numbers/inc-at-pt'"
(interactive "p*")
(evil-numbers/inc-at-pt (- amount)))
- [nongnu] elpa/evil-numbers 8b59acf267 059/145: fix: handle hyphen-separated numbers correctly, (continued)
- [nongnu] elpa/evil-numbers 8b59acf267 059/145: fix: handle hyphen-separated numbers correctly, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers e0f4ba3d13 004/145: Fix number search., ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers 221ceb6177 001/145: Initial commit., ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers 7e7e2e42f3 005/145: Remove "support" for negative non-decimal literals., ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers 4466368c6d 008/145: Adjust error messages., ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers db0c5adc68 029/145: Add documentation the increment of region., ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers d37c9812a1 024/145: Remove superflous but malicious check., ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers 649c01ee4a 028/145: deactivate-mark when operating on region, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers ecc51feda6 020/145: Fix glitches., ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers 8ef07f7883 019/145: Prepare for elpa submission., ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers caa4679814 031/145: Merge pull request #3 from mlf176f2/evil-numbers-in-region,
ELPA Syncer <=
- [nongnu] elpa/evil-numbers 2543f0bf35 016/145: Fix number search., ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers e40b606d92 025/145: Add readme., ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers 31c7f1ad6d 041/145: Fix wrong handling of region if number of characters changes, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers ff37f8329b 038/145: Add incremental increase feature to README, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers 9478e05192 051/145: Fix documentation markup. Closes #2, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers e5dd1e2e31 043/145: Fix changing the number directly behind us, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers 4a17780038 053/145: Merge pull request #5 from leungbk/require, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers 006da406d1 060/145: Merge pull request #7 from midchildan/fix/hyphens, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers 74cd618d02 067/145: Merge pull request #14 from ideasman42/patch-3, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers c6ba8e3381 065/145: Merge pull request #13 from ideasman42/patch-2, ELPA Syncer, 2022/01/06