diff options
author | Lars Ingebrigtsen <larsi@gnus.org> | 2019-09-20 19:37:54 +0200 |
---|---|---|
committer | Lars Ingebrigtsen <larsi@gnus.org> | 2019-09-20 19:37:54 +0200 |
commit | 385bb140de767ff59b026f5540e0e8bfae53fb55 (patch) | |
tree | 39531559bda575fc4f0ce7f1491b2cc322764995 | |
parent | 1646e448d02195726cd44b0a8fb34c595b193a43 (diff) | |
download | emacs-385bb140de767ff59b026f5540e0e8bfae53fb55.tar.gz |
Make number-at-point recognize some hex numbers
* lisp/thingatpt.el (number-at-point): Also return common hex
numbers (bug#37458).
-rw-r--r-- | etc/NEWS | 4 | ||||
-rw-r--r-- | lisp/thingatpt.el | 15 |
2 files changed, 15 insertions, 4 deletions
@@ -1662,6 +1662,10 @@ A symbol 'uuid' can be passed to 'thing-at-point' and it returns the UUID at point. --- +*** 'number-at-point' will now recognize hex number like 0xAb09 and #xAb09 +and return them as numbers. + +--- *** 'word-at-point' and 'sentence-at-point' accept NO-PROPERTIES. Just like 'thing-at-point' itself. diff --git a/lisp/thingatpt.el b/lisp/thingatpt.el index 319f4b2cf8a..1ce4b98fd1b 100644 --- a/lisp/thingatpt.el +++ b/lisp/thingatpt.el @@ -632,10 +632,17 @@ Signal an error if the entire string was not used." (if thing (intern thing)))) ;;;###autoload (defun number-at-point () - "Return the number at point, or nil if none is found." - (when (thing-at-point-looking-at "-?[0-9]+\\.?[0-9]*" 500) - (string-to-number - (buffer-substring (match-beginning 0) (match-end 0))))) + "Return the number at point, or nil if none is found. +Decimal numbers like \"14\" or \"-14.5\", as well as hex numbers +like \"0xBEEF09\" or \"#xBEEF09\", are regognized." + (when (thing-at-point-looking-at + "\\(-?[0-9]+\\.?[0-9]*\\)\\|\\(0x\\|#x\\)\\([a-zA-Z0-9]+\\)" 500) + (if (match-beginning 1) + (string-to-number + (buffer-substring (match-beginning 1) (match-end 1))) + (string-to-number + (buffer-substring (match-beginning 3) (match-end 3)) + 16)))) (put 'number 'thing-at-point 'number-at-point) ;;;###autoload |