diff --git a/emacs/+mail.el b/emacs/+mail.el deleted file mode 100644 index ddd188b..0000000 --- a/emacs/+mail.el +++ /dev/null @@ -1,74 +0,0 @@ -;;; +mail.el -*- lexical-binding: t; -*- - - -; I use ProtonMail with my domainname via ProtonBridge synced via mbsync to mu. -; This may look weird because of that. - -; Add proton bridge cert to trust store when it's present. -; See dotfiles for more info. -(let ((bridgecert (expand-file-name "~/.config/mbsync/transient/bridge.crt"))) - (when (file-exists-p bridgecert) - (require 'gnutls) - (add-to-list 'gnutls-trustfiles bridgecert) - ) - ) - -; Setup mail sending and mu4e structure. -(set-email-account! "ProtonMail" - '((mu4e-sent-folder . "/Sent") - (mu4e-drafts-folder . "/Drafts") - (mu4e-trash-folder . "/Trash") - (mu4e-refile-folder . "/All Mail") - (mu4e-update-interval . 300) - (mu4e-change-filenames-when-moving . t) - (user-mail-address . "james@jpatrick.io") - (message-send-mail-function . 'smtpmail-send-it) - (smtpmail-auth-credentials . "~/.authinfo.gpg") - (smtpmail-smtp-service . 1025) - (smtpmail-smtp-server . "127.0.0.1") - (smtpmail-smtp-user . "james@jpatrick.io") - ) - t) - - -; Helper for adding to bookmarks. Probably overkill.... -(defcustom mu4e-bookmarks - '(( :name "Unread messages" - :query "flag:unread AND NOT flag:trashed" - :key ?u) - ( :name "Today's messages" - :query "date:today..now" - :key ?t) - ( :name "Last 7 days" - :query "date:7d..now" - :hide-unread t - :key ?w) - ( :name "Messages with images" - :query "mime:image/*" - :key ?p)) -"List of pre-defined queries that are shown on the main screen. - -Each of the list elements is a plist with at least: -:name - the name of the query -:query - the query expression -:key - the shortcut key. - -Optionally, you add the following: -:hide - if t, bookmark is hdden from the main-view and speedbar. -:hide-unread - do not show the counts of unread/total number - of matches for the query. This can be useful if a bookmark uses - a very slow query. :hide-unread is implied from :hide. -" - :type '(repeat (plist)) - :group 'mu4e) - -(add-to-list 'mu4e-bookmarks - '( :name "Recent Account Msgs" - :query "maildir:/Folders/subscriptions date 7d..now AND flag:unread" - :key ?s) - ) -(add-to-list 'mu4e-bookmarks - '( :name "Unread Personal" - :query "maildir:/INBOX date 7d..now AND flag:unread" - :key ?i) - ) diff --git a/emacs/+modeline.el b/emacs/+modeline.el deleted file mode 100644 index 1821bbe..0000000 --- a/emacs/+modeline.el +++ /dev/null @@ -1,12 +0,0 @@ -;;; +modeline.el -*- lexical-binding: t; -*- - -;; Only let us know when the encoding is NOT LF UTF-8. -(defun doom-modeline-conditional-buffer-encoding () - "We expect the encoding to be LF UTF-8, so only show the modeline when this is not the case" - (setq-local doom-modeline-buffer-encoding - (unless (and (memq (plist-get (coding-system-plist buffer-file-coding-system) :category) - '(coding-category-undecided coding-category-utf-8)) - (not (memq (coding-system-eol-type buffer-file-coding-system) '(1 2)))) - t))) - -(add-hook 'after-change-major-mode-hook #'doom-modeline-conditional-buffer-encoding) diff --git a/emacs/+org.el b/emacs/+org.el deleted file mode 100644 index d9bb000..0000000 --- a/emacs/+org.el +++ /dev/null @@ -1,105 +0,0 @@ -;;; +org.el -*- lexical-binding: t; -*- -(require 'org) - -(custom-set-variables '(org-directory "~/org/")) -(setq - deft-directory org-directory - org-download-image-dir (concat org-directory ".attach/") - org-roam-directory (concat org-directory "Roam/") - ) - -(defvar +org-capture-work-todo-file "Work/todo.org" - "location for my work todo list. - -This is defined relative to the `org-directory' unless absolute.") - -(defun +org-capture-work-todo-file () - "Expand `+org-capture-work-todo-file' from `org-directory'. -If it is an absolute path return `+org-capture-work-todo-file' verbatim." - (expand-file-name +org-capture-work-todo-file org-directory)) - - -(setq org-agenda-files (list (concat org-directory "Todos/"))) -;; (setq org-agenda-files (list -;; (concat org-directory +org-capture-work-todo-file ) -;; (concat org-directory "todo.org") -;; ) -;; ) - -(setq org-agenda-files (list - (concat org-directory "Todos/" ) - ) - ) -;(org-agenda-files (file-expand-wildcards (concat org-directory "*". )"~/ref/*.org") -;; Automatically Scan normal locations code for projectes. -;; - `src` is used on my linux machine -;; - `Code` is used on my mac machine -;; - `opt` is used on my where I checkout, and compile, and complain about it -;; not running right, but refuse to the the documentation. -(require 'seq) -(setq projectile-project-search-path - (seq-filter 'file-directory-p '("~/src" "~/Code" "~/opt"))) -;; Make sort reasonable. -(setq projectile-sort-order 'access-time) - -;; recursive search for deft -(setq deft-recursive t) - - -; Enable word wrap -(add-hook 'org-mode-hook #'visual-line-mode) - -;Custom bullets -(setq org-superstar-headline-bullets-list '("⁜" "☰" "☱" "☲" "☳" "☴" "☵" "☶" "☷")) - - ;; allow md export -(eval-after-load "org" '(require 'ox-md nil t)) - -;; org-journal-file-format -(customize-set-variable 'org-journal-date-format "%A, %d %B %Y") - - -;;; Making OrgMode it better looking -; User Mix Pitch Mode for orgmode -(add-hook! 'org-mode-hook #'+org-pretty-mode #'mixed-pitch-mode) - - -; Add Padding -(add-hook 'org-mode-hook (lambda () - "Add padding left and right margins to orgmode" - (display-line-numbers-mode -1) - ;(text-scale-set 2) - (setq left-margin-width 2) - (setq right-margin-width 2) - (set-window-buffer nil (current-buffer)))) -;; -(setq org-agenda-deadline-faces - '((1.001 . error) - (1.0 . org-warning) - (0.5 . org-upcoming-deadline) - (0.0 . org-upcoming-distant-deadline))) - -;; Added Org-mode -(add-hook 'org-mode-hook (lambda () - "Beautify Org Checkbox Symbol"` - (push '("[ ]" . "☐") prettify-symbols-alist) - (push '("[_]" . "☐") prettify-symbols-alist) - (push '("[X]" . "☑" ) prettify-symbols-alist) - (push '("[-]" . "⊟" ) prettify-symbols-alist) - (prettify-symbols-mode))) - -(setq org-agenda-skip-scheduled-if-done t - org-agenda-skip-deadline-if-done t - org-agenda-include-deadlines t - org-agenda-block-separator nil - org-agenda-tags-column 100 ;; from testing this seems to be a good value - org-agenda-compact-blocks t) - -(add-to-list 'org-capture-templates - '("w" "Work Todo" entry - (file+headline +org-capture-work-todo-file "Inbox") - "* [_] %?%i\n%a" :prepend t)) - - -(load! "org/+babel-diff") -(load! "org/+roam-daily") diff --git a/emacs/+window.el b/emacs/+window.el deleted file mode 100644 index 7fe745e..0000000 --- a/emacs/+window.el +++ /dev/null @@ -1,17 +0,0 @@ -;;; window.org.el -*- lexical-binding: t; -*- - -(setq doom-fallback-buffer-name "Doom" - +doom-dashboard-name "Doom Dashboard") - -(setq frame-title-format - '("" - (:eval - (if (s-contains-p org-roam-directory (or buffer-file-name "")) - (replace-regexp-in-string - ".*/[0-9]*-?" "☰ " - (subst-char-in-string ?_ ? buffer-file-name)) - "%b")) - (:eval - (let ((project-name (projectile-project-name))) - (unless (string= "-" project-name) - (format (if (buffer-modified-p) " ♢ %s" " ♦ %s") project-name)))))) diff --git a/emacs/README.md b/emacs/README.md deleted file mode 100644 index a009fd4..0000000 --- a/emacs/README.md +++ /dev/null @@ -1,2 +0,0 @@ -I use [doom](https://github.com/hlissner/doom-emacs). Just look there for your -documentation. diff --git a/emacs/config.el b/emacs/config.el index 44fb97e..c4d12ca 100644 --- a/emacs/config.el +++ b/emacs/config.el @@ -1,34 +1 @@ -;;; ~/.doom.d/config.el -*- lexical-binding: t; -*- - -;; Use "," as leader. -(setq doom-localleader-key ",") - -;; Speed up which key response -(setq which-key-idle-delay 0.1) - -;; Firacode is broken with Emacs-plus on osx. Fallback to Hasklig -(setq doom-font (font-spec :family "Hasklig" :size 14) - doom-variable-pitch-font (font-spec :family "ETbembo" :size 19) - doom-big-font (font-spec :family "Hasklig" :size 16)) - -;; Set font -(pcase (system-name) - ("zuk" - ;; Wayland support for high HDPI scaling has some issues. - ;; Increasing the font size is a working stopgap. - (font-put doom-font :size 15)) -) - -;; Use an image splash -(setq fancy-splash-image (concat doom-user-dir "doom.png")) - -(setq ispell-dictionary "en" - ispell-personal-dictionary "~/org/.ispell.en.pws") - - -(add-to-list 'auto-mode-alist '("/\\(tmp\\|private/var\\)/.*/tmp_redmine.greenfiling.com.*\\.txt" . markdown-mode)) - -(load! "+mail") -(load! "+org") -(load! "+modeline") -(load! "+window") +;;; config.el -*- lexical-binding: t; -*- diff --git a/emacs/config.org b/emacs/config.org new file mode 100644 index 0000000..66fd1c0 --- /dev/null +++ b/emacs/config.org @@ -0,0 +1,367 @@ +#+title: Doom Emacs Configuration + +I'll fill out the how and why of this all as I figure out what the hell I'm doing. My current Emacs Configuration is a mess of copy and pasted snippet loosely grouped together. There's a fair number of work around, to transient configuration issues that now no longer exist, and more of stuff cribbed off StackOverflow & held together with string & bubble gum. While not yet calling Configuration Bankrupty, I am going to try to see if I can restructure this technical debt. + + +This Emacs configuration is written using the [[https://en.wikipedia.org/wiki/Literate_programming][Literate Programming]] (sort of) paradigm (well sort of) proposed by [[https://en.wikipedia.org/wiki/Donald_Knuth][Donald Knuth]] in 1984, and uses Hlissner's awesome [[https://github.com/doomemacs/doomemacs][Doom Emacs]] configuration framework. + +While I like Literate Programming, I kind of think that literate configuration is largely a mixed bag. Literate Programming produces often more words then code. For even medium size configurations discoveribility & readability of what is happening can be bogged down in the weight of prose explaining the backstory, current thought, moral ponderings, pros & cons, and deciding thoughts. This extra cruft potentially makes understanding more through, but at cost of readiblity & readability is king. As a compromise I'm going to version both to the verbose =config.org= file and all of the produced configuration files. As an example about that verbosity mentioned prior this entire paragram could have been skipped. + +* Document Structure +This section will be the what & how of things. There will no directly tangled code in this section. + +** Doom Emacs +This is built on top of Hlissner's awesome [[https://github.com/doomemacs/doomemacs][Doom Emacs]] configuration frameworks. Configuraiton is divided into 150 modules, & fair number of convience functions. Rather than detailing stuff about I'll say to go read [[https://github.com/doomemacs/doomemacs/blob/master/docs/faq.org][FAQs]] & [[https://github.com/doomemacs/doomemacs/blob/master/docs/index.org][Index]]. + +Configuration is located in the ~DOOMDIR~ directory. This is default value is located is the ~$HOME/.doom.d~ directory. Typically this directory contains: + ++ =init.el= :: Enabled Doom Modules ++ =config.el= :: General Emacs configuration ++ =package.el= :: Packages to fetch from MELPA, Github, etc. + +Additional configuration for scoped functionality will be named as =+name.el=. + +** Tangle +This org-mode document works by using [[https://orgmode.org/manual/Extracting-Source-Code.html][tangles]]. By default Doom's literate config mode adds any ~#+begin_src~ blocks into the =config.el= file[fn:1]. If you want to tangle to a specific file you pass in a file name. + +#+begin_src orgmode :tangle no +#+begin_src emacs-lisp :tangle "example.el" +#+end_src + +or to disable it tangling for a codeblock set the =:tangle= property in code block header to =no=. + +#+begin_src orgmode :tangle no +#+begin_src orgmode :tangle no +#+end_src + +*** Noweb Reference +This document uses [[https://orgmode.org/manual/Noweb-Reference-Syntax.html][noweb reference syntax]]. This allows us to extract bits of configuration into named codeblocks, which can be interpulated into another code block's variable. For example: + +#+begin_example :tangle no +#+NAME: initialization +#+BEGIN_SRC emacs-lisp + (setq sentence "Never a foot too far, even.") +#+END_SRC + +#+BEGIN_SRC emacs-lisp :noweb yes + (reverse sentence) +#+END_SRC +#+end_example + +will produce + +#+begin_example +#+BEGIN_SRC emacs-lisp :noweb yes + (setq sentence "Never a foot too far, even.") + (reverse sentence) +#+END_SRC +#+end_example + +NOTE: unless you explicitly turn off the named code block will be tangled into =config.el=. Use the no tangle option if you want to disable this. + +* Doom Configuration +** Misc +*** Lexical Bindings. +There [[https://nullprogram.com/blog/2016/12/22/][minor but non-zero start time benefits]] for using Lexical Bindings comments. All files created should start with + +#+BEGIN_SRC emacs-lisp +;;; config.el -*- lexical-binding: t; -*- +#+END_SRC + +replace =config.el= with the filename being loaded. + +** Modules +The configuration is below is pulled from the template init.example.el provided by doom. This one is based off commit [[https://github.com/doomemacs/doomemacs/blob/e96624926d724aff98e862221422cd7124a99c19/templates/init.example.el][e966249]]. + +#+name: init.el +#+attr_html: :collapsed t +#+begin_src emacs-lisp :tangle "init.el" :noweb no-export :comments no +;;; init.el -*- lexical-binding: t; -*- + +;; This file controls what Doom modules are enabled and what order they load +;; in. Remember to run 'doom sync' after modifying it! + +;; NOTE Press 'SPC h d h' (or 'C-h d h' for non-vim users) to access Doom's +;; documentation. There you'll find a link to Doom's Module Index where all +;; of our modules are listed, including what flags they support. + +;; NOTE Move your cursor over a module's name (or its flags) and press 'K' (or +;; 'C-c c k' for non-vim users) to view its documentation. This works on +;; flags as well (those symbols that start with a plus). +;; +;; Alternatively, press 'gd' (or 'C-c c d') on a module to browse its +;; directory (for easy access to its source code). + +(doom! :completion + <> + + :ui + <> + + :editor + <> + + :emacs + <> + + :term + <> + + :checkers + <> + + :tools + <> + + :os + (:if IS-MAC macos) ; improve compatibility with macOS + + :lang + <> + + :email + <> + + :app + <> + + :config + <> + ) +#+end_src + +The code of these can be found in the [[https://github.com/doomemacs/doomemacs/tree/master/modules][modeules directory]], the readme for each module will list any additional configuration options. + +*** Completion +https://github.com/doomemacs/doomemacs/tree/master/modules/completion + +#+name:doom-completion +#+begin_src emacs-lisp :tangle no +company ; the ultimate code completion backend +;;helm ; the *other* search engine for love and life +;;ido ; the other *other* search engine... +;;ivy ; a search engine for love and life +vertico ; the search engine of the future +#+end_src + +=+childframe= exist for both company & vertico, ux is a bit jarring to use with vertico so I'm not using that. + + +*** UI +https://github.com/doomemacs/doomemacs/tree/master/modules/ui + +#+name:doom-ui +#+begin_src emacs-lisp :tangle no +;;deft ; notational velocity for Emacs +doom ; what makes DOOM look the way it does +doom-dashboard ; a nifty splash screen for Emacs +;;doom-quit ; DOOM quit-message prompts when you quit Emacs +;;(emoji +unicode) ; 🙂 +hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW +;;hydra +;;indent-guides ; highlighted indent columns +;;ligatures ; ligatures and symbols to make your code pretty again +;;minimap ; show a map of the code on the side +modeline ; snazzy, Atom-inspired modeline, plus API +;;nav-flash ; blink cursor line after big motions +;;neotree ; a project drawer, like NERDTree for vim +ophints ; highlight the region an operation acts on +(popup +defaults) ; tame sudden yet inevitable temporary windows +;;tabs ; a tab bar for Emacs +;;treemacs ; a project drawer, like neotree but cooler +;;unicode ; extended unicode support for various languages +(vc-gutter +pretty) ; vcs diff in the fringe +vi-tilde-fringe ; fringe tildes to mark beyond EOB +;;window-select ; visually switch windows +workspaces ; tab emulation, persistence & separate workspaces +;;zen ; distraction-free coding or writing +#+end_src + +*** Editor +https://github.com/doomemacs/doomemacs/tree/master/modules/editor + +#+name:doom-editor +#+begin_src emacs-lisp :tangle no +(evil +everywhere); come to the dark side, we have cookies +file-templates ; auto-snippets for empty files +fold ; (nigh) universal code folding +;;(format +onsave) ; automated prettiness +;;god ; run Emacs commands without modifier keys +;;lispy ; vim for lisp, for people who don't like vim +;;multiple-cursors ; editing in many places at once +;;objed ; text object editing for the innocent +;;parinfer ; turn lisp into python, sort of +;;rotate-text ; cycle region at point between text candidates +snippets ; my elves. They type so I don't have to +;;word-wrap ; soft wrapping with language-aware indent +#+end_src + +*** Emacs +https://github.com/doomemacs/doomemacs/tree/master/modules/emacs + +#+name:doom-emacs +#+begin_src emacs-lisp :tangle no +dired ; making dired pretty [functional] +electric ; smarter, keyword-based electric-indent +;;ibuffer ; interactive buffer management +undo ; persistent, smarter undo for your inevitable mistakes +vc ; version-control and Emacs, sitting in a tree +#+end_src + +*** Term +https://github.com/doomemacs/doomemacs/tree/master/modules/term + +#+name:doom-term +#+begin_src emacs-lisp :tangle no +;;eshell ; the elisp shell that works everywhere +;;shell ; simple shell REPL for Emacs +;;term ; basic terminal emulator for Emacs +;;vterm ; the best terminal emulation in Emacs +#+end_src + +*** Checker +https://github.com/doomemacs/doomemacs/tree/master/modules/checker + +#+name:doom-checker +#+begin_src emacs-lisp :tangle no +syntax ; tasing you for every semicolon you forget +;;(spell +flyspell) ; tasing you for misspelling mispelling +;;grammar ; tasing grammar mistake every you make +#+end_src + +*** Tools +https://github.com/doomemacs/doomemacs/tree/master/modules/tools + +#+name:doom-tools +#+begin_src emacs-lisp :tangle no +;;ansible +;;biblio ; Writes a PhD for you (citation needed) +;;debugger ; FIXME stepping through code, to help you add bugs +;;direnv +;;docker +;;editorconfig ; let someone else argue about tabs vs spaces +;;ein ; tame Jupyter notebooks with emacs +(eval +overlay) ; run code, run (also, repls) +;;gist ; interacting with github gists +lookup ; navigate your code and its documentation +;;lsp ; M-x vscode +magit ; a git porcelain for Emacs +;;make ; run make tasks from Emacs +;;pass ; password manager for nerds +;;pdf ; pdf enhancements +;;prodigy ; FIXME managing external services & code builders +;;rgb ; creating color strings +;;taskrunner ; taskrunner for all your projects +;;terraform ; infrastructure as code +;;tmux ; an API for interacting with tmux +;;tree-sitter ; syntax and parsing, sitting in a tree... +;;upload ; map local to remote projects via ssh/ftp +#+end_src + +*** Language +https://github.com/doomemacs/doomemacs/tree/master/modules/lang + +#+name:doom-lang +#+begin_src emacs-lisp :tangle no +;;agda ; types of types of types of types... +;;beancount ; mind the GAAP +;;(cc +lsp) ; C > C++ == 1 +;;clojure ; java with a lisp +;;common-lisp ; if you've seen one lisp, you've seen them all +;;coq ; proofs-as-programs +;;crystal ; ruby at the speed of c +;;csharp ; unity, .NET, and mono shenanigans +;;data ; config/data formats +;;(dart +flutter) ; paint ui and not much else +;;dhall +;;elixir ; erlang done right +;;elm ; care for a cup of TEA? +emacs-lisp ; drown in parentheses +;;erlang ; an elegant language for a more civilized age +;;ess ; emacs speaks statistics +;;factor +;;faust ; dsp, but you get to keep your soul +;;fortran ; in FORTRAN, GOD is REAL (unless declared INTEGER) +;;fsharp ; ML stands for Microsoft's Language +;;fstar ; (dependent) types and (monadic) effects and Z3 +;;gdscript ; the language you waited for +;;(go +lsp) ; the hipster dialect +;;(graphql +lsp) ; Give queries a REST +;;(haskell +lsp) ; a language that's lazier than I am +;;hy ; readability of scheme w/ speed of python +;;idris ; a language you can depend on +;;json ; At least it ain't XML +;;(java +lsp) ; the poster child for carpal tunnel syndrome +;;javascript ; all(hope(abandon(ye(who(enter(here)))))) +;;julia ; a better, faster MATLAB +;;kotlin ; a better, slicker Java(Script) +;;latex ; writing papers in Emacs has never been so fun +;;lean ; for folks with too much to prove +;;ledger ; be audit you can be +;;lua ; one-based indices? one-based indices +markdown ; writing docs for people to ignore +;;nim ; python + lisp at the speed of c +;;nix ; I hereby declare "nix geht mehr!" +;;ocaml ; an objective camel +org ; organize your plain life in plain text +;;php ; perl's insecure younger brother +;;plantuml ; diagrams for confusing people more +;;purescript ; javascript, but functional +;;python ; beautiful is better than ugly +;;qt ; the 'cutest' gui framework ever +;;racket ; a DSL for DSLs +;;raku ; the artist formerly known as perl6 +;;rest ; Emacs as a REST client +;;rst ; ReST in peace +;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"} +;;(rust +lsp) ; Fe2O3.unwrap().unwrap().unwrap().unwrap() +;;scala ; java, but good +;;(scheme +guile) ; a fully conniving family of lisps +sh ; she sells {ba,z,fi}sh shells on the C xor +;;sml +;;solidity ; do you need a blockchain? No. +;;swift ; who asked for emoji variables? +;;terra ; Earth and Moon in alignment for performance. +;;web ; the tubes +;;yaml ; JSON, but readable +;;zig ; C, but simpler +#+end_src + +*** Emails +https://github.com/doomemacs/doomemacs/tree/master/modules/email + +#+name:doom-email +#+begin_src emacs-lisp :tangle no +;;(mu4e +org +gmail) +;;notmuch +;;(wanderlust +gmail) +#+end_src + +*** App +https://github.com/doomemacs/doomemacs/tree/master/modules/app + +#+name:doom-app +#+begin_src emacs-lisp :tangle no +;;calendar +;;emms +;;everywhere ; *leave* Emacs!? You must be joking +;;irc ; how neckbeards socialize +;;(rss +org) ; emacs as an RSS reader +;;twitter ; twitter client https://twitter.com/vnought +#+end_src + +*** Config +https://github.com/doomemacs/doomemacs/tree/master/modules/config + +#+name:doom-config +#+begin_src emacs-lisp :tangle no +;literate +(default +bindings +smartparens) +#+end_src + + +* Content Stolen From +A large amount of the details listed here have been lifted from [[https://tecosaur.github.io/emacs-config/][tecosaur's literate configuration]]. + +* Footnotes +[fn:1] See [[https://github.com/doomemacs/doomemacs/tree/master/modules/config/literate#change-where-src-blocks-are-tangled-or-prevent-it-entirely][Doom FAQ on this for more.]] diff --git a/emacs/init.el b/emacs/init.el index 860f57b..0859180 100644 --- a/emacs/init.el +++ b/emacs/init.el @@ -4,8 +4,8 @@ ;; in. Remember to run 'doom sync' after modifying it! ;; NOTE Press 'SPC h d h' (or 'C-h d h' for non-vim users) to access Doom's -;; documentation. There you'll find a "Module Index" link where you'll find -;; a comprehensive list of Doom's modules and what flags they support. +;; documentation. There you'll find a link to Doom's Module Index where all +;; of our modules are listed, including what flags they support. ;; NOTE Move your cursor over a module's name (or its flags) and press 'K' (or ;; 'C-c c k' for non-vim users) to view its documentation. This works on @@ -14,53 +14,43 @@ ;; Alternatively, press 'gd' (or 'C-c c d') on a module to browse its ;; directory (for easy access to its source code). -(doom! :input - ;;chinese - ;;japanese - ;;layout ; auie,ctsrnm is the superior home row - - :completion - (company ; the ultimate code completion backend - +childframe) +(doom! :completion + company ; the ultimate code completion backend ;;helm ; the *other* search engine for love and life ;;ido ; the other *other* search engine... - (ivy ; a search engine for love and life - +prescient - +icons - +childframe - ) + ;;ivy ; a search engine for love and life + vertico ; the search engine of the future :ui - deft ; notational velocity for Emacs + ;;deft ; notational velocity for Emacs doom ; what makes DOOM look the way it does doom-dashboard ; a nifty splash screen for Emacs - doom-quit ; DOOM quit-message prompts when you quit Emacs + ;;doom-quit ; DOOM quit-message prompts when you quit Emacs ;;(emoji +unicode) ; 🙂 - ;;fill-column ; a `fill-column' indicator hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW ;;hydra - indent-guides ; highlighted indent columns + ;;indent-guides ; highlighted indent columns ;;ligatures ; ligatures and symbols to make your code pretty again ;;minimap ; show a map of the code on the side modeline ; snazzy, Atom-inspired modeline, plus API - nav-flash ; blink cursor line after big motions + ;;nav-flash ; blink cursor line after big motions ;;neotree ; a project drawer, like NERDTree for vim ophints ; highlight the region an operation acts on (popup +defaults) ; tame sudden yet inevitable temporary windows ;;tabs ; a tab bar for Emacs - (treemacs +lsp) ; a project drawer, like neotree but cooler + ;;treemacs ; a project drawer, like neotree but cooler ;;unicode ; extended unicode support for various languages - vc-gutter ; vcs diff in the fringe + (vc-gutter +pretty) ; vcs diff in the fringe vi-tilde-fringe ; fringe tildes to mark beyond EOB ;;window-select ; visually switch windows workspaces ; tab emulation, persistence & separate workspaces - zen ; distraction-free coding or writing + ;;zen ; distraction-free coding or writing :editor (evil +everywhere); come to the dark side, we have cookies file-templates ; auto-snippets for empty files fold ; (nigh) universal code folding - (format +onsave) ; automated prettiness + ;;(format +onsave) ; automated prettiness ;;god ; run Emacs commands without modifier keys ;;lispy ; vim for lisp, for people who don't like vim ;;multiple-cursors ; editing in many places at once @@ -71,8 +61,7 @@ ;;word-wrap ; soft wrapping with language-aware indent :emacs - (dired ; making dired pretty [functional] - +icons) + dired ; making dired pretty [functional] electric ; smarter, keyword-based electric-indent ;;ibuffer ; interactive buffer management undo ; persistent, smarter undo for your inevitable mistakes @@ -82,92 +71,82 @@ ;;eshell ; the elisp shell that works everywhere ;;shell ; simple shell REPL for Emacs ;;term ; basic terminal emulator for Emacs - vterm ; the best terminal emulation in Emacs + ;;vterm ; the best terminal emulation in Emacs :checkers syntax ; tasing you for every semicolon you forget - (spell ; tasing you for misspelling mispelling - +aspell - +everywhere - ) - grammar ; tasing grammar mistake every you make + ;;(spell +flyspell) ; tasing you for misspelling mispelling + ;;grammar ; tasing grammar mistake every you make :tools - ansible - (debugger +lsp) ; FIXME stepping through code, to help you add bugs + ;;ansible + ;;biblio ; Writes a PhD for you (citation needed) + ;;debugger ; FIXME stepping through code, to help you add bugs ;;direnv - (docker +lsp) - editorconfig ; let someone else argue about tabs vs spaces + ;;docker + ;;editorconfig ; let someone else argue about tabs vs spaces ;;ein ; tame Jupyter notebooks with emacs (eval +overlay) ; run code, run (also, repls) ;;gist ; interacting with github gists - (lookup ; navigate your code and its documentation - +docsets - +dictionary) - (lsp - +peek) - (magit +forge) ; a git porcelain for Emacs + lookup ; navigate your code and its documentation + ;;lsp ; M-x vscode + magit ; a git porcelain for Emacs ;;make ; run make tasks from Emacs ;;pass ; password manager for nerds ;;pdf ; pdf enhancements ;;prodigy ; FIXME managing external services & code builders - rgb ; creating color strings - taskrunner ; taskrunner for all your projects + ;;rgb ; creating color strings + ;;taskrunner ; taskrunner for all your projects ;;terraform ; infrastructure as code - tmux ; an API for interacting with tmux + ;;tmux ; an API for interacting with tmux + ;;tree-sitter ; syntax and parsing, sitting in a tree... ;;upload ; map local to remote projects via ssh/ftp :os (:if IS-MAC macos) ; improve compatibility with macOS - ;;tty ; improve the terminal Emacs experience :lang ;;agda ; types of types of types of types... - ;;cc ; C/C++/Obj-C madness + ;;beancount ; mind the GAAP + ;;(cc +lsp) ; C > C++ == 1 ;;clojure ; java with a lisp ;;common-lisp ; if you've seen one lisp, you've seen them all ;;coq ; proofs-as-programs ;;crystal ; ruby at the speed of c ;;csharp ; unity, .NET, and mono shenanigans - data ; config/data formats + ;;data ; config/data formats ;;(dart +flutter) ; paint ui and not much else + ;;dhall ;;elixir ; erlang done right ;;elm ; care for a cup of TEA? emacs-lisp ; drown in parentheses ;;erlang ; an elegant language for a more civilized age ;;ess ; emacs speaks statistics + ;;factor ;;faust ; dsp, but you get to keep your soul + ;;fortran ; in FORTRAN, GOD is REAL (unless declared INTEGER) ;;fsharp ; ML stands for Microsoft's Language ;;fstar ; (dependent) types and (monadic) effects and Z3 ;;gdscript ; the language you waited for - (go +lsp) ; the hipster dialect - ;;(haskell +dante) ; a language that's lazier than I am + ;;(go +lsp) ; the hipster dialect + ;;(graphql +lsp) ; Give queries a REST + ;;(haskell +lsp) ; a language that's lazier than I am ;;hy ; readability of scheme w/ speed of python ;;idris ; a language you can depend on - (json ; At least it ain't XML - +lsp) - (java +meghanada) ; the poster child for carpal tunnel syndrome - (javascript +lsp) ; all(hope(abandon(ye(who(enter(here)))))) - (json +lsp) + ;;json ; At least it ain't XML + ;;(java +lsp) ; the poster child for carpal tunnel syndrome + ;;javascript ; all(hope(abandon(ye(who(enter(here)))))) ;;julia ; a better, faster MATLAB ;;kotlin ; a better, slicker Java(Script) ;;latex ; writing papers in Emacs has never been so fun - ;;lean - ;;factor - ;;ledger ; an accounting system in Emacs + ;;lean ; for folks with too much to prove + ;;ledger ; be audit you can be ;;lua ; one-based indices? one-based indices markdown ; writing docs for people to ignore ;;nim ; python + lisp at the speed of c - (nix +lsp) ; I hereby declare "nix geht mehr!" + ;;nix ; I hereby declare "nix geht mehr!" ;;ocaml ; an objective camel - (org ; organize your plain life in plain text - +dragndrop - +journal - +pandoc - +pomodoro - +pretty ;weirdly expensive - +roam2 - ) + org ; organize your plain life in plain text ;;php ; perl's insecure younger brother ;;plantuml ; diagrams for confusing people more ;;purescript ; javascript, but functional @@ -175,32 +154,28 @@ ;;qt ; the 'cutest' gui framework ever ;;racket ; a DSL for DSLs ;;raku ; the artist formerly known as perl6 - rest ; Emacs as a REST client + ;;rest ; Emacs as a REST client ;;rst ; ReST in peace - (ruby ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"} - +lsp - +rails - (:if IS-MAC +rbenv) - (:if IS-LINUX +chruby) - ) - ;;rust ; Fe2O3.unwrap().unwrap().unwrap().unwrap() + ;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"} + ;;(rust +lsp) ; Fe2O3.unwrap().unwrap().unwrap().unwrap() ;;scala ; java, but good - ;;scheme ; a fully conniving family of lisps - (sh +lsp) ; she sells {ba,z,fi}sh shells on the C xor + ;;(scheme +guile) ; a fully conniving family of lisps + sh ; she sells {ba,z,fi}sh shells on the C xor ;;sml ;;solidity ; do you need a blockchain? No. ;;swift ; who asked for emoji variables? ;;terra ; Earth and Moon in alignment for performance. - web ; the tubes - yaml ; JSON, but readable + ;;web ; the tubes + ;;yaml ; JSON, but readable + ;;zig ; C, but simpler :email - ;;(mu4e +gmail) + ;;(mu4e +org +gmail) ;;notmuch ;;(wanderlust +gmail) :app - calendar + ;;calendar ;;emms ;;everywhere ; *leave* Emacs!? You must be joking ;;irc ; how neckbeards socialize @@ -208,5 +183,6 @@ ;;twitter ; twitter client https://twitter.com/vnought :config - ;;literate - (default +bindings +smartparens)) + ;literate + (default +bindings +smartparens) + ) diff --git a/emacs/org/+babel-diff.el b/emacs/org/+babel-diff.el deleted file mode 100644 index d6aa40f..0000000 --- a/emacs/org/+babel-diff.el +++ /dev/null @@ -1,11 +0,0 @@ -;;; +org.el -*- lexical-binding: t; -*- - -(defun org-babel-execute:diff (body params) - "Applies diff patches. Use with care. -See https://emacs.stackexchange.com/questions/63517/org-mode-evaluate-diff-code-block" - (with-temp-buffer - (insert body "\n") - (shell-command-on-region (point-min) (point-max) "patch --strip=1" "*patch*") - (prog1 - (with-current-buffer "*patch*" (buffer-string)) - (kill-buffer "*patch*")))) diff --git a/emacs/org/+roam-daily.el b/emacs/org/+roam-daily.el deleted file mode 100644 index 1fe02bc..0000000 --- a/emacs/org/+roam-daily.el +++ /dev/null @@ -1,10 +0,0 @@ -;;; +roam-daily.el -*- lexical-binding: t; -*- -(setq org-roam-dailies-capture-templates - '(("l" "Log" entry "* %T %?" - :target (file+head+olp "%<%Y-%m-%d>.org" - "#+title: %<%Y-%m-%d>\n#+filetags: %<:%Y:%B:>\n" - ("Log"))) - ("g" "Goal" entry "* TODO %? :mit:" - :target (file+head+olp "%<%Y-%m-%d>.org" - "#+title: %<%Y-%m-%d>\n#+filetags: %<:%Y:%B:>\n" - ("Goals"))))) diff --git a/emacs/packages.el b/emacs/packages.el index 85db5f1..e69de29 100644 --- a/emacs/packages.el +++ b/emacs/packages.el @@ -1,12 +0,0 @@ -;; -*- no-byte-compile: t; -*- -;;; ~/.doom.d/packages.el - -(package! vimrc-mode) -(package! graphviz-dot-mode :pin "3642a0a5f4...") -(package! systemd :pin "b6ae63a236...") -(package! postcss-sorting) -;;; Examples: -;; (package! pretty-mode) -;; (package! some-package) -;; (package! another-package :recipe (:fetcher github :repo "username/repo")) -;; (package! builtin-package :disable t)