diff options
author | William Carroll <wpcarro@gmail.com> | 2020-04-04T13·30+0100 |
---|---|---|
committer | William Carroll <wpcarro@gmail.com> | 2020-04-04T13·30+0100 |
commit | 46d817665f729b8f5130e768986e9a1950ee443b (patch) | |
tree | fe6ad2982658b971f1127b9db30f2ecfcc57db62 /emacs | |
parent | d0d331df090b95a1c1e903aba47ae58a1074a82c (diff) |
Move Emacs documents to //emacs
These documents outline some of my Elisp conventions and ideas. As such, I think //emacs should host them.
Diffstat (limited to 'emacs')
-rw-r--r-- | emacs/elisp-conventions.md | 20 | ||||
-rw-r--r-- | emacs/keybindings.md | 47 | ||||
-rw-r--r-- | emacs/snippets.md | 22 |
3 files changed, 89 insertions, 0 deletions
diff --git a/emacs/elisp-conventions.md b/emacs/elisp-conventions.md new file mode 100644 index 000000000000..0e39c3069d8b --- /dev/null +++ b/emacs/elisp-conventions.md @@ -0,0 +1,20 @@ +# Elisp Conventions + +Some of this aligns with existing style guides. Some of it does not. + +In general, prefer functions with fixed arities instead of variadic +alternatives. + +- Namespace functions with `namespace/function-name` +- Use `ensure`, `assert`, `refute` whenever possible. +- When talking about encoding and decoding, let's use the words "encoding" and + "decoding" rather than the myriad of other variants that appear like: + - `marshalling` and `unmarshalling` + - `parse` and `deparse`, `serialize`, `stringify` + - `unpickle` and `pickle` (Python) + - `from-string` and `to-string` + - TODO: Add more examples of these; there should be close to a dozen. +- Annotate assertions with `!` endings. +- Prefer the Scheme style of `predicate?` +- Variadic functions *should* encode this by appending * onto their + name. E.g. `maybe/nil?*` diff --git a/emacs/keybindings.md b/emacs/keybindings.md new file mode 100644 index 000000000000..96ba7c96459b --- /dev/null +++ b/emacs/keybindings.md @@ -0,0 +1,47 @@ +# Keybindings + +Since I'm using Emacs to manage most of my workflow, all of the keybindings +should be defined herein and -- in order to scale -- order must be imposed. This +can help avoid KBD collisions and improve my ability to remember each KBD. + +See `kbd.el` for the programmatic encoding of these principles. + +## Troubleshooting + +When in doubt, use Emacs's `read-key` and `read-event` to learn what signal +you're sending Emacs. + +### Super- + +- EXWM X11 windows are not processing `s-`. +- EXWM X11 windows are not processing `<M-ESC>`. + +### Super-Ctrl- + +I'm reserving `C-s-` for opening X11 applications. + +- `terminator`: `t` +- `google-chrome`: `c` + +## Emacs nouns + +Most of my keybindings should be organized according to their function, which in +turn should be related to the following Emacs nouns. + +- `workspace`: As defined by EXWM. +- `frame`: What non-Emacs users would call a "window". Currently my workflow + doesn't use or rely on Emacs frames. +- `window`: A vertical or horizontal split within an Emacs frame. +- `buffer`: Anything storing text in memory. + +## Prefixes and their meanings + +TODO: Have a system for leader-prefixed KBDs, chords, and prefixed chords. + +- `s-`: Switching between named workspaces. Right now, super is too overloaded + and would benefit from having more deliberate keybindings. +- `C-M-`: Window sizing +- `M-{h,j,k,l}`: Window traversing +- `M-{\,-}`: Window splitting +- `M-q`: Window deletion +- `<leader>-q`: Window deletion diff --git a/emacs/snippets.md b/emacs/snippets.md new file mode 100644 index 000000000000..2081b5617184 --- /dev/null +++ b/emacs/snippets.md @@ -0,0 +1,22 @@ +# Snippets + +Specifying snippets that I plan on defining for most of the programming +languages with which I work. I hope this will serve as a checklist of language +constructs I should support when adopting a new language. + +## Shared language features + +These are language features that should be available across most of the +languages that I'm hoping to support. + +- `ld`: anonymous functions (i.e. lambdas) +- `fn`: named function definition +- `var`: variable definition + +## Miscellaneous other language KBDs + +Some of this is related to language tool must-haves, which may need to be a +separate document. + +- `<leader>d`: Show documentation +- `<leader>x`: Evaluate expression (works mostly for LISPs) |