A Collection of Ridiculously Useful eXtensions for Emacs. crux bundles a few useful interactive commands to enhance your overall Emacs experience.
Available on all major package.el
community maintained repos -
MELPA Stable and MELPA repos.
MELPA Stable is recommended as it has the latest stable version. MELPA has a development snapshot for users who don't mind breakage but don't want to run from a git checkout.
You can install crux
using the following command:
M-x package-install [RET] crux [RET]
or if you'd rather keep it in your dotfiles:
(unless (package-installed-p 'crux)
(package-refresh-contents)
(package-install 'crux))
If the installation doesn't work try refreshing the package list:
M-x package-refresh-contents
crux doesn't setup any keybindings for its commands out-of-the-box.
Here's the list of some suggested keybindings. Feel free to bind individual commands to whatever keybindings you prefer.
Command | Suggested Keybinding(s) | Description |
---|---|---|
crux-open-with |
C-c o | Open the currently visited file with an external program. |
crux-smart-open-line-above |
C-S-RET or Super-o | Insert an empty line above the current line and indent it properly. |
crux-smart-open-line |
S-RET or M-o | Insert an empty line and indent it properly (as in most IDEs). |
crux-cleanup-buffer-or-region |
C-c n | Fix indentation in buffer and strip whitespace. |
crux-recentf-find-file |
C-c f or Super-r | Open recently visited file. |
crux-view-url |
C-c u | Open a new buffer containing the contents of URL. |
crux-eval-and-replace |
C-c e | Eval a bit of Emacs Lisp code and replace it with its result. |
crux-transpose-windows |
C-x 4 t | Transpose the buffers between two windows. |
crux-delete-file-and-buffer |
C-c D | Delete current file and buffer. |
crux-duplicate-current-line-or-region |
C-c d | Duplicate the current line (or region). |
crux-duplicate-and-comment-current-line-or-region |
C-c M-d | Duplicate and comment the current line (or region). |
crux-rename-file-and-buffer |
C-c r | Rename the current buffer and its visiting file if any. |
crux-visit-term-buffer |
C-c t | Open a terminal emulator (ansi-term ). |
crux-kill-other-buffers |
C-c k | Kill all open buffers except the one you're currently in. |
crux-indent-defun |
C-M z | Indent the definition at point. |
crux-indent-rigidly-and-copy-to-clipboard |
C-c TAB | Indent and copy region to clipboard |
crux-find-user-init-file |
C-c I | Open user's init file. |
crux-find-shell-init-file |
C-c S | Open shell's init file. |
crux-top-join-lines |
Super-j or C-^ | Join lines |
crux-kill-whole-line |
Super-k | Kill whole line |
crux-kill-line-backwards |
C-Backspace | Kill line backwards |
crux-ispell-word-then-abbrev |
C-c i | Fix word using ispell and then save to abbrev . |
Here's how you'd bind some of the commands to keycombos:
(global-set-key [remap move-beginning-of-line] #'crux-move-beginning-of-line)
(global-set-key (kbd "C-c o") #'crux-open-with)
(global-set-key [(shift return)] #'crux-smart-open-line)
(global-set-key (kbd "s-r") #'crux-recentf-find-file)
(global-set-key (kbd "C-<backspace>" #'crux-kill-line-backwards))
(global-set-key [remap kill-whole-line] #'crux-kill-whole-line)
For crux-ispell-word-then-abbrev
to be most effective you'll also need to add this to your config:
(setq save-abbrevs 'silently)
(setq-default abbrev-mode t)
crux ships with some handy advises that can enhance the operation of existing commands.
You can use crux-with-region-or-buffer
to make a command acting
normally on a region to operate on the entire buffer in the absence of
a region. Here are a few examples you can stuff in your config:
(crux-with-region-or-buffer indent-region)
(crux-with-region-or-buffer untabify)
Likewise, you can use crux-with-region-or-line
to make a command
alternately act on the current line if the mark is not active:
(crux-with-region-or-line comment-or-uncomment-region)
Sometimes you might want to act on the point until the end of the current line, rather than the whole line, in the absence of a region:
(crux-with-region-or-point-to-eol kill-ring-save)
Crux provides a crux-reopen-as-root
command for reopening a file as
root. This global minor mode changes find-file
so all root files are
automatically opened as root.
Copyright © 2015 Bozhidar Batsov and contributors.
Distributed under the GNU General Public License; type C-h C-c to view it.