1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
|
## Smex
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.
## Get started
* 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.
## Appendix
Smex is my first venture into Elisp. I'd be glad to receive patches,
comments and your considered criticism.
*Have fun with Smex!*
|