#+title: Emacs TODOs #+STARTUP: content * High Priority ** persist scratch buffer *** scratch keybind ** make project.el see Seafile/Notes as a project ** copy-region-for-reddit * keybindings ** emacs *** half-screen scrolling https://karthinks.com/software/more-less-emacs/#bonus-half-screen-scrolling *** previous/next buffer *** C-o prefix for window managment **** C-o C-o for other window **** C-o wasd repeat map for moving manually **** C-o / for vsplit **** C-o - for hsplit **** shift-wasd for moving windows **** C-wasd for resizing **** C-d for delete **** C-/ for undo window change **** other-window scrolling **** z to save current layout and maximize current window *** C-i for imenu *** repeat map for C-v/M-v *** repeat map for org navigation bindings why is there only one for C-c C-u by default? ** dired https://github.com/alexluigit/dirvish *** toggle hidden files ** eshell toggle call e-shell globally previous buffer in eshell-mode ** open project straight to magit ** free keys *** C-t *** C-o *** C-' *** C-, *** M-r *** C/M-` *** C/M-1 *** M-i * read docs/configure ** when opening help buffer, focus it so I can q out ** eshell https://www.masteringemacs.org/article/complete-guide-mastering-eshell https://github.com/iostapyshyn/eshell-vterm ** tramp *** multi-hop specifically ssh -> docker https://github.com/emacs-pe/docker-tramp.el https://www.emacswiki.org/emacs/TrampAndDocker ** embark https://karthinks.com/software/fifteen-ways-to-use-embark/ ** Emacs everywhere https://github.com/tecosaur/emacs-everywhere ** avy https://karthinks.com/software/avy-can-do-anything/ https://github.com/xl666/avy-conf/blob/main/avy.org ** xref *** dumb-jump ** yasnippet *** org src blocks ** vertico ** mwim replaces c-a hack ** marginalia ** treesit-auto https://github.com/renzmann/treesit-auto *** treesit-jump https://github.com/dmille56/treesit-jump ** orderless ** consult *** consult-yank-from-kill-ring ** repeat-mode https://karthinks.com/software/it-bears-repeating/ ** corfu ** cape https://takeonrules.com/2022/01/17/switching-from-company-to-corfu-for-emacs-completion/ *** complete files and lines ** org *** TAB should cycle when at end of folded header line *** keybind C-c C-c for committing code block changes *** keybind C-c n for narrow *** switch to use-package repeat-map for C-c C-n/p *** better binds for moving subtrees *** transclude https://github.com/nobiot/org-transclusion *** roam *** beautify https://zzamboni.org/post/beautifying-org-mode-in-emacs/ https://mstempl.netlify.app/post/beautify-org-mode/ https://github.com/Gavinok/emacs.d/blob/main/lisp/org-config.el https://github.com/minad/org-modern **** hide markup characters **** org-modern ** magit *** Fix magit invisible changes in terminal ** lsp-mode *** lsp-booster https://github.com/blahgeek/emacs-lsp-booster ** code folding *** outli ** combobulate ** emacs-chrome https://github.com/stsquad/emacs_chrome ** devdocs https://github.com/astoff/devdocs.el ** vundo https://github.com/casouri/vundo ** popper ** verb https://github.com/federicotdn/verb for http requests * port doom config.el ** reveal in finder #+begin_src emacs-lisp (defun first-executable (candidates) (seq-find #'executable-find candidates)) ;; Reveal in finder/nautilus/whatever (defun reveal-in-file-browser () (interactive) (call-process (first-executable '("xdg-open" "open")) nil nil nil ".")) #+end_src * line wrapping https://elpa.gnu.org/packages/adaptive-wrap.html * languages ** python ** rust * Cheatsheet ** Movement commands | Unit | Move | Kill | Mark | Transpose | Notes | |--------------+---------+---------------------+-----------+-----------+--------------------------------------| | Word | M-b/f | M-d / M-DEL / C-DEL | M-@ | M-t | M- b/f/d/DEL | | Sentence | M-a/e | M-k / C-x DEL | | M-x t-s | M- a/e/k | | Paragraph | M-{/} | | M-h | M-x t-p | | | Line | C-n/p | C-k / C-S-DEL | | C-x C-t | Join with M-^, delete blanks C-x C-o | | Sexp | C-M-b/f | C-M-k / C-M-DEL | C-M- | C-M-t | C-M- b/f/k/DEL | | List in/out | C-M-d/u | | | | | | List sibling | C-M-n/p | | | | | | Defun | C-M-a/e | | C-M-h | | | | Screenful | C/M-v | | | | | | Other window | C-M-v/V | | | | | | Buffer | M- | | C-x h | | | ** Isearch | Binding | Command | |-----------+------------------------------------| | C-w | Add word at point to search | | M-s c | Toggle case sensitive | | M-s r | Toggle regex | | M-s w | Toggle word mode | | M-s _ | Toggle symbol mode | | M-s | Toggle lax whitespace matching | | M-s ' | Toggle character folding (pg 160) | | M-s M-. | Isearch forward for thing at point | | M-s o | Occur mode | ** Comment M-; DWIM C-x C-; Line ** Jump to last mark C-u C-SPC ** Zoom in/out C-x C-[0/-/=] has repeat map ** use-package key bindings Can remap functions as well as keys #+begin_src emacs-lisp (use-package unfill :bind ([remap fill-paragraph] . unfill-toggle)) #+end_src ** use-package supports repeat-map #+begin_src emacs-lisp (use-package git-gutter+ :bind (:repeat-map git-gutter+-repeat-map ("n" . git-gutter+-next-hunk) ("p" . git-gutter+-previous-hunk) ("s" . git-gutter+-stage-hunks) ("r" . git-gutter+-revert-hunk))) #+end_src ** shortdoc-display-group shows useful documentation summary on various categories of things ** Act on other window with C-x 4 [...] ** Tab commands on C-x t #+begin_src elisp (global-set-key (kbd "M-[") 'tab-bar-history-back) (global-set-key (kbd "M-]") 'tab-bar-history-forward) #+end_src * Notes from Mastering Emacs ** C-x # in emacsclient says "done with current buffer" ** C-x 8 RET (insert-char) for to insert weird characters ** C-h m (describe-mode) ** I in embark goes to manual ** (global-set-key [remap ] ') remaps all keybindings that refer to to ** repeat-mode describe-repeat-maps to see which keys repeat ** bookmarks C-x r (m)ark, (l)ist, jump to (b)ookmark ** registers C-x r (s)tore region, (i)nsert contents C-x r (SPC) store point, (j)ump to register ** highlighters M-s h keymap also H in embark ** Macros (p226) F3 start record / insert counter F4 stop record / play macro C-x ( start reocrd C-x ) stop record C-x e playback C-0 F4 repeat macro until error ** Indentation C-x TAB with a region enters an interactive indentation mode ** Alignment (p250) ** auto-revert-tail-mode ** M-| pipes region to shell command replaces region if invoked with C-u * mine for ideas https://github.com/daviwil/emacs-from-scratch/blob/9388cf6ecd9b44c430867a5c3dad5f050fdc0ee1/Emacs.org https://tony-zorman.com/posts/2022-10-22-emacs-potpourri.html https://www.masteringemacs.org/article/demystifying-emacs-window-manager https://github.com/emacs-tw/awesome-emacs https://www.reddit.com/r/emacs/comments/x43eie/heres_a_list_of_emacs_keyboard_shortcuts_that_i/