# smex **Repository Path**: daqingba/smex ## Basic Information - **Project Name**: smex - **Description**: A smart M-x enhancement for Emacs. - **Primary Language**: Emacs Lisp - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-06-06 - **Last Updated**: 2021-06-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ![Smex](https://sites.google.com/site/cumulatm/home/smex-logo.png) ## 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. ![Smex](https://sites.google.com/site/cumulatm/home/SmexScreenshotImage.png) ## [Changelog](#changelog-1) Jump to [Changelog](#changelog-1). ## Get started * Get Smex * Via [Marmalade](http://marmalade-repo.org/packages/smex) or [MELPA](http://melpa.milkbox.net/). * Or manually download Smex and set-up your load path. [(Find out more.)](http://www.emacswiki.org/emacs/InstallingPackages) * 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 ### 3.0 * Use `execute-extended-command` for running commands. This breaks support for Emacs versions older than 24 and obviates the user option `smex-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. ### 2.1 * Improved tab completion in the Smex minibuffer * Add compatibility with command-frequency ### 2.0 * 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] (https://github.com/nonsequitur/smex/issues/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!*