GitHub - nonsequitur/smex: A smart M-x enhancement for Emacs.
source link: https://github.com/nonsequitur/smex
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Smex is a M-x enhancement for Emacs. Built on top of Ido, it provides a convenient interface to your recently and most frequently used commands. And to all the other commands, too.
Changelog
Jump to Changelog.
Get started
-
Get Smex
- Via Marmalade or MELPA.
- Or manually download Smex and set-up your load path. (Find out more.)
-
To auto-start Smex every time you open Emacs add these lines to your .emacs file:
(require 'smex) ; Not needed if you use package.el (smex-initialize) ; Can be omitted. This might cause a (minimal) delay ; when Smex is auto-initialized on its first run.
-
Bind some keys:
(global-set-key (kbd "M-x") 'smex) (global-set-key (kbd "M-X") 'smex-major-mode-commands) ;; This is your old M-x. (global-set-key (kbd "C-c C-c M-x") 'execute-extended-command)
-
Run Smex. (Type M-x, if that's your key binding).
The commands are displayed in an Ido completion buffer, ordered by relevance. The 7 most recently executed commands come first, the rest are sorted by frequency of use, command length and in alphabetical order.
Ido completion in 10 seconds: Typing selects matching commands:
e.g. 'lnmd' matches 'line-number-mode'. C-s
/C-r
switches to the
next/previous match. Enter
executes the selected command.
Learn more
Show only major mode commands
smex-major-mode-commands
runs Smex, limited to commands that
are relevant to the active major mode. Try it with Dired or Magit.
Command help
C-h f
, while Smex is active, runs describe-function
on the
currently selected command.
M-.
jumps to the definition of the selected command.
C-h w
shows the key bindings for the selected command. (Via where-is
.)
Accessing new commands
Before accepting user input, Smex checks for new command definitions
and updates its caches accordingly.
You can disable auto-updating and gain some slight speed improvements
on older systems by setting smex-auto-update
to nil.
To manually update Smex, call it a second time while it is already running.
Additionally, you can teach Smex to auto-update after Emacs has
been idle for 60 seconds: Call (smex-auto-update)
; provide an integer
argument for a custom time period in seconds.
Show unbound commands
smex-show-unbound-commands
shows frequently used commands that have
no key bindings.
Persistence
Smex keeps a file to save its state betweens Emacs sessions. The
default path is "~/.smex-items"; you can change it by setting the
variable smex-save-file
.
History
Set smex-history-length
to change the number of recent commands that
Smex keeps track of.
Prompt
Set smex-prompt-string
for a custom prompt.
Changelog
-
Use
execute-extended-command
for running commands. This breaks support for Emacs versions older than 24 and obviates the user optionsmex-key-advice-ignore-menu-bar
. (The default Emacs behaviour is to not show menu bar bindings.)As a result of this change, the variable
suggest-key-bindings
is now honored when executing commands. -
Save command history in
extended-command-history
, like M-x.
- Improved tab completion in the Smex minibuffer
- Add compatibility with command-frequency
- Remove
smex-detect-legacy-save-file
. Only relevant (but a breaking change) when you rely on a long deprecated default value of smex-save-file. - Ignore smex-save-file when it's empty instead of raising an error. Warn on invalid data in smex-save-file. Fixes [issue #23] (#23).
1.1.4
- Allow running
where-is
on the selected command. - Fix compatibility with ido-ubiquitous.
1.1.3
- Add auto-initialization.
- Minor fixes.
Appendix
Smex is my first venture into Elisp. I'd be glad to receive patches, comments and your considered criticism.
Have fun with Smex!
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK