#+TITLE: Better Defaults layer #+TAGS: emacs|layer [[file:img/emacs.png]] * Table of Contents :TOC_5_gh:noexport: - [[#description][Description]] - [[#features][Features:]] - [[#install][Install]] - [[#configuration][Configuration]] - [[#key-bindings][Key bindings]] * Description This layer enhances the default commands of Emacs and is primarily intended to be used with the =emacs= editing style as it does not change anything in the Vim key bindings. However the =emacs= editing style is not required, you can still use this layer while you are using the =vim= editing style if you have some kind of mixed style. The commands defined in this layer are taken from various sources like [[https://github.com/bbatsov/prelude][Prelude]]. ** Features: - Smart line navigation: Subsequent presses of ~C-a~ toggles between the beginning of the line and the first non-whitespace character. Similarly, subsequent presses of ~C-e~ will toggle between the end of the code and the end of the comments. - =spacemacs/backward-kill-word-or-region=: A combination of =kill-region= and =backward-kill-word=, depending on whether there is an active region. If there's an active region kill that. If not kill the preceding word. - Fill or unfill paragraph: Pressing ~M-q~ for the first time fills current paragraph and pressing ~M-q~ for the second time unfills it. Note that some modes override this key binding so it's not available everywhere. Due to implementation details unfilling doesn't work when called twice via ~M-x~. * Install To use this configuration layer, add it to your =~/.spacemacs=. You will need to add =better-defaults= to the existing =dotspacemacs-configuration-layers= list in this file. * Configuration Choose if ~C-a~ first brings you to the beginning of the line or the beginning of the code (first non-whitespace character). #+BEGIN_SRC emacs-lisp (better-defaults :variables better-defaults-move-to-beginning-of-code-first t) #+END_SRC Choose if ~C-e~ first brings you to the end of the line or the end of the code (before or after comments). #+BEGIN_SRC emacs-lisp (better-defaults :variables better-defaults-move-to-end-of-code-first nil) #+END_SRC * Key bindings | Key binding | Description | |-------------+----------------------------------------------------------------------------------| | ~C-a~ | move to beginning of line or code | | ~C-e~ | move to end of line or code | | ~C-w~ | backward kill word or region | | ~C-y~ | Automatically indenting after pasting. With prefix argument, paste text as it is | | ~M-q~ | fill or unfill current paragraph |