From f6704e7dc57c9952f6f7f6667b65e0eee14be4b4 Mon Sep 17 00:00:00 2001 From: Correl Roush Date: Thu, 12 Sep 2019 21:17:37 -0400 Subject: [PATCH] [provisioning] Add DOOM Emacs --- .doom.d/config.el | 15 ++++ .doom.d/init.el | 177 +++++++++++++++++++++++++++++++++++++++++++ .doom.d/init.el~ | 177 +++++++++++++++++++++++++++++++++++++++++++ .doom.d/packages.el | 7 ++ recipes/emacs | 8 +- recipes/emacs-correl | 7 ++ recipes/emacs-doom | 16 ++++ 7 files changed, 401 insertions(+), 6 deletions(-) create mode 100644 .doom.d/config.el create mode 100644 .doom.d/init.el create mode 100644 .doom.d/init.el~ create mode 100644 .doom.d/packages.el create mode 100644 recipes/emacs-correl create mode 100644 recipes/emacs-doom diff --git a/.doom.d/config.el b/.doom.d/config.el new file mode 100644 index 0000000..40c14dc --- /dev/null +++ b/.doom.d/config.el @@ -0,0 +1,15 @@ +;;; .doom.d/config.el -*- lexical-binding: t; -*- + +;; Place your private configuration here + +(defun my/org-init-babel () + (setq org-src-preserve-indentation nil)) + +(when (featurep! :lang org) + (add-hook! 'org-mode-hook #'my/org-init-babel) + + ;; Don't use DOOM's centralized attachment system. It's incompatible with all + ;; of the org files I already have using the standard setup. + (setq org-attach-directory "data/") + (remove-hook! 'org-load-hook + #'(+org-init-centralized-attachments-h))) diff --git a/.doom.d/init.el b/.doom.d/init.el new file mode 100644 index 0000000..309b413 --- /dev/null +++ b/.doom.d/init.el @@ -0,0 +1,177 @@ +;;; init.el -*- lexical-binding: t; -*- + +;; Copy this file to ~/.doom.d/init.el or ~/.config/doom/init.el ('doom install' +;; will do this for you). The `doom!' block below controls what modules are +;; enabled and in what order they will be loaded. Remember to run 'doom refresh' +;; after modifying it. +;; +;; More information about these modules (and what flags they support) can be +;; found in modules/README.org. + +(doom! :input + ;;chinese + ;;japanese + + :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 + + :ui + ;;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 + ;;fill-column ; a `fill-column' indicator + hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW + ;;hydra + ;;indent-guides ; highlighted indent columns + modeline ; snazzy, Atom-inspired modeline, plus API + nav-flash ; blink the current line after jumping + ;;neotree ; a project drawer, like NERDTree for vim + ophints ; highlight the region an operation acts on + (popup ; tame sudden yet inevitable temporary windows + +all ; catch all popups that start with an asterix + +defaults) ; default popup rules + ;;pretty-code ; replace bits of code with pretty symbols + ;;tabs ; an tab bar for Emacs + ;;treemacs ; a project drawer, like neotree but cooler + ;;unicode ; extended unicode support for various languages + vc-gutter ; 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 + + :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 + ;;lispy ; vim for lisp, for people who dont 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 + + :emacs + dired ; making dired pretty [functional] + electric ; smarter, keyword-based electric-indent + vc ; version-control and Emacs, sitting in a tree + + :term + eshell ; a consistent, cross-platform shell (WIP) + ;;shell ; a terminal REPL for Emacs + ;;term ; terminals in Emacs + ;;vterm ; another terminals in Emacs + + :tools + ;;ansible + ;;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 ; run code, run (also, repls) + flycheck ; tasing you for every semicolon you forget + ;;flyspell ; tasing you for misspelling mispelling + ;;gist ; interacting with github gists + (lookup ; helps you navigate your code and documentation + +docsets) ; ...or in Dash docsets locally + lsp + macos ; MacOS-specific commands + 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 + ;;terraform ; infrastructure as code + ;;tmux ; an API for interacting with tmux + ;;upload ; map local to remote projects via ssh/ftp + ;;wakatime + + :lang + ;;agda ; types of types of types of types... + ;;assembly ; assembly for fun or debugging + ;;cc ; C/C++/Obj-C madness + ;;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 + erlang ; an elegant language for a more civilized age + ;;elixir ; erlang done right + elm ; care for a cup of TEA? + emacs-lisp ; drown in parentheses + ;;ess ; emacs speaks statistics + ;;fsharp ; ML stands for Microsoft's Language + ;;go ; the hipster dialect + ;;(haskell +intero) ; a language that's lazier than I am + ;;hy ; readability of scheme w/ speed of python + ;;idris ; + ;;(java +meghanada) ; 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 + ledger ; an accounting system in Emacs + ;;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 + +dragndrop ; file drag & drop support + +ipython ; ipython support for babel + +pandoc ; pandoc integration into org's exporter + +present) ; using Emacs for presentations + perl ; write code no one else can comprehend + 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 + ;;rest ; Emacs as a REST client + ;;ruby ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"} + ;;rust ; Fe2O3.unwrap().unwrap().unwrap().unwrap() + ;;scala ; java, but good + ;;scheme ; a fully conniving family of lisps + sh ; she sells {ba,z,fi}sh shells on the C xor + ;;solidity ; do you need a blockchain? No. + ;;swift ; who asked for emoji variables? + ;;terra ; Earth and Moon in alignment for performance. + ;;web ; the tubes + ;;vala ; GObjective-C + + :email + ;;(mu4e +gmail) ; WIP + ;;notmuch ; WIP + ;;(wanderlust +gmail) ; WIP + + ;; Applications are complex and opinionated modules that transform Emacs + ;; toward a specific purpose. They may have additional dependencies and + ;; should be loaded late. + :app + ;;calendar + ;;irc ; how neckbeards socialize + (rss +org) ; emacs as an RSS reader + ;;twitter ; twitter client https://twitter.com/vnought + ;;(write ; emacs for writers (fiction, notes, papers, etc.) + ;; +wordnut ; wordnet (wn) search + ;; +langtool) ; a proofreader (grammar/style check) for Emacs + + :config + ;; For literate config users. This will tangle+compile a config.org + ;; literate config in your `doom-private-dir' whenever it changes. + ;;literate + + ;; The default module sets reasonable defaults for Emacs. It also + ;; provides a Spacemacs-inspired keybinding scheme and a smartparens + ;; config. Use it as a reference for your own modules. + (default +bindings +smartparens)) diff --git a/.doom.d/init.el~ b/.doom.d/init.el~ new file mode 100644 index 0000000..39303ef --- /dev/null +++ b/.doom.d/init.el~ @@ -0,0 +1,177 @@ +;;; init.el -*- lexical-binding: t; -*- + +;; Copy this file to ~/.doom.d/init.el or ~/.config/doom/init.el ('doom install' +;; will do this for you). The `doom!' block below controls what modules are +;; enabled and in what order they will be loaded. Remember to run 'doom refresh' +;; after modifying it. +;; +;; More information about these modules (and what flags they support) can be +;; found in modules/README.org. + +(doom! :input + ;;chinese + ;;japanese + + :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 + + :ui + ;;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 + ;;fill-column ; a `fill-column' indicator + hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW + ;;hydra + ;;indent-guides ; highlighted indent columns + modeline ; snazzy, Atom-inspired modeline, plus API + nav-flash ; blink the current line after jumping + ;;neotree ; a project drawer, like NERDTree for vim + ophints ; highlight the region an operation acts on + (popup ; tame sudden yet inevitable temporary windows + +all ; catch all popups that start with an asterix + +defaults) ; default popup rules + ;;pretty-code ; replace bits of code with pretty symbols + ;;tabs ; an tab bar for Emacs + ;;treemacs ; a project drawer, like neotree but cooler + ;;unicode ; extended unicode support for various languages + vc-gutter ; 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 + + :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 + ;;lispy ; vim for lisp, for people who dont 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 + + :emacs + dired ; making dired pretty [functional] + electric ; smarter, keyword-based electric-indent + vc ; version-control and Emacs, sitting in a tree + + :term + ;;eshell ; a consistent, cross-platform shell (WIP) + ;;shell ; a terminal REPL for Emacs + ;;term ; terminals in Emacs + ;;vterm ; another terminals in Emacs + + :tools + ;;ansible + ;;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 ; run code, run (also, repls) + flycheck ; tasing you for every semicolon you forget + ;;flyspell ; tasing you for misspelling mispelling + ;;gist ; interacting with github gists + (lookup ; helps you navigate your code and documentation + +docsets) ; ...or in Dash docsets locally + ;;lsp + ;;macos ; MacOS-specific commands + 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 + ;;terraform ; infrastructure as code + ;;tmux ; an API for interacting with tmux + ;;upload ; map local to remote projects via ssh/ftp + ;;wakatime + + :lang + ;;agda ; types of types of types of types... + ;;assembly ; assembly for fun or debugging + ;;cc ; C/C++/Obj-C madness + ;;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 + ;;erlang ; an elegant language for a more civilized age + ;;elixir ; erlang done right + ;;elm ; care for a cup of TEA? + emacs-lisp ; drown in parentheses + ;;ess ; emacs speaks statistics + ;;fsharp ; ML stands for Microsoft's Language + ;;go ; the hipster dialect + ;;(haskell +intero) ; a language that's lazier than I am + ;;hy ; readability of scheme w/ speed of python + ;;idris ; + ;;(java +meghanada) ; 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 + ;;ledger ; an accounting system in Emacs + ;;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 + +dragndrop ; file drag & drop support + +ipython ; ipython support for babel + +pandoc ; pandoc integration into org's exporter + +present) ; using Emacs for presentations + ;;perl ; write code no one else can comprehend + ;;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 + ;;rest ; Emacs as a REST client + ;;ruby ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"} + ;;rust ; Fe2O3.unwrap().unwrap().unwrap().unwrap() + ;;scala ; java, but good + ;;scheme ; a fully conniving family of lisps + sh ; she sells {ba,z,fi}sh shells on the C xor + ;;solidity ; do you need a blockchain? No. + ;;swift ; who asked for emoji variables? + ;;terra ; Earth and Moon in alignment for performance. + ;;web ; the tubes + ;;vala ; GObjective-C + + :email + ;;(mu4e +gmail) ; WIP + ;;notmuch ; WIP + ;;(wanderlust +gmail) ; WIP + + ;; Applications are complex and opinionated modules that transform Emacs + ;; toward a specific purpose. They may have additional dependencies and + ;; should be loaded late. + :app + ;;calendar + ;;irc ; how neckbeards socialize + ;;(rss +org) ; emacs as an RSS reader + ;;twitter ; twitter client https://twitter.com/vnought + ;;(write ; emacs for writers (fiction, notes, papers, etc.) + ;; +wordnut ; wordnet (wn) search + ;; +langtool) ; a proofreader (grammar/style check) for Emacs + + :config + ;; For literate config users. This will tangle+compile a config.org + ;; literate config in your `doom-private-dir' whenever it changes. + ;;literate + + ;; The default module sets reasonable defaults for Emacs. It also + ;; provides a Spacemacs-inspired keybinding scheme and a smartparens + ;; config. Use it as a reference for your own modules. + (default +bindings +smartparens)) diff --git a/.doom.d/packages.el b/.doom.d/packages.el new file mode 100644 index 0000000..c018f75 --- /dev/null +++ b/.doom.d/packages.el @@ -0,0 +1,7 @@ +;; -*- no-byte-compile: t; -*- +;;; .doom.d/packages.el + +;;; Examples: +;; (package! some-package) +;; (package! another-package :recipe (:host github :repo "username/repo")) +;; (package! builtin-package :disable t) diff --git a/recipes/emacs b/recipes/emacs index 9868a1e..0d1c618 100644 --- a/recipes/emacs +++ b/recipes/emacs @@ -11,11 +11,7 @@ case $_PLATFORM in ;; linux) _recipe _apt - _ppa ubuntu-elisp/ppa - _apt emacs25 + _ppa kelleyk/emacs + _apt emacs26 ;; esac - -if ! [ -d ${HOME}/.emacs.d ]; then - _run "Install .emacs.d" ln -s ${HOME}/dotfiles/.emacs.d ${HOME}/.emacs.d -fi diff --git a/recipes/emacs-correl b/recipes/emacs-correl new file mode 100644 index 0000000..c0c5c0d --- /dev/null +++ b/recipes/emacs-correl @@ -0,0 +1,7 @@ +#!/bin/bash +# Description: My Emacs configuration +set -e + +if ! [ -d ${HOME}/.emacs.d ]; then + _run "Install .emacs.d" ln -s ${HOME}/dotfiles/.emacs.d ${HOME}/.emacs.d +fi diff --git a/recipes/emacs-doom b/recipes/emacs-doom new file mode 100644 index 0000000..a2795c4 --- /dev/null +++ b/recipes/emacs-doom @@ -0,0 +1,16 @@ +#!/bin/bash +# Description: DOOM Emacs +set -e + +_recipe emacs +_recipe git +_recipe _path + +_git "https://github.com/hlissner/doom-emacs" "$HOME/.emacs.d" +_path "$HOME/.emacs.d/bin" + +if ! [ -d ${HOME}/.doom.d ]; then + _run "[emacs-doom] Install .doom.d" ln -s ${HOME}/dotfiles/.doom.d ${HOME}/.doom.d +fi + +_run "[emacs-doom] Refreshing" $HOME/.emacs.d/bin/doom refresh