Xah Emacs Blog
xah-html-mode.el removed key C-r for xah-html-open-in-browser. Reason: the C-r is added for browser compatibility. For example, you can define a macro on a keypad to send C-r. when dev a website, you can press that single key, and you can also press that in emacs to view in browser.
now, removed. main reason is that it conflict with emacs C-r for isearch-backward, sometimes convenient when using xah-fly-keys. binding C-r is hackish in the first place. now, we use F5 for browser refresh for the same purpose as C-r. Again, not a strong reason, but still convenient.
by the way, TAB b b is also bound to xah-html-open-in-browser, and there are other commands and keys to view in different browsers.
- Emacs: Xah Elisp Mode added 2 abbrevs and templates
- Emacs: Xah Fly Keys
xah-open-file-at-cursor
now consider paren as path stopper. this is useful because markdown put url in paren. while paren is sometimes seen in file path or Wikipedia url, but this is much rarer.
- Emacs: Xah Math Input Mode, xah-math-input.el changed smile โบ to ๐. the former is the original emoji, and often does not show as emoji. while the latter is emoji, and always displayed as such.
repost. lots updates weekly in past year.
minor correction.
added an optimot layout, removed beopy layout. optimot shouldn't be added because it's used by maybe just a hundred people in the world. however, cletip really ask for it. Also, he added beopy before which was added years ago in the early days, and beopy is another layout nobody heared of. from now on, only well-known keyboard layout should be supported in xah-fly-keys. you can always put it to your init. optimot may be removed in the future.
lots updates.
- new var xah-temp-dir-path. now
xah-save-close-current-buffer
saves non-file buffers to that dir, and can re-open byxah-open-last-closed
minor updates
- Emacs: Open Python Doc ๐
- Emacs: xah-dired.el renamed variable starting with dollar sign to start with x
updates
- Emacs: Sort/Categorize Image Files to Dir (Move File to Dir) ๐ (xah-move-file-to-dir now work on dired marked files.)
major update.
- Emacs Lisp: Regex Functions. update. much better example for
replace-match
- Emacs Lisp: File Path Functions
What is place expression, generalized variable, in lisp
xtodo write a tutorial. and maybe another blog on lang design
- emacs lisp, common lisp. language design on lisp's place expressions (aka generalized variable) [ https://youtu.be/YZiwPeUXhpM?t=3431 ], from Xah Talk Show 2023-03-09 Emacs Lisp. Command to Move File (Photo) to a Dir (categorize)
- lisp should not have the 'place expression' semantics. basically that's the point.
- the 'place expr' semantics, is somewhat ok in C like syntax, is because, it's widely adopted convention for some 40 years or so in every lang.
- the way it works, is not to think of 'place expression'. rather, when u see the assignment operator =, u have left hand side and right hand side. eg lhs = rhs.
- and lhs is treated in a special way. that is, it is not evaluated.
- so, we have, x = 4.
- now, in the case of
- list[0] = 4
- that's a more special case.
- namely, not only the lhs is not evaluated, but, the lhs expression is treated in a special way, to indicate a position in list.
- arguably, this is not a good design.
- but can be accepted in new lang, because, it's a widely adopted and well understood convention.
- the key thing to note here, is the equal sign for assignment, of the syntax.
- now, if u import to lisp syntax, u'll immediately notice oddity.
- eg
- (setq (nth 0 (list 3 4 5)) "something" )
- this breaks lisp semantics.
- because again, that nth expression, is not evaluated, not just that, but actually means a special thing.
# example, of the logical incongruity of the list element assignment syntax, in most imperative (procedural) languages xList = [3,4,5] xList[0] = "something"
Refactor. Changed all var naming, beginning dollar sign to x. Reason: sigil is great as syntactic design of a lang, but not a lisp tradition and is abnormal in lisp community. Using ascii prefix x is less odd in lisp, is easier to type, still retain some var name uniqueness property by syntax.
- Emacs: Xah Fly Keys
xah-open-in-external-app
fixed file name contain space bug. Emacs: Open File in External App ๐
- Emacs: Xah Elisp Mode added abbrev cr for completing-read and template.
- Emacs: Xah HTML Mode removed abbrev hr and br. use xah-html-insert-tag instead, consistent.
Set emacs to start sans prompt, and don't use emacs daemon
Tip. setup your emacs so that you can start multiple emacs instances, without any prompt that might interrupt the start up and wait for you to answer a prompt.
and i don't use emacs daemon, because when you do elisp, you need to restart often for a clean emacs.
- Emacs: Xah Fly Keys ,
xah-quote-lines
, better prompt order for line seperator. andxah-save-close-current-buffer
,xah-close-current-buffer
now use newxah-add-to-recently-closed
major update again
- Emacs Lisp: Regular Expression
- Emacs Lisp: Regex Functions
- Emacs Lisp: Find Replace Text in Buffer
- Emacs: Quoting Regex in Emacs Lisp Code vs Command Prompt
- Emacs Regex vs Regex in Python, JavaScript, Java Etc
- ๐ Emacs Lisp: Tip: Convert Regex to Lisp Regex String
- ๐ Emacs Lisp: Tip: How to Test Regex
- ๐ Emacs Lisp: skip-chars-forward vs re-search-forward
- Emacs: Find Replace in Pure Elisp, xah-find.el new command
xah-find-open-all
- Emacs: Xah Fly Keys
xah-open-in-terminal
fixed bug on dir name containing space. also, new var xah-fly-mswin-terminal determines which terminal to open.
- Emacs: Xah Fly Keys
xah-open-in-external-app
fixed bug on Microsoft Windows of filename contain apostrophe, also now more efficient by calling start-process instead of shell.
- Emacs: Xah Fly Keys, removed
xah-dired-rename-space-to-underscore
andxah-dired-rename-space-to-hyphen
. doesn't belong here. (moved to Emacs: xah-dired.el)
- minor update Emacs: File Manager, dired
emacs people on odysee
Now, posting some emacs people on odysee. We should post links to odysee, instead YouTube. These are great video channels.
- Gavin Freeborn [Getting Evil (aka Vim keys) in Emacs without Doom Emacs ] ( https://odysee.com/@GavinFreeborn:d/getting-evil-(aka-vim-keys)-in-emacs:9 )
- David Wilson (System Crafters) [ The Basics of Emacs Configuration ] ( https://odysee.com/@SystemCrafters:e/the-basics-of-emacs-configuration:2 )
- Protesilaos Stavrou [ Philosophy: productivity, honesty, and accountability structures ] ( https://odysee.com/@protesilaos:6/philosophy-productivity,-honesty,-and:1 )
- Xah Lee [ Xah Talk Show 2023-02-23 Emacs Lisp Writing URL Parser ] ( https://odysee.com/@XahLee:b/xah-talk-show-2023-02-23-emacs-lisp:6 )
updates.
major rewrite and updates
- minor update Emacs: Bookmark
major update. Emacs: Xah Wolfram Mode
xah-major-mode-leader-key
the xah-major-mode-leader-key is meant as system-wide leader key for packages, at least for xahemacs.
in gnu emacs, major mode's keys are fairly bad and unmageneable, because major mode keys by their convention is to have this form C-c C-โนkeyโบ etc. so, hard for pinky, and impossible to have a leader, and impossible to change for all major modes.
the way i have it, isn't ideal, but is probably the most simple solution.
also, i don't like define-custom. those are semi gui, hard to understand, easy to screw things up, and not all settings can be controlled by it. i think doomemacs also adopted not to support that semi gui custom.
xah-dired-open-in-irfanview
rewrote, much faster. now use start-process instead of starting a shell for each.
Similarly other opening commands

major update.
updated.
complexity of escape key in emacs
major update and new
Experimental. now Escape key by default is bound to xah-fly-command-mode-activate
. Reason:
Advantage:
- on Kinesis 360 and Glove80 Keyboard the traditional capslock position is Escape. This makes it convenient for these keyboards.
- also, it's a convention of vi/vim/neovim to have Escapeape activate command mode. This can save some learning time.
- save the trouble to rebind capslock to home key, for those want efficient key.
The disadvantage of bind Escape:
- On text terminal, in the case that meta key is not setup, you lose the ability to press meta key bound commands. (but this is rare on modern terminals.)
- Esc, on traditonal keyboard, is a bit far away, and not optimal. So, lazy people may develope a habit to turn left wrist to press it. This is a Repetitive Strain Injury danger.
- On some people's xah-fly-keys customization, Esc is remapped to C-g (cancel) by key-translation-map. for those who did this, it'll still work.
Note:
- on ergonomic keyboards and layouts, there is an emerging standard to not have a capslock key on the traditional position to the left of qwerty A. (e.g. google chromebook, and many batman keyboards)
- but there is no emerging standard what that key should be.
- colemak has backspace (but on ergonomic keyboards with thumb keys, that's not a optimal choice)
- some has esc. some has ctrl. (not a good choice unless on laptop)
2023-01-27
revert last change. Now, escape key no longer do xah-fly-command-mode-activate
.
Because: if you bind <escape>
, then it works in gui only, but not terminal. Very confusing.
If you bind ESC
, then in terminal arrows keys break, also F1 F2 etc keys.
So, best solution is to let user customize instead.
Thanks to yegor maltsev
blog
(if Wait-p (apply 'call-process (append (list xah-dired-metadata-remover-path nil $outBuf t "-all=" "-overwrite_original") $shortNames nil)) (apply 'start-process (append (list "exiftool" $outBuf xah-dired-metadata-remover-path "-all=" "-overwrite_original") $shortNames nil)))
new.
switched to oxipng from optipng, and massive update to the emacs lisp code, much speed improvement. Emacs: xah-dired.el and see also oxipng
update and new.
;; go to insert mode in xah-fly-keys (add-hook 'dired-mode-hook 'xah-fly-insert-mode-activate)
updates.
- Emacs Lisp: String Functions add
string-pad
,string-lines
major rework on emacs lisp sequences datatype
updates and new
- now better organization of the navigation panel. Emacs Lisp: How to Write a Command
- ๐ Emacs Lisp: File Path Functions
- Emacs Lisp: Buffer Functions
- Emacs Lisp: Cut Copy Paste to/from kill-ring
- Emacs Lisp: How to Write a Command
highlight: Why Common Lisp Sucks, and Xah Lee is a Troll https://youtu.be/Oqt9aSw0Qaw?t=1944 from Xah Talk Show 2022-11-28 Why Common Lisp Sucks, and Xah Lee is a Troll, lispm
updates and new
emacs 29 features
read this article, great summary:
[Emacs 29 is nigh! What can we expect? By Lucien Cartier-Tilet (Aka Phundrak). At https://blog.phundrak.com/emacs-29-what-can-we-expect/ ]
here's some of my notes from it.
- Eglot is now part of emacs. Eglot is a LSP protocol interface. https://github.com/joaotavora/eglot
- tree-sitter is now part of emacs. it's a parser for text editors. https://tree-sitter.github.io/tree-sitter/
new modes using tree-sitter:
- bash-ts-mode
- c-ts-mode
- c++-ts-mode
- csharp-ts-mode
- css-ts-mode
- java-ts-mode
- js-ts-mode
- json-ts-mode
- python-ts-mode
- typescript-ts-mode
- new functions, for installing packages directly.
package-vc-install
package-vc-update
package-vc-update-all
use-package
now is part of emacs. it is for managing config for packages.
- new
sqlite-mode
. works with SQLite database.
- new option
-x
to run elisp script, sans loading init. - new option
--init-directory
- view image now support webp format
- emacs now support multi-touch touchpads, such as on laptop.
- new command to insert emoji.
- C-x 8 e e or C-x 8 e i โ Insert an emoji (
emoji-insert
) - C-x 8 e s โ Search an emoji (
emoji-search
) - C-x 8 e l โ List all emojis in a new buffer (
emoji-list
) - C-x 8 e r โ Insert a recently inserted emoji (
emoji-recent
) - C-x 8 e d โ Describe an emoji (
emoji-describe
) - C-x 8 e + and C-x 8 e - โ Increase and decrease the size of any character, but especially emojis (
emoji-zoom-increase
andemoji-zoom-decrease
) - new input method
emoji
.
- tree-sitter, a fantastic thing, i'll be spending time on it in coming months.
- https://tree-sitter.github.io/tree-sitter/
here's some collection of articles related to it.
the after 10 years, emacs finally have redo.
- on vi Keybinding vs Emacs Keybinding
- vi, vim, 3 Decades Pile of History
- Vim: How to Remap Escape Key?
- Emacs M-key Notation vs Alt+key Notation
- Emacs Modernization: Simple Changes Emacs Should Adopt
- GNU Emacs and XEmacs Schism
- Emergency vim
- Lisp Celebrities and Computing History from โWorse Is Betterโ
- Emacs Repetitive Strain Injury, My Experience
- GNU Emacs and XEmacs Schism
updates and new. string and buffer.
xtodo review, rss
2022-10-31 Emacs: Xah Fly Keys More major internal change. No user visible change.
Internal implementation change. New function xah-fly-define-keys
. This is called by xah-fly-keys-set-layout
. Basically, command mode keys and leader keys are set by this function. It was several code blocks calling xah-fly--define-keys
. Now they all moved into this new function, so that xah-fly-keys-set-layout
no longer has to reload whole file. It now just call the new function.
- code update Emacs: Format JavaScript Code
updates and new.
More major internal change 2022-10-26. No user visible change.
- removed all explicitly named keymaps that are used in xah-fly-leader-key-map. e.g. xah-fly-t-key-map (qwerty k, of Space k sequence) is gone, and its keymap is just part of definition of xah-fly-leader-key-map with a sequence of keys. Much simpler.
- removed the redundant binding ("1" . xah-extend-selection) ("2" . xah-select-line) use key 7 and 8 instead.
- More major internal change. No user visible change.
- xah-fly--key-char is now gone. replaced by xah-fly--convert-kbd-str. the latter converts any `kbd' argument, instead of a single char. xah-fly--define-keys is changed to use the new.
- Replaced all keymap names from xah-fly-Rp2p1-key-map to xah-fly-c-key-map. The former (finger based) naming is hard to understand. (The letter based naming is based on dvorak layout.) (also, in the future, these keymap vars will be removed, instead, relying on define-key to auto generate them.)
- Changed the implementation of the qwerty (space e) keymap to rely on auto-generated by define-key.
- added a function
alist-get
Emacs Lisp: Association List
xah-fly-keys major internal change. xah-fly-layouts
- New. var xah-fly-layouts holds a list of layouts. Supported layouts can be programatically listed.
- function xah-fly-keys-set-layout major change. No longer support M-x customize. Reason: supporting it makes the code much more complex.
- var xah-fly-key-current-layout changed accordingly.
- renamed xah-fly--current-layout-kmap to xah-fly--key-convert-table
- here is some detail. the layout was variables, e.g. โข xah--dvorak-to-azerty-kmap โข xah--dvorak-to-azerty-be-kmap โข xah--dvorak-to-beopy-kmap etc. now these variables are string keys of xah-fly-layouts, with prefx xah--dvorak-to- dropped and suffix -kmap dropped, so the names are just azerty, azerty-be, etc. value remain the same.
- starting to phase out using symbol for layout names. Symbol pollutes symbol table. and string is more intuitive, universal. e.g. (xah-fly-keys-set-layout 'qwerty) should be (xah-fly-keys-set-layout "qwerty")
some update to doc. (not related to the change above though.)
updates.
- Emacs: Undo/Redo Saga
- Emacs Undo and Emacs Cult Problem
- Emacs Lisp: Enable Undo in Buffer
- Emacs: Setup Standard Copy Cut Paste Keys
- Emacs: Add Custom Keys to Enhance Productivity
emacs 28 new feature, redo.
New command undo-redo
.
This command is typically known as redo.
(setq undo-no-redo t)
** New command
undo-redo
. It undoes previous undo commands, but doesn't record itself as an undoable command. It is bound to 'C-?' and 'C-M-_', the first binding works well in graphical mode, and the second one is easy to hit on tty.For full conventional undo/redo behavior, you can also customize the user option undo-no-redo to t.
massive updates again.
the emacs key panel, e.g. at Emacs: How to Define Keybinding, essays about keybinding that's not practical emacs use are moved to Emacs Misc Index
misc other updates:
more update. starting to make my tutorial more book-like, suitable for absolute beginners.
massive updates.
lots updates. now, pages that's just a custom emacs lisp command has a rocket ๐ indicator
Emacs, Work with Brackets
- Emacs: Highlight Brackets
- Emacs: Insert Bracket Pairs, electric-pair-mode
- 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 Elisp Mode
massive updates. updated many screenshots that's 15 years old, and other updates, move section to new page, re-org, new nav box of related articles, and many rewrites etc. this more review and edit to do, but if i continue, the list wont stop. so, webfeeding it now.
- Emacs: Select Text (mark and region)
- Emacs: Comment, Uncomment
- Emacs Calculator
- Emacs Calendar
- Emacs: Split Windows
- Emacs Basics Tips
- Fun with Emacs
- Emacs: View Info Page
- Emacs: How to Insert a Tab Character or Newline
- Emacs: Newline Convention CR LF
- Emacs: Change File Line Ending Between Windows/Unix/Mac
- Emacs: Convert File Line Ending for All Files in a Dir ๐
- Emacs: Copy Current Line If No Selection ๐
- Emacs: Copy/Paste, kill-ring
- Emacs: Copy to Register
- Emacs: 1 Key to Copy/Paste from Register ๐
- Emacs: Copy Rectangle Region to kill-ring ๐
- Emacs: Setup Standard Copy Cut Paste Keys
- Emacs in Microsoft Windows FAQ
- Emacs: Run Shell in Emacs
- Emacs: Run ssh (Secure Shell)
- Emacs: Run PowerShell
am on lbry/odysee. follow me there.
Xah Talk Show 2022-09-28 emacs lisp. extract html links, insert to each page https://odysee.com/@XahLee:b/emacs-lisp-coding.-extract-html-links,:a
new and updates.
code updates
All keyboard layout diagram changed. instead of button, now radio box, indicating current layout.
misc new and updates
Xah Fly Keys update for colemak dh layout
Emacs: Xah Fly Keys update for colemak dh layout.
fix and new keymaps for the Colemak DH layout variations. Now with more accurate name for the Colemak DH variations: dhm, dhk, and dhk with angle-mode.
For users, change your layout to one of:
"colemak-dhm"
"colemak-dhm-angle"
"colemak-dhk"
the following layout names are removed:
- colemak-mod-dh (use colemak-dhk instead)
- colemak-mod-dh-new (use colemak-dhm-angle instead)
internal:
- new: xah--dvorak-to-colemak-dhm-kmap is the offical Colemak DH (aka DHm) layout.
- new: xah--dvorak-to-colemak-dhm-angle-kmap is the Colemak DHm layout with angle-mode.
- new: xah--dvorak-to-colemak-dhk-kmap is the Colemak DHk layout.
- old: xah--dvorak-to-colemak-mod-dh-kmap is now removed. (it was for Colemak DHk)
- old: xah--dvorak-to-colemak-mod-dh-new-kmap is now removed. (it was for Colemak DHm angle mode)
xtodo
new discovery in emacs 28. insert-char

xtodo
xah-cite
xah-open-file-from-clipboard
xah-open-file-at-cursor
Idiotic url parser in emacs lisp. url-generic-parse-url
. Elaborate overly complex code, uses common lisp lib, and, doesn't parse query string part.

xtodo work in progress
updates and new
linux emacs, need help test xah-open-in-external-app โข and xah-show-in-desktop
can any help test this new version on linux? (the code has already been checked-in in Emacs: Xah Fly Keys )
xah-open-in-external-app
and xah-show-in-desktop
from emiltoacs https://github.com/xahlee/xah-fly-keys/pull/149
The linux branch of xah-open-in-external-app and xah-show-in-desktop that uses xdg-open starts another child process to open its parameters with the appropriate command then it quits however it makes emacs kill the subprocess as soon as xdg-open has finished therefore the files opened externally are also instantaneously killed.
;; before 2022-08-19 (defun xah-show-in-desktop () "Show current file in desktop. (Mac Finder, File Explorer, Linux file manager) This command can be called when in a file buffer or in `dired'. URL `http://xahlee.info/emacs/emacs/emacs_dired_open_file_in_ext_apps.html' Version: 2020-11-20 2022-04-20" (interactive) (let (($path (if (eq major-mode 'dired-mode) (if (eq nil (dired-get-marked-files)) default-directory (car (dired-get-marked-files))) (if (buffer-file-name) (buffer-file-name) default-directory)))) (cond ((string-equal system-type "windows-nt") (shell-command (format "PowerShell -Command invoke-item '%s'" (expand-file-name default-directory)))) ((string-equal system-type "darwin") (shell-command (concat "open -R " (shell-quote-argument $path)))) ((string-equal system-type "gnu/linux") (let ((process-connection-type nil) ($openFileProgram (if (file-exists-p "/usr/bin/gvfs-open") "/usr/bin/gvfs-open" "/usr/bin/xdg-open"))) (start-process "" nil $openFileProgram (shell-quote-argument $path))) ;; (shell-command "xdg-open .") ;; 2013-02-10 this sometimes froze emacs till the folder is closed. eg with nautilus )))) ;; after 2022-08-19 (defun xah-show-in-desktop () "Show current file in desktop. (Mac Finder, File Explorer, Linux file manager) This command can be called when in a file buffer or in `dired'. URL `http://xahlee.info/emacs/emacs/emacs_dired_open_file_in_ext_apps.html' Version: 2020-11-20 2022-04-20" (interactive) (let (($path (if (eq major-mode 'dired-mode) (if (eq nil (dired-get-marked-files)) default-directory (car (dired-get-marked-files))) (if (buffer-file-name) (buffer-file-name) default-directory)))) (cond ((string-equal system-type "windows-nt") (shell-command (format "PowerShell -Command invoke-item '%s'" (expand-file-name default-directory)))) ((string-equal system-type "darwin") (shell-command (concat "open -R " (shell-quote-argument $path)))) ((string-equal system-type "gnu/linux") (call-process shell-file-name nil nil nil shell-command-switch (format "%s %s" "xdg-open" (file-name-directory $path))) ;; (shell-command "xdg-open .") ;; 2013-02-10 this sometimes froze emacs till the folder is closed. eg with nautilus ))))
;; before 2022-08-19 (defun xah-open-in-external-app (&optional Fname) "Open the current file or dired marked files in external app. When called in emacs lisp, if Fname is given, open that. URL `http://xahlee.info/emacs/emacs/emacs_dired_open_file_in_ext_apps.html' Version: 2019-11-04 2021-07-21" (interactive) (let ($fileList $doIt ) (setq $fileList (if Fname (list Fname) (if (string-equal major-mode "dired-mode") (dired-get-marked-files) (list (buffer-file-name))))) (setq $doIt (if (<= (length $fileList) 5) t (y-or-n-p "Open more than 5 files? "))) (when $doIt (cond ((string-equal system-type "windows-nt") (mapc (lambda ($fpath) (shell-command (concat "PowerShell -Command \"Invoke-Item -LiteralPath\" " "'" (shell-quote-argument (expand-file-name $fpath )) "'"))) $fileList)) ((string-equal system-type "darwin") (mapc (lambda ($fpath) (shell-command (concat "open " (shell-quote-argument $fpath)))) $fileList)) ((string-equal system-type "gnu/linux") (mapc (lambda ($fpath) (let ((process-connection-type nil)) (start-process "" nil "xdg-open" $fpath))) $fileList)) ((string-equal system-type "berkeley-unix") (mapc (lambda ($fpath) (let ((process-connection-type nil)) (start-process "" nil "xdg-open" $fpath))) $fileList)))))) ;; after 2022-08-19 (defun xah-open-in-external-app (&optional Fname) "Open the current file or dired marked files in external app. When called in emacs lisp, if Fname is given, open that. URL `http://xahlee.info/emacs/emacs/emacs_dired_open_file_in_ext_apps.html' Version: 2019-11-04 2021-07-21 2022-08-19" (interactive) (let ($fileList $doIt ) (setq $fileList (if Fname (list Fname) (if (string-equal major-mode "dired-mode") (dired-get-marked-files) (list (buffer-file-name))))) (setq $doIt (if (<= (length $fileList) 5) t (y-or-n-p "Open more than 5 files? "))) (when $doIt (cond ((string-equal system-type "windows-nt") (mapc (lambda ($fpath) (shell-command (concat "PowerShell -Command \"Invoke-Item -LiteralPath\" " "'" (shell-quote-argument (expand-file-name $fpath )) "'"))) $fileList)) ((string-equal system-type "darwin") (mapc (lambda ($fpath) (shell-command (concat "open " (shell-quote-argument $fpath)))) $fileList)) ((string-equal system-type "gnu/linux") (mapc (lambda ($fpath) (call-process shell-file-name nil nil nil shell-command-switch (format "%s %s" "xdg-open" (shell-quote-argument $fpath)))) $fileList)) ((string-equal system-type "berkeley-unix") (mapc (lambda ($fpath) (let ((process-connection-type nil)) (start-process "" nil "xdg-open" $fpath))) $fileList))))))
updated or new page
- Emacs: Regular Expression
- Emacs: Wildcards vs Regular Expression
- Emacs: Regular Expression Syntax
- Emacs Lisp: Regular Expression
- Emacs Regex vs Regex in Python, JavaScript, Java Etc
- Emacs Lisp: Regex Functions
- Emacs Lisp: Unicode Escape Sequence
- Emacs Regular Expression Named Character Class and Syntax Table
- Emacs: Evaluate Elisp Code
- Emacs: Messages Buffer
- Emacs Lisp: Comment
- Emacs Lisp: Print, Output
- Emacs Lisp: String
- Emacs Lisp: Format String
updated: