This config is based on Emacs Bedrock, and then tailored to my personal taste. Emacs Bedrock is great because it offered a strong template to build from, and I recommend everyone to use it if they want to build their own. My main motivations are a more finer grained control over the editor, and an Emacs config that is my own. Some configs are merged from Purcell's .emacs.d, and some are based on my own (admittedly weird) aesthetic sense. Some (not all) features are listed below.
To use my config,
git clone https://github.com/42yeah/emacs.d .emacs.d
Now some people with sharp eyes might've noticed the dot, or the lack thereof. And to that, I say "Well I forgot, OK?? And I am too lazy to change it now."
The base.el and dev.el are enabled by default, with a few quality-of-life improvements, ranked by their notability.
Keyboard pixel-scroll-mode
. The keyboard-based pixel-scroll-mode
is used to decrease disorientation during Emacs navigation. The code is stolen from u/JosephFerano and modified to my liking. C-v
smoothly scrolls half the screen, while C-V
scrolls 1/4 of the screen for more fine-grained keyboard based control and interpolation. You will find that shift modifier key often offers more fine-grained and precise control for the same functionality in this config. Also using pixel-scroll-precision-interpolate
means there will be no external dependencies. The same goes for M-v
and M-V
.
Window manipulation improvements. For example, while splitting window sideways and vertically, the other window always show the other buffer. Taken from purcell/emacs.d. I found this to be insanely useful during code editing. Likewise, C-S-<UP>, C-S-<DOWN>, C-S-<LEFT>, C-S-<RIGHT>
now swaps windows around, because its certainly nice to have.
Editing and navigational enhancements. avy-goto-char
is rebound to C-j
to stay firmly in the home row, while avy-goto-char-2
is C-J
. avy-goto-char-timer
is on M-j
. whole-line-or-region
is an extra package which allows line deletion using C-w
when there is no active region. This is an insane QoL improvement and I use it so much. beacon
is a package which tracks cursor movement. Though unmaintained, I chose it over pulsar
because it's more pretty. symbol-overlay
is used to enable M-n
and M-p
symbol jumping.
Aesthetic improvements. smart-mode-line
is used to replace the default modeline because I think it's cleaner and less cluttered. Also it feels cooler due to the color choices. rainbow-delimiters
and indent-guide
are used for an overall better editing experience, however I suppose some people may prefer highlight-indent-guides
. prog-mode
now automatically truncates text.
Miscellaneous. Below are a few more notable modifications:
- Eglot automatically starts for the following mode:
c++-ts-mode
,c-ts-mode
,python-ts-mode
,c-mode
. treesit-language-source-alist
is now defined so thattreesit-install-language-grammar
works. This part of code comes from Mickey Petersen.- Various new modes:
cmake-mode
,yaml-mode
,markdown-mode
, etc. - My own customizations are left inside.
- More consult keymaps are bound to their keys according to the manual.
pragmatapro-lig.el
is incorporated because I use Pragmata Pro and I love ligatures.
In this repository, I proposed a novel dot emacs config that is based on Emacs Bedrock. The number of new packages are minimal to reduce bloat and accelerate load time - only 0.99153s on my OpenSUSE as reported by emacs-init-time
. An overall more fine-grained control and keymap is applied, together with a few aesthetic improvements. Experiments shows that I love this config.