Xah Talk Show 2024-05-08 Ep553 Emacs Lisp Coding, Calc Pad, Increment Digit, How to Change Behavior, Zoomer Idiocity

- Timestamp
- 0:18 glove80, ultimate hacking keyboard, svalboard
- 3:15 start talk on calc
- 3:53 why emacs calc sucks
- 7:49 start code calculator pad
- 11:39 code increment digit
- 33:13 how to change behavior
- 43:30 zoomer demand
make a calculator pad
- make a calculator pad
- Emacs Calculator
- Emacs calc sucks
(defun xah-calculator () "Open a template file to use as calculator. Version: 2024-05-08" (interactive) (let ((xcalcpath "~/.emacs.d/temp/xcalc.py")) (find-file xcalcpath)))
sample calc file
cost = 3 + 4 income = 3 + 250 print(income -cost -382.72 + 197) print(3 + 4 - 382.72 + 197)
increment number
- emacs lisp write a command, that use arrow up to increment number. arrow down to decrease.
(defun xah-increment-number () "increment the number under cursor. Once called, Press up arrow to increase. Press down arrow to decrease. Version: 2024-05-08" (interactive) (let ((xcurDigit (char-to-string (char-after)))) (when (not (string-match "[0-9]" xcurDigit)) (user-error "char under cursor is not a digit")) (delete-char 1) (insert (number-to-string (1+ (string-to-number xcurDigit)))) (backward-char)) (set-transient-map (let ((xkmap (make-sparse-keymap))) (define-key xkmap (kbd "<up>") 'xah-increment-number) (define-key xkmap (kbd "<down>") 'xah-decrement-number) xkmap))) (defun xah-decrement-number () "decrement the number under cursor. Once called, Press up arrow to increase. Press down arrow to decrease. Version: 2024-05-08" (interactive) (let ((xcurDigit (char-to-string (char-after)))) (when (not (string-match "[0-9]" xcurDigit)) (user-error "char under cursor is not a digit")) (delete-char 1) (insert (number-to-string (1- (string-to-number xcurDigit)))) (backward-char)) (set-transient-map (let ((xkmap (make-sparse-keymap))) (define-key xkmap (kbd "<up>") 'xah-increment-number) (define-key xkmap (kbd "<down>") 'xah-decrement-number) xkmap))) (global-set-key (kbd "<f5>") 'xah-increment-number )