X-Git-Url: https://code.delx.au/gnu-emacs-elpa/blobdiff_plain/a68d07cc230283ae9872232157120c81d96021b3..54df2598550c8040def7aec80d04847458d990df:/packages/num3-mode/num3-mode.el diff --git a/packages/num3-mode/num3-mode.el b/packages/num3-mode/num3-mode.el index b5ce0e591..5026cbe9b 100644 --- a/packages/num3-mode/num3-mode.el +++ b/packages/num3-mode/num3-mode.el @@ -1,11 +1,11 @@ ;;; num3-mode.el --- highlight groups of digits in long numbers -*- lexical-binding: t -*- -;; Copyright (C) 2012 Free Software Foundation, Inc. +;; Copyright (C) 2012, 2014 Free Software Foundation, Inc. ;; Author: Felix Lee , Michal Nazarewicz ;; Maintainer: Michal Nazarewicz -;; Keywoards: faces, minor-mode -;; Version: 1.0 +;; Keywords: faces, minor-mode +;; Version: 1.2 ;; GNU Emacs is free software: you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by @@ -88,31 +88,33 @@ ie. groups are counted starting with one outwards from the (place where) decimal point (would be) is." nil " num3" nil (if num3-mode - (unless (assoc '-num3-matcher font-lock-keywords) - (font-lock-add-keywords nil '(-num3-matcher) 'append)) - (font-lock-remove-keywords nil '(-num3-matcher))) - (when font-lock-mode - (font-lock-fontify-buffer))) + (unless (assoc 'num3--matcher font-lock-keywords) + (font-lock-add-keywords nil '(num3--matcher) 'append)) + (font-lock-remove-keywords nil '(num3--matcher))) + (if (fboundp 'font-lock-flush) (font-lock-flush) + (when font-lock-mode (font-lock-fontify-buffer)))) ;;;###autoload (define-globalized-minor-mode global-num3-mode num3-mode num3-mode) -(defconst -num3-number-re - (concat "\\(?:0[xX]\\|#\\)\\([0-9a-fA-F]+\\)" ; 1 = hexadecimal - "\\|\\([0-9]+\\)" ; 2 = decimal - "\\|\\.\\([0-9]+\\)")) ; 3 = fraction +(defconst num3--number-re + (concat "[0#][xX]\\([[:xdigit:]]+\\)" ; 1 = hexadecimal + "\\|\\(?1:\\b\\(?:[0-9]+[a-fA-F]\\|" ; 1 = hexadecimal + "[a-fA-F]+[0-9]\\)[[:xdigit:]]*\\b\\)" + "\\|\\([0-9]+\\)" ; 2 = decimal + "\\|\\.\\([0-9]+\\)")) ; 3 = fraction -(defun -num3-matcher (lim) +(defun num3--matcher (lim) "Function used as a font-lock-keywoard handler used in `num3-mode'. Performs fontification of numbers from point to LIM." (save-excursion - (while (re-search-forward -num3-number-re lim t) - (-num3-int (match-beginning 1) (match-end 1) 4) - (-num3-int (match-beginning 2) (match-end 2) num3-group-size) - (-num3-frac (match-beginning 3) (match-end 3) num3-group-size))) + (while (re-search-forward num3--number-re lim t) + (num3--int (match-beginning 1) (match-end 1) 4) + (num3--int (match-beginning 2) (match-end 2) num3-group-size) + (num3--frac (match-beginning 3) (match-end 3) num3-group-size))) nil) -(defun -num3-int (lo hi n) +(defun num3--int (lo hi n) "Highlight groups of digits in a long number. LO and HI arguments specify the range where the number is located. If the length of that region exceeds `num3-threshold', @@ -122,10 +124,10 @@ faces. Grouping is done from the end, eg. (12)(345)." (when (and lo (>= (- hi lo) num3-threshold)) (let (even) (while (< lo hi) - (-num3-put even (max lo (- hi n)) hi) + (num3--put even (max lo (- hi n)) hi) (setq hi (- hi n) even (not even)))))) -(defun -num3-frac (lo hi n) +(defun num3--frac (lo hi n) "Highlight groups of digits in a long number. LO and HI arguments specify the range where the number is located. If the length of that region exceeds `num3-threshold', @@ -135,16 +137,15 @@ faces. Grouping is done from the beginning, eg. (123)(45)." (when (and lo (>= (- hi lo) num3-threshold)) (let (even) (while (< lo hi) - (-num3-put even lo (min hi (+ lo n))) + (num3--put even lo (min hi (+ lo n))) (setq lo (+ lo n) even (not even)))))) -(defun -num3-put (even lo hi) +(defun num3--put (even lo hi) "Add font lock text property to highlight a single group of digit. Use `num3-face-odd' if EVEN is nil and `num3-face-even' if EVEN is non-nil. The region the face is set to is from LO to HI." (font-lock-append-text-property lo hi 'face (if even 'num3-face-even 'num3-face-odd))) -(provide 'num3) - -;;; num3.el ends here +(provide 'num3-mode) +;;; num3-mode.el ends here