#+TITLE: Emacs Emacs is a fully-featured programming environment. It's often (or most commonly) referred to as a text editor, but this isn't the case. Other editors are designed to offer first-class interfaces for configuring keyboard shortcuts, text configurations, etc. However, emacslisp is structured not to be used as an editor configuration with some additional logic capabilities, but rather as a fully-featured programming language with proper language facilities. Emacs is my desktop environment. [[file:./exwm.org][EXWM]] was my window manaager, elfeed is my RSS reader, mu4e is my email client and so forth. The one program that does not have a proper Emacs interface is the web browser, so I use Firefox (and web apps) for most other tools. This isn't to cause myself undue pain. It reduces context switching between the keyboard shortcuts of many programs and their keybindings, and allows time tracking, task tracking and information management (all fractured, often difficult concepts) to be managed by [[file:./org_mode.org][Org Mode]] entirely within Emacs. This tight integration allows me to take notes and track time without having to switch contexts to other programs with other user interfaces. ^ I don't really stick to this anymore, because emacs is honestly not slow and performant. It's much better to treat Emacs as a text editor and have other purpose built programs. Though there is a future where all text editing configuration is orthogonal to programs and handled independently, it is far from here yet. * Tools - [[https://github.com/karlicoss/cloudmacs][cloudmacs]] :: allows you to self-host your emacs configuration and access it in the browser. :O * Frameworks - Doom Emacs :: The framework I use; focuses on optimization and concise configuration - Spacemacs :: I used to use this. It's too bloated for my tastes. - [[https://github.com/jkitchin/scimax][Scimax]] :: Scientific Emacs framework. Set up to serve as a good introduction! * Configurations https://github.com/sulami/dotfiles/blob/master/emacs/.emacs/README.org: good example of a literate emacs configuration http://aaronbedra.com/emacs.d/: great example of a configuration rendered as a webpage with org mode! https://www.reddit.com/r/emacs/comments/4srze9/watching_youtube_inside_emacs_25/ watching youtube in emacs https://www.emacswiki.org/emacs/ExampleConfigurations https://github.com/munen/emacs.d https://github.com/jhamrick/emacs https://github.com/howardabrams/dot-files https://github.com/jethrokuan/dots https://github.com/codygman/hci https://github.com/zaeph/.emacs.d https://github.com/Ambrevar/dotfiles https://www.youtube.com/watch?app=desktop&v=PKaJoqQQoIA configuring emacs configuration https://github.com/shrysr/.emacs.d https://github.com/purcell/emacs.d https://github.com/zaeph/.emacs.d https://github.com/munen/emacs.d ** Nix and Emacs configurations https://github.com/kinnala/nixemacs https://github.com/benley/dotfiles/blob/master/overlays/emacs.nix https://blog.jethro.dev/posts/nix_buffer_emacs/ https://github.com/purcell/nix-emacs-ci: test your emacs code against a wide variety of upstream configurations https://www.reddit.com/r/emacs/comments/ekr5ek/experimenting%5Fwith%5Fremembrance%5Fagents/ https://github.com/zachcurry/emacs-anywhere use emacs anywhere [[https://blog.akinori.org/][m g vs goto line in emacs]] https://www.reddit.com/r/emacs/comments/hywxef/visually_differentiate_between_links_to_files_and/ differentiate between links to files and links to websites in org ** Doom configuration https://github.com/forrestchang/.doom.d [[https://github.com/sunnyhasija/Academic-Doom-Emacs-Config][sunnyhasija/Academic-Doom-Emacs-Config: My doom emacs configuration files]] https://github.com/NatTuck/doom-config/blob/master/config.el#L12 -- nat tuck's configuration https://github.com/christabella/doom-emacs-config https://tecosaur.github.io/emacs-config/config.html https://dotdoom.rgoswami.me/config.html https://github.com/christabella/doom-emacs-config [[https://www.ethanaa.com/blog/switching-to-doom-emacs/#doom-emacs][comprehensive instrs]] ** Optimisations - [[http://bling.github.io/blog/2016/01/18/why-are-you-changing-gc-cons-threshold/][don't change gc-cons-threshold]] :: fix constant garbage collection by setting it very high when something happens, and changing afterwards to prevent constant garbage collection and freezing when the heap gets too big - https://anuragpeshne.github.io/essays/emacsSpeed.html :: other emacs pro tips * Community [[https://github.com/howardabrams/pdx-emacs-hackers][Portland Emacs Hackers]] * Package Suggestions - [[https://github.com/mtekman/org-tanglesync.el][tanglesync]] :: sync org mode files with dotfiles external to them - [[https://github.com/alphapapa/matrix-client.el][emacs matrix client]] emacs matrix client - [[https://github.com/casouri/OrgMark][mark]] :: add drawings to org mode from your ipad, and [[https://github.com/yati-sagade/orch][orch]], an alternative for Android - [[https://github.com/alraban/org-recoll][recoll]] :: emacs binding for recoll text search engine - [[https://github.com/cpitclaudel/quick-peek][quick-peek]] :: peek at a window inline! - [[https://github.com/legalnonsense/elgantt][elegantt]] :: gantt chart (??) in org. - [[https://github.com/progfolio/doct][doct]] :: declarative format for org capture templates. use this in the future - seems better! - [[https://www.emacswiki.org/emacs/KeyChord][KeyChord]] :: binding commands to combinations of keystrokes - https://github.com/purcell/windswap - [[https://www.reddit.com/r/emacs/comments/74hetz/emacs_everywhere/][emacs everywhere]] - https://github.com/ibizaman/emacs-conflict emacs conflict - https://git.carcosa.net/jmcbray/gemini.el gemini server for emacs - https://www.emacswiki.org/emacs/TrampMode#toc1 tramp-mode for editing files on servers - [[https://github.com/purcell/windswap][swap emacs windows]] - https://github.com/Bad-ptr/persp-mode.el - https://github.com/davazp/graphql-mode gql mode for emacs - https://github.com/lassik/emacs-format-all-the-code autoformat source code for many languages * Links [[https://www.reddit.com/r/emacs/comments/hxu9dx/withemacs_what_you_need_to_know_about_hooks/][Brief guide to Emacs hooks]] [[https://www.reddit.com/r/emacs/comments/74hetz/emacs_everywhere/][emacs everywhere]] [[https://m.youtube.com/watch?v=dljNabciEGg][literate devops with emacs]] * Magit https://magit.vc/manual/forge/Token-Creation.html#Token-Creation magit has a cool interface for making pull requests, but the documentation does not make clear how fully featured it is... * emacs https://karthinks.com/software/batteries-included-with-emacs/ fun things that come with emacs! * Plugins https://github.com/abo-abo/avy jump to visible text with a character based decision tree http://www.howardism.org/Technical/Emacs/templates-tutorial.html configure snippets in emacs https://www.youtube.com/watch?app=desktop&v=gfZDwYeBlO4&%3Bt=2785s 'play emacs like an instrument' https://www.youtube.com/watch?app=desktop&v=4-ubCJF9htw emacs macros and hacks ** Mail [[file:mail.org][Mail]] [[https://emacs.stackexchange.com/questions/12927/reading-and-writing-email-with-emacs][Overview of reading and writing email with Emacs]] [[https://reddit.com/r/emacs/comments/hurwwg/mu4e_dealing_with_sending_html][Mu4e - dealing with sending html]] [[https://ryanwhittingham.com/using-multiple-email-accounts-with-mu4e/][Manage multiple emails with MU4E]] [[https://www.emacswiki.org/emacs/mu4e][emacs wiki MU4E]] [[https://www.reddit.com/r/emacs/comments/6wqfp3/notmuch_delete_mail/][Manage mail deletion with NotMuch]] [[https://www.youtube.com/watch?app=desktop&v=dljNabciEGg][literate devops with emacs]] [[https://www.emacswiki.org/emacs/DirectoryVariables][using dir-locals]] [[https://www.reddit.com/r/emacs/comments/hurwwg/mu4e_dealing_with_sending_html/][send html email with mu4e]] [[https://www.reddit.com/r/emacs/comments/hv5m0z/muwizard_easily_setup_mu4e_accounts_on_emacs/][mu wizard for easily setting up mu4e]] ** Music [[file:music.org][Music]] [[https://bzg.fr/en/emacs-org-babel-overtone-intro.html/][Emacs Org and Overtone quick intro · Bastien Guerry - Liberté, informatique, choucroute.]] [[https://www.reddit.com/r/emacs/comments/7yz1k2/using_emacs_43_music_with_mpd/][Using Emacs Music with MPD]] [[https://gitea.petton.fr/mpdel/mpdel][Emacs interface for MPD]] [[https://github.com/jorenvo/simple-mpc][Music Player Client for Emacs]] [[https://lucidmanager.org/productivity/configure-emms/][Configure EMMS --- Emacs Multi-Media System on GNU/Linux]]