Files
nix-config/home/base/desktop/editors/emacs

Emacs Editor

Why emacs?

  1. Explore the unknown, just for fun!
  2. Org Mode
  3. Lisp Coding

Install or Update

After deploying this nix flake, run the following command to install or update emacs:

doom sync

when in doubt, run doom sync!

Testing

via Justfile located at the root of this repo.

# testing
just emacs-test
jsut emacs-purge
just emacs-reload

# clear test data
just emacs-clear

Cheetsheet

Here is the cheetsheet related to my DoomEmacs configs. Please read vim's common cheetsheet at ../README.md before reading the following.

Basics

Terminal(vterm) is useful in GUI mode, I use Zellij instead in terminal mode.

We can run any emacs command via M-x(Alt + x).

Action Shortcut
Popup Terminal(vterm) SPC + o + t
Open Terminal SPC + o + T
Open file tree sidebar SPC + o + p
Exit M-x C-c

Window Navigation

Action Shortcut
Split a window vertically and horizontally SPC w v/s
Move to a window in a specific direction Ctrl-w + h/j/k/l
Move a window to a specific direction Ctrl-w + H/J/K/L
Move to the next window SPC w w
Close the current window SPC w q
Rebalance all windows SPC w =
Set window's width(columns) 80 SPC w | (the Vertical line is escaped due to markdown's limits)
Set window's height 30 SPC w _

File Tree

Action Shortcut
Resize Treemacs's window > & <
Extra Wide Window W
Rename R
Delete File/Direcoty d
New File cf
New Directory cd
Go to parent u
Run shell command in for current node !
Refresh file tree gr
Copy project-path into pasteboard yp
Copy absolute-path into pasteboard ya
Copy relative-path into pasteboard yr
Copy file to another location yf
Move file to another location m
quit q

And bookmarks:

  • Add bookmarks in treemacs: b
  • Show Bookmark List: SPC s m

Splitting and Buffers

Action Shortcut
Buffer List <Space> + ,
Save all buffers(Tab) <Space> + b + S
Kill the current buffer <Space> + b + k
Kill all buffers <Space> + b + K

Editing and Formatting

Action Shortcut
Format Document <Space> + cf
Code Actions <Space> + ca
Rename <Space> + cr
Opening LSP symbols <Space> + cS
Show all LSP Errors <Space> + c + x/X
Show infinite undo history(really useful!) <Space> + s + u
Open filepath/URL at cursor gf
Find files by keyword in path <Space> + <Space>
Grep string in files (vertico + ripgrep) <Space> + sd

Image Preview(GUI mode only)

Use -, + to resize the image, r to rotate the image.

Search & replace

SPC s p foo C-; E C-c C-p :%s/foo/bar/g RET Z Z
  1. SPC s p: search in project
  2. foo: the keyword to search
  3. C-; E: exports what youre looking at into a new buffer in grep-mode
  4. C-c C-p to run wgrep-change-to-wgrep-mode to make the search results writable.
  5. :%s/foo/bar/g RET: replace in the current buffer(just like neovim/vim)
  6. Z Z: to write all the changes to their respective files

Projects

easily switch between projects without exit emacs!

Action
Switch between projects SPC + p + p
Browse the current project SPC + p + .
Add new project SPC + p + a

Workspaces

Very useful when run emacs in daemon/client modes

Action
Switch between workspaces M-1/2/3/...(Alt-1/2/3/..)
New Workspace SPC + TAB + n
New Named Workspace SPC + TAB + N
Delete Workspace SPC + TAB + d
Display Workspaces bar blow SPC + TAB + TAB