[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/evil-numbers 445943fbce 082/145: Fix #17 bin/octal/hex num
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/evil-numbers 445943fbce 082/145: Fix #17 bin/octal/hex numbers don't support becoming negative |
Date: |
Thu, 6 Jan 2022 03:00:20 -0500 (EST) |
branch: elpa/evil-numbers
commit 445943fbce4eb2045b13d6832b83a84c7041d738
Author: Campbell Barton <ideasman42@gmail.com>
Commit: Campbell Barton <ideasman42@gmail.com>
Fix #17 bin/octal/hex numbers don't support becoming negative
When decrementing 0x0 for eg. it became 0x-1 instead of -0x1.
---
evil-numbers.el | 34 +++++++++++++++++++++++++---------
1 file changed, 25 insertions(+), 9 deletions(-)
diff --git a/evil-numbers.el b/evil-numbers.el
index 8e49c7186c..e9681bf4d5 100644
--- a/evil-numbers.el
+++ b/evil-numbers.el
@@ -206,26 +206,32 @@ number with a + sign."
(or
;; Find binary literals.
(evil-numbers--search-and-replace
- '(("0" . 1)
+ '(("+-" . *)
+ ("0" . 1)
("bB" . 1)
("01" . +))
- 3 ;; Number group.
+ 1 ;; Sign group.
+ 4 ;; Number group.
amount 2)
;; Find octal literals.
(evil-numbers--search-and-replace
- '(("0" . 1)
+ '(("+-" . *)
+ ("0" . 1)
("oO" . 1)
("0-7" . +))
- 3 ;; Number group.
+ 1 ;; Sign group.
+ 4 ;; Number group.
amount 8)
;; Find hex literals.
(evil-numbers--search-and-replace
- '(("0" . 1)
+ '(("+-" . *)
+ ("0" . 1)
("xX" . 1)
("[:xdigit:]" . +))
- 3 ;; Number group.
+ 1 ;; Sign group.
+ 4 ;; Number group.
amount 16)
;; Find superscript literals.
@@ -394,7 +400,7 @@ Each item in SKIP-CHARS is a cons pair.
(set-match-data match-list)))
t))
-(defun evil-numbers--search-and-replace (skip-chars num-group inc base)
+(defun evil-numbers--search-and-replace (skip-chars sign-group num-group inc
base)
"Perform the increment/decrement on the current line.
For SKIP-CHARS docs see `evil-numbers--match-from-skip-chars'.
@@ -413,18 +419,28 @@ replace number incremented by INC in BASE and return
non-nil."
(goto-char (match-end num-group))
(let* ((num-prev
(string-to-number
- (match-string num-group)
+ (concat (match-string sign-group)
+ (match-string num-group))
base))
(num-next (+ inc num-prev))
(str-next
(evil-numbers--format
- num-next
+ (abs num-next)
(if evil-numbers/padDefault
(- (match-end num-group)
(match-beginning num-group))
1)
base)))
+ ;; Replace the sign (as needed).
+ (cond
+ ;; From negative to positive.
+ ((and (< num-prev 0) (not (< num-next 0)))
+ (replace-match "" t t nil sign-group))
+ ;; From positive to negative.
+ ((and (not (< num-prev 0)) (< num-next 0))
+ (replace-match "-" t t nil sign-group)))
+
;; Replace the number.
(replace-match str-next t t nil num-group))
- [nongnu] elpa/evil-numbers c6ba8e3381 065/145: Merge pull request #13 from ideasman42/patch-2, (continued)
- [nongnu] elpa/evil-numbers c6ba8e3381 065/145: Merge pull request #13 from ideasman42/patch-2, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers 37d148f50b 064/145: Merge branch 'master' into patch-2, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers 3a0c5a8619 075/145: Merge pull request #16 from juliapath/temp-priv-vars, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers cc930fb6c4 079/145: Cleanup: use 'rx' for number search regex, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers 819530cefa 095/145: Cleanup: use xdigit for matching hexidecimal, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers 1520c24b6b 089/145: Fix padded argument is ignored on non-decimal types, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers ad15824867 102/145: Cleanup: share code-paths for decimal and bin/hex/octal encoding, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers adda2cc221 083/145: Cleanup: use private function name, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers 0934e38a76 099/145: README: various minor updates, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers 299e0418ca 093/145: Cleanup: remove duplicate number search logic, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers 445943fbce 082/145: Fix #17 bin/octal/hex numbers don't support becoming negative,
ELPA Syncer <=
- [nongnu] elpa/evil-numbers 79daec88d5 110/145: Cleanup: sort code into sections, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers b88595d46b 112/145: Cleanup: reduce vertical space use, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers a427fda95e 111/145: Update README.org, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers a01fa6b83a 106/145: Rename evil-numbers/padDefault to evil-numbers-pad-default, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers 01c68921b5 114/145: README.org: update keymap examples, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers 8d84bd3763 108/145: Cleanup: remove strict number searching logic, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers a65dbc5094 123/145: Cleanup: remove nil for empty body, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers bce451b700 137/145: Use message instead of error when no number is found, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers 6087ef48b9 140/145: Tests: run increment operations at different offsets, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers 8ce0066fa4 143/145: Tests: rename evil-numbers-test.el to evil-numbers-tests.el, ELPA Syncer, 2022/01/06