[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/evil-numbers 88de7e9622 007/145: Extract number search.
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/evil-numbers 88de7e9622 007/145: Extract number search. |
Date: |
Thu, 6 Jan 2022 03:00:14 -0500 (EST) |
branch: elpa/evil-numbers
commit 88de7e9622e9dfa0de511d6fb94d7e6c35733f85
Author: Michael Markert <markert.michael@googlemail.com>
Commit: Michael Markert <markert.michael@googlemail.com>
Extract number search.
Signed-off-by: Michael Markert <markert.michael@googlemail.com>
---
evil-numbers.el | 56 ++++++++++++++++++++++++++++++++++++--------------------
1 file changed, 36 insertions(+), 20 deletions(-)
diff --git a/evil-numbers.el b/evil-numbers.el
index 128d4a08a2..a3ee3ff297 100644
--- a/evil-numbers.el
+++ b/evil-numbers.el
@@ -37,21 +37,7 @@
"Increment the number at point by `amount'"
(interactive "p*")
(save-match-data
- (if (not (or
- ;; numbers or format specifier in front
- (and
- (looking-back (rx (or (+? digit)
- (and "0" (or (and (in "bB") (*? (in
"01")))
- (and (in "oO") (*? (in
"0-7")))
- (and (in "xX") (*? (in digit
"A-Fa-f"))))))))
- ;; being on a specifier is handled in progn
- (not (looking-at "[bBoOxX]")))
- ;; search for number in rest of line
- (progn
- ;; match 0 of specifier or digit, being in a literal and after
specifier is handled above
- (re-search-forward "[[:digit:]]" (point-at-eol) t)
- ;; skip format specifiers
- (skip-chars-forward "bBoOxX"))))
+ (if (not (evil-numbers/search-number))
(error "No number at point or until end of line")
(or
;; find binary literals
@@ -92,6 +78,41 @@
t))
(error "No number at point")))))
+(defun evil-numbers/dec-at-pt (amount)
+ "Decrement the number at point by `amount'"
+ (interactive "p*")
+ (evil-numbers/inc-at-pt (- amount)))
+
+;;; utils
+
+(defun evil-numbers/search-number ()
+ "Return non-nil if a binary, octal, hexadecimal or decimal literal at or
after point.
+If point is already within or after a literal it stays.
+
+The literals have to be in the following forms:
+binary: 0[bB][01]+, e.g. 0b101 or 0B0
+octal: 0[oO][0-7]+, e.g. 0o42 or 0O5
+hexadecimal 0[xX][0-9a-fA-F]+, e.g. 0xBEEF or 0XCAFE
+decimal: [0-9]+, e.g. 42 or 23"
+ (or
+ ;; numbers or format specifier in front
+ (and
+ (looking-back (rx (or (+? digit)
+ (and "0" (or (and (in "bB") (*? (in "01")))
+ (and (in "oO") (*? (in "0-7")))
+ (and (in "xX") (*? (in digit
"A-Fa-f"))))))))
+ ;; being on a specifier is handled in progn
+ (not (looking-at "[bBoOxX]")))
+ ;; search for number in rest of line
+ (progn
+ ;; match 0 of specifier or digit, being in a literal and after specifier
is handled above
+ (re-search-forward "[[:digit:]]" (point-at-eol) t)
+ ;; skip format specifiers and interpret as bool
+ (<= 0
+ (skip-chars-forward "bBoOxX")
+ )
+ )))
+
(defun evil-numbers/format-binary (number &optional width fillchar)
"Format `NUMBER' as binary.
Fill up to `WIDTH' with `FILLCHAR' (defaults to ?0) if binary
@@ -108,9 +129,4 @@ representation of `NUMBER' is smaller."
"")
nums))))
-(defun evil-numbers/dec-at-pt (amount)
- "Decrement the number at point by `amount'"
- (interactive "p*")
- (evil-numbers/inc-at-pt (- amount)))
-
(provide 'evil-numbers)
- [nongnu] elpa/evil-numbers b2397f278a 094/145: Cleanup: move forward character check in evil-numbers--search-number, (continued)
- [nongnu] elpa/evil-numbers b2397f278a 094/145: Cleanup: move forward character check in evil-numbers--search-number, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers 6093a5e039 085/145: Cleanup: use identity functions, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers b98a3dccd3 104/145: Cleanup: forward limits to evil-numbers--search-and-replace, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers cb9eb99998 141/145: Tests: add simple-nop-non-number-with-newline-after test, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers 29859e64c0 138/145: Add automated tests, resolve #22, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers 95fd1faf90 006/145: Use `while' instead of `do'., ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers b84ee09de1 012/145: Fix license., ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers 83b2ad44ff 010/145: Use lowercase and uppercase example., ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers bd2359c96f 003/145: Fix provide., ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers 2301d66203 009/145: Fix docstrings of inc and dec., ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers 88de7e9622 007/145: Extract number search.,
ELPA Syncer <=
- [nongnu] elpa/evil-numbers b3e906f734 022/145: Fix last glitches., ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers 6e13c0450a 030/145: Update documentation., ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers 0a376ace35 021/145: Add autoload comments., ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers 30b13905a7 013/145: Move search and replace out of increment., ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers 9e2d6f721f 045/145: Support negative superscripts and fix padding of negative numbers, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers 7ff262f36b 042/145: Support block selections, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers 8da2221b7b 047/145: Make padding optional and off by default (can be configured), ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers cfa8650393 040/145: Remove extra &optional, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers f033965377 046/145: Support subscript numbers, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-numbers 154703dca7 048/145: Make binary, octal and hexadecimal numbers honour padDefault, ELPA Syncer, 2022/01/06