Xah Talk Show 2025-01-23 Ep609 Emacs Lisp Coding, xah-increment-digit

vidthumb CpDDAoCDfZ4
vidthumb CpDDAoCDfZ4
xah talk show terminal retro 2025-01-23 190737
xah talk show terminal retro 2025-01-23 190737
(defun xah-increment-digit ()
  "Increment digit under cursor.
If under cursor is not a digit, simply insert 1.
When reaches 9, goto 0. Vice versa.
Use arrow up/down keys to increment or decrement.
Or scroll wheel.

Created: 2025-01-23
Version: 2025-01-23"
  (interactive)
  (let (xchar)
    (if (eq (point-min) (point))
        (insert "1")
      (progn
        (setq xchar (buffer-substring-no-properties (1- (point)) (point)))
        (if (string-match "[0-9]" xchar)
            (progn
              (delete-char -1)
              (insert
               (if (string-equal xchar "9")
                   "0"
                 (number-to-string (1+ (string-to-number xchar))))))
          (insert "1")))))
  (set-transient-map
   (let ((xkmap (make-sparse-keymap)))
     (keymap-set xkmap "<up>" 'xah-increment-digit)
     (keymap-set xkmap "<down>" 'xah-decrement-digit)
     (keymap-set xkmap "<wheel-up>" 'xah-increment-digit)
     (keymap-set xkmap "<wheel-down>" 'xah-decrement-digit)
     xkmap)))

(defun xah-decrement-digit ()
  "Decrement digit under cursor.
If under cursor is not a digit, simply insert 1.
When reaches 0, goto 9. Vice versa.
Use arrow up/down keys to decrement or decrement.
Or scroll wheel.

Created: 2025-01-23
Version: 2025-01-23"
  (interactive)
  (let (xchar)
    (setq xchar (buffer-substring-no-properties (1- (point)) (point)))
    (if (string-match "[0-9]" xchar)
        (progn
          (delete-char -1)
          (insert
           (if (string-equal xchar "0")
               "9"
             (number-to-string (1- (string-to-number xchar))))))
      (insert "1")))
  (set-transient-map
   (let ((xkmap (make-sparse-keymap)))
     (keymap-set xkmap "<up>" 'xah-increment-digit)
     (keymap-set xkmap "<down>" 'xah-decrement-digit)
     (keymap-set xkmap "<wheel-up>" 'xah-increment-digit)
     (keymap-set xkmap "<wheel-down>" 'xah-decrement-digit)
     xkmap)))