#+title: Emacs TODOs #+STARTUP: content * Cheatsheet ** 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 * High Priority ** persist scratch buffer *** scratch keybind * 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/ * free keys ** C-z ** C-t ** C-o ** C-j ** C-' ** C-, ** M-r * keybindings ** emacs *** better bindings for page up / page down / home / end *** center cursor after page up / page down https://karthinks.com/software/more-less-emacs/#bonus-half-screen-scrolling *** previous/next buffer ** dired https://github.com/alexluigit/dirvish *** toggle hidden files ** eshell toggle call e-shell globally previous buffer in eshell-mode * 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 ** whitespace cleanup https://batsov.com/articles/2011/11/25/emacs-tip-number-3-whitespace-cleanup/ ** embark https://karthinks.com/software/fifteen-ways-to-use-embark/ ** avy https://karthinks.com/software/avy-can-do-anything/ ** xref *** dumb-jump ** yasnippet *** org src blocks ** undo-tree ** vertico ** mwim ** marginalia ** treesit-auto https://github.com/renzmann/treesit-auto ** orderless ** consult ** 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 * 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 * if nix in path, prefer nix versions of emacs packages don't use :straight t in use-package declarations instead, have section that conditionally runs straight-use-package directives if necessary * languages ** python ** rust ** nix https://github.com/elkowar/rnix-lsp * 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 ** tab-bar-mode replacement for perspective.el offers window configurations as tabs, similar to iTerm/Kitty also look into tab history mode ** 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 ** auto-revert-tail-mode ** M-| pipes region to shell command replaces region if invoked with C-u