Emacs: Xah Increment Number 📜
By Xah Lee. Date: . Last updated: .
(defun xah-increment-number (&optional znum)
"Increment or decrement the number under cursor.
Once called,
Press up arrow to increase. Or mouse wheel up.
Press down arrow to decrease. Or mouse wheel down.
In lisp code znum is a integer.
Increase by znum. (if znum is negative, means decrease.)
URL `http://xahlee.info/emacs/emacs/emacs_increment_number.html'
Created: 2024-05-08
Version: 2025-08-08"
(interactive)
(let (xbeg xend xnumstr xcharCount xnewnum xincr)
(setq xincr (if znum znum 1))
(skip-chars-backward "0-9")
(setq xbeg (point))
(skip-chars-forward "0-9")
(setq xend (point))
(setq xnumstr (buffer-substring-no-properties xbeg xend))
(if (eq xbeg xend)
(insert "0")
(progn
(setq xcharCount (- xend xbeg))
(setq xnewnum (abs (+ (string-to-number xnumstr) xincr)))
(delete-region xbeg xend)
(insert (format (concat "%0" (number-to-string xcharCount) "d") xnewnum)))))
(set-transient-map
(let ((xkmap (make-sparse-keymap)))
(keymap-set xkmap "<up>" (lambda () (interactive) (xah-increment-number 1)))
(keymap-set xkmap "<down>" (lambda () (interactive) (xah-increment-number -1)))
(keymap-set xkmap "<wheel-up>" (lambda () (interactive) (xah-increment-number 1)))
(keymap-set xkmap "<wheel-down>" (lambda () (interactive) (xah-increment-number -1)))
xkmap)))
(defun xah-decrement-number ()
"calls `xah-increment-number' with -1.
URL `http://xahlee.info/emacs/emacs/emacs_increment_number.html'
Created: 2025-10-26
Version: 2025-10-26"
(interactive)
(xah-increment-number -1))