Xah Emacs Blog
- Emacs: Xah HTML Mode (xah-html-mode.el)
- xah-html-link-dispatch added
xah-html-wolfram-ref-to-link
- Xah Fly Keys
xah-insert-date
better prompt string. more clarity.
updates
updates
- Emacs: Xah Fly Keys
xah-change-bracket-pairs
critical bug fix. error due to last commit.xah-run-current-go-file
if buffer is not file, now do nothing. (was prompt for save.) new behavior follow user interface principle of no unexpected prompt.- xah-run-current-file-map fixed a bug. before, this was defconst, now its defvar.
xah-open-file-at-cursor
if file not exist, just create it, do not ask.
- Emacs: Xah HTML Mode (xah-html-mode.el)
xah-html-open-local-link
if file not exist, just create it, do not ask.
- Emacs: Xah Wolfram Mode
xah-wolfram-run-script
now show output in a split pane.
updated.
- also thanks to
- [Kill Unsaved Emacs Buffers UX: Replacing Yes/No/Save with Meaningful Options By Christian Tietze. At https://christiantietze.de/posts/2023/09/kill-unsaved-buffer-ux-action-labels/ ]
updates.
- Emacs: Xah Fly Keys
- archived version for emacs 27.
- new dev is on emacs 29.
- Emacs: Xah Fly Keys
- fixed several command completion case sensitivity so no need to type capital letters when possible:
- xah-change-bracket-pairs
- xah-quote-lines
- xah-insert-date
- xah-insert-unicode
- xah-open-recently-closed
- Emacs: Xah HTML Mode (xah-html-mode.el)
- xah-html-insert-tag and xah-html-change-current-tag, ignore letter case for completion.
- xah-html-percent-decode-url added options args.
- moved xah-html-insert-open-close-tags from xah-html-mode.el to xah-html-engine.el
new version out. Buy Xah Emacs Tutorial
minor updates.
- Emacs Lisp: List
- Emacs Lisp: Vector
- Emacs Lisp: Modify List
- Emacs Lisp: Check Element Exist in List
- Emacs Lisp: Create List
- Emacs Lisp: Join or Convert List, Vector, String
- Emacs Lisp: Sequence Functions
- Emacs Lisp: Sequence Iteration
- Emacs Lisp: Exit Loop or Function (throw, catch, break, exit, return)
- Emacs: Xah Elisp Mode (xah-elisp-mode.el)
- new emacs 29 abbrev and template for keymap functions. and lots internal code cleanup
updates
- Emacs Init: Restore Opened Files (desktop-save-mode)
- Emacs Init: Save Cursor Position
- Emacs Init: Save Command History
updates
- Emacs: Xah HTML Mode (xah-html-mode.el)
- removed
xah-html-call-ImageMagick
. usexah-call-imagemagick
in xah-elisp-util.el
- Emacs: Xah HTML Mode (xah-html-mode.el)
- removed
xah-html-image-dimensions
xah-html-image-dimensions-imk
xah-html-imagemagick-path
xah-html-fix-datetime
xah-html-fix-datetime-string
- , use those similarly named in xah-elisp-util.el, now required.
renamed xeu_elisp_util.el to xah-elisp-util.el
xah-close-current-buffer if file is modified, simply cancel kill. this ui stick to the principle of do not prompt unexpectedly.
massive update. shell, etc.
- Emacs: Run Shell in Emacs
- Why Run Shell in Emacs
- Emacs: Run ssh (Secure Shell)
- Emacs: eshell
- Emacs: Difference between shell, term, eshell
- Emacs Init: Change Default Shell (PowerShell)
massive update on formatting
- Emacs: Xah Find Replace (xah-find.el)
xah-find-list-files
new.xah-find-replace-text-regex
now dont ask all questions.xah-find-count
now act on selection if exist.
- Emacs: Xah HTML Mode (xah-html-mode.el)
xah-html-validate-xml-dir
better output format. plus misc other code tweaks.
another massive update. 2023-09-09
- Emacs: Show in Desktop 🚀
- Emacs: Open File in External App 🚀
- Emacs: Open in Terminal 🚀
- Emacs: Open in vscode 🚀
- Emacs: Open Python Doc 🚀
- Emacs: Open in TextEdit 🚀
- Emacs: View URL in Web Browser, browse-url
- Emacs: Eww Web Browser
- Emacs Lisp: Command to Search Web
- Emacs: Lookup Web (xah-lookup.el)
- Emacs Init: Mouse Config
- 🆕 Emacs: Mouse Wheel Commands
- Emacs: Mouse Click to Highlight Matching Words
massive updates, repeat, whitespace etc.
- Emacs: Xah HTML Mode (xah-html-mode.el)
xah-html-extract-url
added an argument that fixed a bug in generating full path when this is called in elisp code
massive updates
- Emacs: describe-char, Char Name, Cursor Position
- Emacs: Visual Line Mode
- Emacs: Toggle Word Wrap
- Emacs: Novel Reading Mode 🚀
- Emacs: No Wrap Lines
- Emacs: Hard-Wrap Lines (fill-paragraph)
- Emacs: Reformat to Long Lines (unfill-paragraph)
- Emacs fill-paragraph Problem
- Emacs: Reformat Lines for Source Code 🚀
- Emacs Init: Show Line Numbers
- Emacs: linum mode 👎
- Emacs Init: Show Cursor Column Position
- Emacs Init: Highlight Current Line
- Emacs Init: Arrow Key for Screen Line or Logical Line
- major rewrite:
- The find replace functions now return a list (useful in lisp code)
- Now they do not switch to the output buffer, only display it. (experimental)
- Completion for many functions should now be more compatible to various completion style.
- much faster.
updates
new article and updates
Xah Emacs Packages update
xah-html-lines-to-def-list
now when dd text is missing, just use ❓.
- Added a yandex search. useful for going around American censorship.
- Emacs: Lookup Web (xah-lookup.el)
Xah Emacs Packages update
- Emacs: Xah Fly Keys
xah-change-bracket-pairs
changed arg format. The choices start with ascii chars. To make it better for various completion setup or icomplete that is not fido or ido.

- xah css mode
xah-css-smart-newline
code tweak. better errorsxah-css--ahf
name changed toxah-css--abhook
- now (qwerty space .) (dvorak space v) is
universal-argument
. experimental. xah-quote-lines
,xah-insert-date
,xah-insert-unicode
,xah-open-recently-closed
now more compatible with name completion that's not ido or fido.xah-change-bracket-pairs
code tweak.
- xah-dired.el
xah-dired-sort
•xah-dired-2drawing
•xah-change-file-line-ending-style
• now more compatible with name completion that's not ido or fido.
- xah-find.el
- many commands that do prompt, now more compatible with name completion that's not ido or fido. plus other misc code tweaks
- xah-html-mode.el
- many commands that do prompt, now more compatible with name completion that's not ido or fido. xah-html--ahf renamed to xah-html--abhook
- xah-js-mode.el
xah-typescript-compile-file
now more compatible with name completion that's not ido or fido. plus other code tweaks.
- xah-wolfram-mode.el
xah-wolfram-run-script
now more compatible with name completion that's not ido or fido.xah-wolfram--ahf
renamed toxah-wolfram--abhook
major rewrite on icomplete.
updates.
- Emacs: Lookup Function / Command Documentation
- Emacs: Show Variable Value, List Variables
- Emacs: Find Function, Command, Variable
- Emacs: Xah Fly Keys
xah-shrink-whitespaces
is back on qwerty w.xah-fly--define-keys
redefined as a function, not lisp macro.- The advantage of macro is saving a fraction of second when loading a byte-compiled version.
- but disadvantage is complication.
- The function version can now easier deal with dynamic list, where the command part may be any expression.

now link to emacs manual on my site has a new style.

Before, the (info "string")
is actually elisp code to refer to a node in the manual.
It's esoteric, not many people understands.
inconsistent date format in emacs lisp files. these are from emacs 29.

- major rewrite Emacs Lisp: Abbrev, Template, for Major Mode
- tooltips for emacs function/command docstring been updated to emacs 29.
- Emacs NEWS.29
- the Emacs NEWS.29 file, now you can move mouse over to see docstring of new functions.
- Emacs 29 (Released 2023-07)
- also, all emacs lisp manual functions also have tooltip docstring.
- Top (ELISP Manual)
- Emacs: Xah HTML Mode (xah-html-mode.el)
xah-html-keyboard-shortcut-markup
now properly format input such as C-x 8 e s
- Emacs: Xah Fly Keys
- xah-insert-ascii-single-quote now has a key again, qwerty space d s
- xah-close-current-buffer new code. Now support emacs 29 recently closed hook.
- xah-save-close-current-buffer removed. this command has a problem when a buffer is modified outside emacs and nearly impossible to close.
updates.
- Emacs: Init File Tutorial
- Emacs: Set Default Major Mode
- Emacs: What is Minor Mode
- Emacs Init: Show Line Numbers
- Emacs: linum mode
Xah Emacs Packages update
- 2023-08-12
- Emacs: Xah Fly Keys
- xah-shrink-whitespaces old behavior is back
- Xah elisp mode
- Lots abbrev changes. Xah elisp mode. Details below.
- Added some 10 abbrev/template on seq- functions (not all yet), also v for vector.
- Changed most abbrevs so that cursor is place before the parameter instead of after.
- e.g. (push NEWELT▮ PLACE) is now (push ▮NEWELT PLACE)
- This way, it's easier if you want to paste in a value, because you don't have to move cursor back and forth between words.
- Emacs: Xah HTML Mode (xah-html-mode.el)
xah-html-any-to-link
now if cursor is at beginning of line, use whole line as input.xah-html-remove-tag-pair
fix a problem when cursor is just right after <.xah-html--goto-prev-tag-begin
now warn if you have unencoded <.xah-html-disable-script-tag
now the new tag is scriptx instead of script2.
- Emacs: Xah HTML Mode (xah-html-mode.el)
xah-html-any-to-link
rewrite. now use xah-html-link-dispatch. removed xah-html-any-to-link-pre-hook and xah-html-any-to-link-hook
- Emacs: Xah Fly Keys
xah-quote-lines
now has double quote and comma as default. andxah-copy-to-register-1
andxah-append-to-register-1
, minor change now also copy text propertie
- Emacs: Xah Fly Keys
- removed alias of
xah-display-line-numbers-mode
toglobal-display-line-numbers-mode
orlinum-mode
. The variablexah-display-line-numbers-mode
is old in some early Xah Fly Keys and is not used long ago.
Xah Emacs Packages update
xah-css-complete-or-indent
rewritexah-elisp-complete-or-indent
rewritexah-js-complete-or-indent
rewritexah-pwsh-complete-or-indent
rewritexah-wolfram-complete-or-indent
rewrite
- Emacs: Xah Fly Keys
- improved efficiency for
xah-goto-matching-bracket
,xah-shrink-whitespaces
,xah-extend-selection
, by avoid callinglooking-back
.
updated
massive updates
- Emacs Init: Setup Font
- 🆕 Emacs Init: Font for Unicode Symbols
- Emacs: Change Font Size
- Emacs: Change Default Font Size by Command, for Current Session 🚀
- Emacs: Highlight Brackets
- Emacs: electric-pair-mode (Auto Insert Closing Bracket)
- Emacs: Insert Brackets by Pair 🚀
- Emacs: Delete Brackets by Pair 🚀
- Emacs: Move Cursor to Bracket 🚀
- Emacs: Jump to Matching Bracket 🚀
- Emacs: Change Brackets/Quotes 🚀
- Emacs: Navigate Lisp Code as Tree
- Emacs: Select Line, between Quotes, Extend Selection 🚀
- Emacs: Xah Fly Keys
- changed var xah-punctuation-regex used by
xah-forward-punct
. xah-move-block-up
andxah-move-block-down
, rewrite, minor.xah-shrink-whitespaces
more fix.xah-extend-selection
minor fix, for selecting current word when at buffer beginning.
- Emacs: Xah HTML Mode (xah-html-mode.el)
xah-html-mark-unicode
now respect vardescribe-char-unicodedata-file
. and other misc better.
- Xah Talk Show 2022-09-07 Emacs Lisp for Beginner
- Timestamp added.
- thanks to jupiterapollo4985
Xah Emacs Packages update
- Emacs: Xah Fly Keys
- new command
xah-cut-text-in-quote
. key is qwerty (space k x) dvorak (space t q) xah-smart-delete
more tweak.xah-shrink-whitespaces
rewrote. they should now be fast and perhaps final correct behavior. (still does not work in minibuffer though, when space is at beginning, due to minibuffer prompt may not allow moving to. but i consider this ok. can be fixed but more complex code)
- Emacs: Xah Elisp Mode (xah-elisp-mode.el)
- xah elisp mode
- added abbrev cts for char-to-string
updates
- Emacs Lisp: Cursor Position Functions
- Emacs Lisp: Print, Output
- Emacs Lisp: File and Directory Functions
- Emacs Lisp: Sequence Iteration
- Emacs Lisp: Cut Copy Paste, kill-ring
- Emacs: Xah Fly Keys
- major new version 24.
- Major key change, two commands is combined into one, and with a easier key, detail:
- The key (qwerty d) (dvorak e) now is
xah-smart-delete
, which doesxah-shrink-whitespaces
orxah-delete-backward-char-or-bracket-text
. (before, it just does the latter) - The key (qwerty w) (dvorak ,) now does
xah-delete-backward-char
. (before, it doesxah-shrink-whitespaces
)
xah-smart-delete
is new.xah-delete-backward-char
is new.xah-shrink-whitespaces
improved.
- The following commands have implementation change. Removed using
looking-back
, to improve speed. xah-goto-matching-bracket
xah-delete-backward-char-or-bracket-text
xah-delete-forward-bracket-pairs
xah-extend-selection
xah-css-complete-or-indent
now fasterxah-elisp-complete-or-indent
now faster
update
- now, abbrev related commands has ergo keys.
- And several keys for inserting unicode brackets are removed. (A bit experimental) Detail:
we had these keys before, was temp, never used by me much:
("TAB 1" . abbrev-prefix-mark) ("TAB 2" . edit-abbrevs) ("TAB 3" . expand-abbrev) ("TAB 4" . expand-region-abbrevs) ("TAB 5" . unexpand-abbrev) ("TAB 6" . add-global-abbrev) ("TAB 7" . add-mode-abbrev) ("TAB 8" . inverse-add-global-abbrev) ("TAB 9" . inverse-add-mode-abbrev) ("TAB 0" . expand-jump-to-next-slot) ("TAB =" . expand-jump-to-previous-slot)
now they have ergo keys (dvorak notation):
("e c r" . expand-region-abbrevs) ("e c t" . edit-abbrevs) ("e c u" . expand-abbrev) ("e c g" . add-mode-abbrev) ("e c c" . add-global-abbrev) ("e c m" . inverse-add-mode-abbrev) ("e c w" . inverse-add-global-abbrev) ("e c f" . unexpand-abbrev) ("e c h" . expand-jump-to-previous-slot) ("e c n" . expand-jump-to-next-slot) ("e c y" . abbrev-prefix-mark)
also, these keys are removed (rarely used):
("e c" . xah-insert-ascii-single-quote) ; ''
- Xah Fly Keys. xah-unicode-list changed format. was list of string, now assoc list.
- The command
xah-insert-unicode
implementation changed accordingly. - Added back several keys for commands that insert unicode brackets e.g.
xah-insert-corner-bracket
. These are useful, but unfamiliar to most american programers. (i use them to markup text, better than markdown's backtick that have problems with code contain it.) might be removed in the future.
- Xah Fly Keys
- change some command's use of
set-mark
topush-mark
, as proper. - commands changed are
xah-select-line
xah-select-text-in-quote
xah-extend-selection
xah-cycle-hyphen-lowline-space
- this fixed some rare mysterious bug, where some command pushed mark, but the mark disappeared.
xah-shrink-whitespaces
more fix. now 3 calls removes all whitespace, like before the rewrite.xah-shrink-whitespaces
, rewrote, now can work in minibuffer. However, behavior is slightly different than before. Before, it always ends up removing all whitespaces after repeated call. Now, either remove all, or leave just one newline. I think the new behavior is actually better.- Also removed
xah-delete-blank-lines
,xah-fly-delete-spaces
Xah Emacs Packages update
- Emacs: Xah HTML Mode (xah-html-mode.el)
xah-html-rename-source-file-path
more fix.- xah-html-any-to-link-hook now work on current path/url or selection. (before, it works on line or selection)
xah-html-keyboard-shortcut-markup
now work on current line or selection. (before, always currentline)xah-html-join-tags
minor reimplement.xah-html-rename-source-file-path
now shows relative path in prompt. (instead full). this makes it cleaner and easier to edit. Also colon in filename is replaced by lowline.- xah-html-any-to-link-hook now by default take current line as input (not guessing filepath or url chars).
xah-html-validate-xml-buffer
lots fix on correctness. now should return true if valid, else false.xah-html-validate-xml-dir
.- added
xah-html-amazon-url-to-link
and integrated toxah-html-any-to-link
- Emacs: Xah Elisp Mode (xah-elisp-mode.el)
- xah-elisp-mode.el added abbrev pt p1 pc and template for
print
print1
printc
xah-dired-rename-space-to-underscore
fixed a bug when parent dir contains space.
some key changes. now more ergo.
;; here's the new keys (all dvorak notation) ("t a" . xah-reformat-to-sentence-lines) ("t g" . goto-line) ("t n" . goto-char) ("t f" . move-to-column) ;; their old keys are ("t '" . xah-reformat-to-sentence-lines) ("t f" . goto-line) ("t c" . goto-char) ("t g" . move-to-column)
- Practical Emacs Tutorial.
- new version is out.
- the quickest way to master emacs.
- buy it.
minor updates.
updated code
- Emacs: Xah HTML Mode (xah-html-mode.el)
- major addition: xah-html-validate-xml-buffer, xah-html-validate-xml-file, xah-html-validate-xml-dir
- xah-html-move-image-file major rewrite. now don't prompt user. see doc string.
- xah-html-remove-tags rewrite.
- Some key change on xah-html-format-to-multi-lines, xah-html-update-title-h1
- xah-html-keyboard-shortcut-markup output do not add space around plus sign.
- xah-html-pre-tag-to-new-file key changed. and also several other related commands.
- 2023-07-04
- xah-html-update-title-h1 now trim whitespaces at ends
- xah-html-move-image-file now replace paren char by lowline
emacs tip: start new emacs instance sans prompt
- make sure your emacs can always start an instance without effecting existing instance. (so that, you can start a new emacs anytime when some job freezes emacs)
- the key is to make sure when you start a new emacs instance, there is no prompt that requires you to answer questions.
- also, do not use emacs server feature. it creates a lot complications.
- how? just start a new emacs instance. if you get any promp, try to change your init so there is no prompt.
updated. new pages.
- Emacs: Xah Fly Keys
xah-open-in-external-app
andxah-show-in-desktop
. fixed linux problem bug 156. call-process arg DESTINATION is now 0. thanks to telephonist95.
update.
- Emacs: Xah HTML Mode (xah-html-mode.el)
xah-html-convert-to-jpg
now check if it exist firstxah-html-remove-tag-pair
now just delete tag pair, not treat tags such as img a iframe as special by leaving attribute content.xah-html--goto-prev-tag-begin
rewrite.
added to topic box for list.
new pages and updates.
xemacs new release. reviving from the dead. last release is 2013. https://www.xemacs.org/Releases/21.5.35.html

lots update
- xah-html-mode.el
- new xah-html-add-twittercard-buffer
- new xah-html-add-twittercard-to-file
- removed xah-html-add-twittercard
- xah-html-make-citation rewritten. now line order is important. (guessing often has errors)
- xah-html-insert-pre-tag new key. was m m, now m w.
- xah css mode. internal var name change. rid of dollar sign
- xah elisp mode. internal var name change. rid of dollar sign
- xah-find.el. internal var name change. rid of dollar sign
- xah-go-mode.el internal var name change. rid of dollar sign
- xah-js-mode.el internal var name change. rid of dollar sign
- xah-php-mode.el internal var name change. rid of dollar sign
- xah-powershell-mode.el internal var name change. rid of dollar sign
- xah-python-mode.el internal var name change. rid of dollar sign
- xah-text-mode.el internal var name change. rid of dollar sign
- xah-wolfram-mode.el internal var name change. rid of dollar sign
- xahk-mode.el internal var name change. rid of dollar sign
more updates
starting a emacs community on twitter. https://twitter.com/xah_lee/status/1669760467496222720