Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/dawranliou/emacs.d

My ever-evolving Emacs config at work. Targeting emacs master build on OSX.
https://github.com/dawranliou/emacs.d

emacs emacs-configuration emacs-lisp emacs-theme

Last synced: 14 days ago
JSON representation

My ever-evolving Emacs config at work. Targeting emacs master build on OSX.

Awesome Lists containing this project

README

        

#+TITLE:Daw-Ran Liou's Emacs Configuration
#+STARTUP: overview

This is an ongoing evolution of my original Emacs configuration files, inspired
by a bunch of resources I’ve found online.

* Installation

#+begin_src shell
git clone [email protected]:dawranliou/emacs.d.git
#+end_src

* Startup performance

The startup time is ~0.6 seconds on my machine. The only tricks I use is to
increase the startup GC threshold and defer loading package loading. Nothing
too fancy here.

* Configuration structure

- =early-init.el= - See [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Early-Init-File.html][The Early Init File]]
- =init.el= - The majority of the configuration

These are kept out of git's version control:

- =private.el= - The file is loaded after init.

* Keybindings
Keybinding ideas:
- http://mbork.pl/2019-03-18_Free_Emacs_key_bindings

This section might be out-dated because I am constantly tweaking my
configurations.

** Emacs-style keybindings

There are some cases where I prefer emacs style keybindings.

| Key | Binding | Original |
|---------+------------------------------+-------------------------|
| C-. | embark-act | |
| C-; | iedit-mode | |
| C-\ | undo-only | |
| C-M-d | down-list | |
| C-M-r | raise-sexp | isearch-backward-regexp |
| C-M-w | backward-kill-sexp | append-next-kill |
| C-a | move-beginning-of-line+ | move-beginning-of-line |
| C-w | backward-kill-word-or-region | backward-kill-word |
| C-z | nil | suspend-emacs |
| M-: | pp-eval-expression | |
| M-j | avy-goto-char-timer | |
| M-i | delete-other-windows | |
| M-o | other-window | |
| M-n | embark-next-symbol | |
| M-p | embark-previous-symbol | |
| M-s n | embark-next-symbol | |
| M-s p | embark-previous-symbol | |
| M-q | fill-or-unfill-paragraph | |
| M-z | zap-up-to-char | |
| M-Z | zap-to-char | |
| M-SPC | cycle-spacing | |

*** =C-c= map

| Key | Binding | Original |
|---------+------------------------------+----------|
| C-c d | find-config | |
| C-c r | rg | |
| C-c l | org-store-link | |
| C-c a | org-agenda | |
| C-c b | org-switchb | |
| C-c c | org-capture | |
| C-c C-d | helpful-at-point | |
| C-c C-f | completion-at-point-filename | |
| C-c n f | org-roam-node-find | |
| C-c n i | org-roam-node-insert | |
| C-c n c | org-roam-capture | |
| C-c t t | load-one-theme | |
| C-c t w | whitespace-mode | |
| C-c t m | toggle-frame-maximized | |
| C-c t M | toggle-frame-fullscreen | |
| C-c t $ | toggle-truncate-lines | |

*** =C-x= map

| Key | Binding | Original |
|---------+---------------------+---------------------|
| C-x k | kill this buffer | kill-buffer |
| C-x C-b | ibuffer | list-buffers |
| C-x C-e | pp-eval-last-sexp | eval-last-sexp |
| C-x C-j | dired-jump | |
| C-x C-r | recentf-open-files+ | find-file-read-only |

*** Help map =C-h=

| Key | Binding | Original |
|-------+-------------------+-------------------|
| C-h B | embark-bindings | |
| C-h C | helpful-command | |
| C-h F | describe-face | |
| C-h f | helpful-callable | describe-function |
| C-h v | helpful-variable | describe-variable |
| C-h k | helpful-key | describe-key |
| C-h o | helpful-symbol | describe-symbol |
| C-h L | find-library | |
| C-h p | describe-package | finder-by-keyword |
| C-h P | finder-by-keyword | describe-package |

** Mac (OSX) ergonomics keybindings

Not anymore!

This section used to be my keybindings bound with the super modifier key
(usually the command key ⌘). Since I started using ArchLinu on my personal
laptop (a ThinkPad T460S), I've grown to be less dependent on those keybindings.
Lately I decided to use the command keys as the meta keys on my mac as well.
This forced me to swap/remove some of the OS default keybindings. However, the
benefit of having the meta key in a more ergonomics position outweighs the
trouble. I spent most of my time in Emacs anyways.

To rebind/disable some Mac OS default keybindings:
- [[https://apple.stackexchange.com/questions/210517/disable-shift-cmd-q-for-logout][Disable Shift Cmd Q for logout]]
- [[https://apple.stackexchange.com/questions/22785/how-do-i-disable-the-command-control-d-word-definition-keyboard-shortcut-in-os-x][How do I disable the Command-Control-D word definition keyboard shortcut in OS
X Lion?]]

** Evil/modal/vim-style keybindings

Not anymore!

As a refugee from Vim, I started off from Spacemacs, Doom, =evil-mode=, and then
=modalka=. As I got closer to vanilla Emacs, the less I want to deal with all
the hassles of coming in and out of the modes. When I switched to =modalka=
from =evil-mode= for its simplicity, I found myself not really using the
=modalka-mode= at all. I am as efficient as (if not more efficient than) I was
using modal editing. So i think it's time for me to graduate from the modal
editing in general and embrace the Emacs key sequences.