Xah Emacs Blog
Update Highlights
more updates
updated with new key change
- write a tutorial , install hunspell howto, add to emacs windows page.
- maybe install flip (convert eol), grep, ex, bzip2, findutils
(when (eq system-type 'windows-nt) ;; 2025-07-01 thanks to ;; https://emacselements.com/getting-spelling-to-work-on-windows.html (require 'ispell) (progn ;; make sure hunspell is in system environment variable PATH (setq ispell-program-name "d:/bin/ezwinports/bin/hunspell.exe") (setq ispell-local-dictionary "en_US") (setq ispell-local-dictionary-alist '(("en_US" "[[:alpha:]]" "[^[:alpha:]]" "[']" nil ("-d" "en_US") nil utf-8))) (when (boundp 'ispell-hunspell-dictionary-alist) (setq ispell-hunspell-dictionary-alist ispell-local-dictionary-alist)) ;; (setq hunspell-default-dict "en_US") ))
code update
updated with tip.
minor updates
- Emacs: Copy Paste, kill-ring
- Emacs: Copy Current Line ๐
- Emacs: Show Copy History (kill-ring) ๐
- Emacs: Copy Buffer or Selection ๐
- for coders. emacs.
- what a nasty thing to get spell checker to work on emacs.
- a flying joke on your face.
- emacs, supposedly the most powerful editor, spell checking no work.

- for coders.
- Microsoft Windows idiocy.
- What's the difference between System32 and SysWOW64

- 2025-06-28
- Emacs: Xah Fly Keys ๐ฆ
xah-select-block
new behavior. now select without the ending empty lines, when the command is not repeated.- change key,
xah-slash-to-backslash
and other related to slash backslash. now have the same prefix.
- 2025-06-24
- Emacs: Xah Fly Keys ๐ฆ
- key change.
shell-command
is now [space n g], was [n 9].shell-command-on-region
is now [space n f], was and [n 0]. reason: trying to reduce using the digit keys, because i find that for touch typers, they are not ergonomic. also on a lot new ergo keyboards in past 10 years, digit keys require combination.
- 2025-06-06
- Emacs: Xah Fly Keys ๐ฆ
- now use
length=
length>
length<
minor updates
Emacs lisp, map-apply etc not documentated in manual
- for coders. emacs lisp.
- Interesting, these functions are not documentated in emacs lisp manual.
- map-apply map-contains-key map-copy map-delete map-do map-elt map-empty-p map-every-p map-filter map-insert map-into map-keys map-keys-apply map-length map-let map-merge map-merge-with etc.

Bit diddling in emacs lisp
for computer scientists. this is bit diddling in lisp, loved by certain Common LISP idiots

for c and cpp programming language lovers, and rust programming language lovers, they would get so excited about this that they piss in their pants.
- 2025-05-17
- Emacs: Xah Fly Keys ๐ฆ
xah-clean-whitespace
now takes option begin end args.xah-reformat-to-sentence-lines
now also breaks with html br tag.
Open File as Hexadecimal
Alt+x hexl-find-file
. If the file is already opened, Alt+x hexl-mode
.
- 2025-05-03
- Emacs: Xah Fly Keys ๐ฆ
- xah-repeat-key now default to space. (was m). removed xah-fly-insert-mode-activate-space-before and xah-fly-insert-mode-activate-space-after
- now full Table of Contents in each chapter.
- Practical Emacs Tutorial
minor update
disable emacs changing the window title
(setq frame-title-format "Xah Emacs")
- 2025-04-22
- Emacs: Xah Fly Keys ๐ฆ
xah-next-user-buffer
, removed the behavior of using arrows to repeat after the command, that was added about 3 months ago. it is confusing. (i.e. removed (set-transient-map xah-fly-switch-buffer-map))
updated
code update
- 2025-04-19
- Emacs: Xah Fly Keys ๐ฆ
xah-toggle-read-novel-mode
removed. no belong.
code update. xah-insert-random-string
now back to avoid vowels. vowel in random string is nasty, because they creat meaning.
- 2025-04-18
- Emacs: Xah Fly Keys ๐ฆ
- removed require ido for
xah-insert-date
. thanks to Stefan Monnier. xah-open-in-external-app
fixed a bug for Windows, of replacing apostrophe, now all, not just first.
code update
- emacs 30 major change. great fix.
- now sort takes key args and not destructive.
- Emacs: First Day
- Emacs: Terminal vs Graphical User Interface
- Emacs: Key Macro Example: Insert All Unicode Bullets
- Why Emacs is Still so Useful Today
- Emacs: Find Replace Text in Directory
- Elisp: Replace String Based on File Name
- vim, 3 Decades Pile of History
- The Sigil War, Syntactic Indicator for Types of Function and Variable (2016)
- Language Server Protocol (LSP) Kills Emacs
- Xah Emacs Blog Archive 2012-04
- Xah Emacs Blog Archive 2012-11
- Xah Emacs Blog Archive 2014-09
- Xah Emacs Blog Archive 2017-04
- Xah Emacs Blog Archive 2018-02
- Xah Emacs Blog Archive 2018-08
- Xah Emacs Blog Archive 2018-11
- Xah Emacs Blog Archive 2019-05
- Xah Emacs Blog Archive 2021-01
- Emacs: Master Tips
- Emacs: Xah Find Replace (xah-find.el) ๐ฆ
- Elisp: Batch Find Replace
- emacs problem. when a command uses
completing-read
, and user record a key macro calling that command, it does not work. you need to type the entire word.ido-completing-read
works
;; this works (defun ff () " Created: 2025-04-13 Version: 2025-04-13 " (interactive) (let (xmenu xresult) (setq xmenu (list "aa" "bb" "cc")) (setq xresult (completing-read "Pick one:" xmenu nil t)) (insert xresult))) ;; need more test ;; (ido-completing-read "Pick CSS keyword:" xah-css-all-keywords nil t xword)
- 2025-04-12
- Emacs: Xah Fly Keys ๐ฆ
xah-insert-date
major refactor. now show current date in minibufer menu.xah-show-kill-ring
went back to qwerty key t.
(let ((current-time-list t)) (current-time)) ;; (26617 34607 948241 0) (let ((current-time-list nil)) (current-time)) ;; (1744406324012224000 . 1000000000) (current-time-string) ;; "Fri Apr 11 14:14:42 2025"
- for rocket scientists.
- Emacs: Insert Random Number or String ๐
- new algo and behavior.
- now includes all A to Z and 0 to 9, but first char is always letter.
- before, omits 1 0 o O and all vows aoeiu.
- 2025-04-09
- Emacs: Xah Fly Keys ๐ฆ
- bumped up Package-Requires to (emacs "28.3"), due to use of seq-setq. and other minor code tweak.
- xah-insert-date now use ido-completing-read instead completing-read. because the latter does not work when recorded as key macro, with fido-vertical-mode on.
more code update
- 2025-03-31
- Emacs: Xah Wolfram Mode ๐ฆ
- name completion now doesnt added [] because options shouldn't add it, but right now haven't found a way to determine when is a symbol a option. removed some abbrev that shouldn't be there.
emacs. syntax table. some unicode matching brackets no match
these match:
- math flattened parenthesis โฎ โฏ
- math white tortoise shell โฌ โญ
- medium parenthesis ornament โจ โฉ
- medium flattened parenthesis ornament โช โซ
- medium curly ornament โด โต
- medium pointing angle ornament โฌ โญ
- heavy pointing angle ornament โฐ โฑ
these no match:
- double curly quote โ โ
- single curly quote โ โ
- french angle quote โน โบ
- french double angle ยซ ยป
- heavy single quotation mark ornament โ โ
- heavy double turned comma quotation mark ornament โ โ
- โฎ โฏ HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT
this behavior probably intensional
- massive code update.
- removed dependency on Emacs: xah-get-thing.el ๐ฆ
- Emacs: HTML. Add Paragraph Tags ๐
- Emacs: HTML. Lines to List ๐
- Emacs: HTML. Lines to Table ๐
- Emacs: HTML. Embed Youtube Video ๐
- Emacs: HTML. Ruby Annotation ๐
- Emacs: HTML. Replace Entities ๐
- Emacs: HTML. Delete Tags ๐
- Emacs: Add Brackets to CAPITALIZED words ๐
- Emacs: Change Brackets ๐
- Emacs: Insert Brackets by Pair ๐
- Emacs: Check Brackets Balance ๐
- Emacs: Quote Lines ๐
- Emacs: Replace Straight Quotes to Curly ๐
- Emacs: Replace Greek Letter Names to Unicode ๐
- Elisp: Multi-Pair String Replacement with Report
- Emacs: Reformat Lines for Source Code ๐
- Emacs: Spaces to New Lines ๐
- Emacs: Add Period to Line Ends ๐
- Emacs: Reformat to Long Lines (unfill-region) ๐
- Emacs: Reformat to Sentence Lines ๐
- Emacs: Remove Punctuation Extra Spaces ๐
- Emacs: Clean Empty Lines ๐
- Emacs: Copy Current Line ๐
- Emacs: Select Text Block ๐
- Emacs: Delete Text Block ๐
- Emacs: Move Cursor by Text Block ๐
- Emacs: Upcase Sentences ๐
- 2025-03-21
- Emacs: Xah Fly Keys ๐ฆ
- new key for
xah-backward-punct
,xah-forward-punct
. in qwerty, it is [space k], and left or right arrow. (was just 1 and 2) now can also repeat by pressing arrows. also, xah-punctuation-regex by default checks equal sign. typically useful in moving cursor to string assignment. display-line-numbers-mode
now has a key, qwerty [space l h].
- 2025-03-08
- Emacs: Xah Fly Keys ๐ฆ
- some key change.
- call-last-kbd-macro, new "r SPC", old "r e"
- rectangle-mark-mode, new "r r", old "r SPC"
- all dvorak notation.

emacs 30 is out.
- 2025-03-01
- Emacs: Xah Fly Keys ๐ฆ
- better docstring for โข xah-fly-use-control-key โข xah-fly-use-meta-key โข xah-fly-use-isearch-arrows
- now
split-window-right
have key control right square bracket - now
xah-previous-user-buffer
andxah-next-user-buffer
has key control with page up down
- 2025-02-05
- Emacs: Xah Dired Mode (xah-dired.el) ๐ฆ
- lots updates.
- 2025-02-05
- Emacs: Xah Fly Keys ๐ฆ
xah-smart-delete
fix so in minibuffer when before cursor is space, don't complain.xah-search-current-word
now do not deactivate mark.
- 2025-01-24
- Emacs: Xah Fly Keys ๐ฆ
- fixed issue https://github.com/xahlee/xah-fly-keys/issues/184 , and
xah-run-current-file
now show result buffer and make it current. - xah-repeat-key, fixed issue https://github.com/xahlee/xah-fly-keys/issues/183 thanks to akashpal-21
- computer science.
- advanced emacs lisp.
- very interesting. elisp function written in C vs not.
(defvar xah-elisp-symbols-c nil "Lisp function written in C") (defvar xah-elisp-symbols-not-c nil "Lisp function defined in lisp") (mapcar (lambda (x) (if (subrp (symbol-function (intern-soft x))) (progn (push x xah-elisp-symbols-c)) (progn (push x xah-elisp-symbols-not-c)))) xah-elisp-all-symbols) (length xah-elisp-all-symbols) 27324 (length xah-elisp-symbols-c) 9319 (length xah-elisp-symbols-not-c) 18005

minor update