diff options
Diffstat (limited to 'init.el')
-rw-r--r-- | init.el | 214 |
1 files changed, 155 insertions, 59 deletions
diff --git a/init.el b/init.el index c07ce23ffe20..2948da3333a3 100644 --- a/init.el +++ b/init.el @@ -1,8 +1,157 @@ ;;; private/grfn/init.el -*- lexical-binding: t; -*- -;; An extra measure to prevent the flash of unstyled mode-line while Emacs is -;; booting up (when Doom is byte-compiled). -(setq-default mode-line-format nil) + +(doom! :feature + ;debugger ; FIXME stepping through code, to help you add bugs + eval ; run code, run (also, repls) + (evil +everywhere); come to the dark side, we have cookies + file-templates ; auto-snippets for empty files + (lookup ; helps you navigate your code and documentation + +devdocs ; ...on devdocs.io online + +docsets) ; ...or in Dash docsets locally + snippets ; my elves. They type so I don't have to + spellcheck ; tasing you for misspelling mispelling + (syntax-checker ; tasing you for every semicolon you forget + +childframe) ; use childframes for error popups (Emacs 26+ only) + workspaces ; tab emulation, persistence & separate workspaces + + :completion + (company ; the ultimate code completion backend + +auto) ; as-you-type code completion + ;(helm ; the *other* search engine for love and life + ; +fuzzy) ; enable fuzzy search backend for helm + ;ido ; the other *other* search engine... + (ivy ; a search engine for love and life + +fuzzy) ; enable fuzzy search backend for ivy + + :ui + doom ; what makes DOOM look the way it does + doom-dashboard ; a nifty splash screen for Emacs + doom-modeline ; a snazzy Atom-inspired mode-line + doom-quit ; DOOM quit-message prompts when you quit Emacs + evil-goggles ; display visual hints when editing in evil + ;fci ; a `fill-column' indicator + hl-todo ; highlight TODO/FIXME/NOTE tags + ;modeline ; snazzy, Atom-inspired modeline, plus API + nav-flash ; blink the current line after jumping + ;neotree ; a project drawer, like NERDTree for vim + ;treemacs ; a project drawer, like neotree but cooler + (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 + ;tabbar ; FIXME an (incomplete) tab bar for Emacs + 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 + + :editor + ;(format +onsave) ; automated prettiness + ;multiple-cursors ; editing in many places at once + ;parinfer ; turn lisp into python, sort of + rotate-text ; cycle region at point between text candidates + + :emacs + dired ; making dired pretty [functional] + ediff ; comparing files in Emacs + electric ; smarter, keyword-based electric-indent + ;eshell ; a consistent, cross-platform shell (WIP) + hideshow ; basic code-folding support + imenu ; an imenu sidebar and searchable code index + ;term ; terminals in Emacs + vc ; version-control and Emacs, sitting in a tree + + :tools + editorconfig ; let someone else argue about tabs vs spaces + ;ein ; tame Jupyter notebooks with emacs + gist ; interacting with github gists + ;macos ; MacOS-specific commands + make ; run make tasks from Emacs + magit ; + password-store ; password manager for nerds + pdf ; pdf enhancements + ;prodigy ; FIXME managing external services & code builders + ;rgb ; creating color strings + ;tmux ; an API for interacting with tmux + ;upload ; map local to remote projects via ssh/ftp + ;wakatime + + :lang + ;assembly ; assembly for fun or debugging + ;(cc +irony +rtags); C/C++/Obj-C madness + clojure ; java with a lisp + ;common-lisp ; if you've seen one lisp, you've seen them all + ;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 + ;go ; the hipster dialect + ;(haskell +intero) ; a language that's lazier than I am + haskell ; a language that's lazier than I am + ;hy ; readability of scheme w/ speed of python + ;(java +meghanada) ; the poster child for carpal tunnel syndrome + javascript ; all(hope(abandon(ye(who(enter(here)))))) + ;julia ; a better, faster MATLAB + latex ; writing papers in Emacs has never been so fun + ;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 + +attach ; custom attachment system + +babel ; running code in org + +capture ; org-capture in and outside of Emacs + +export ; Exporting org to whatever you want + +present) ; 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 do {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"} + ;rust ; Fe2O3.unwrap().unwrap().unwrap().unwrap() + ;scala ; java, but good + (sh +fish) ; she sells (ba|z)sh shells on the C xor + ;solidity ; do you need a blockchain? No. + ;swift ; who asked for emoji variables? + web ; the tubes + + ;; Applications are complex and opinionated modules that transform Emacs + ;; toward a specific purpose. They may have additional dependencies and + ;; should be loaded late. + :app + ;(email +gmail) ; emacs as an email client + irc ; how neckbeards socialize + ;(rss +org) ; emacs as an RSS reader + ;twitter ; twitter client https://twitter.com/vnought + ;(write ; emacs as a word processor (latex + org + markdown) + ; +wordnut ; wordnet (wn) search + ; +langtool) ; a proofreader (grammar/style check) for Emacs + + :collab + ;floobits ; peer programming for a price + ;impatient-mode ; show off code over HTTP + + :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 set reasonable defaults for Emacs. It also provides + ;; a Spacemacs-inspired keybinding scheme, a custom yasnippet library, + ;; and additional ex commands for evil-mode. Use it as a reference for + ;; your own modules. + (default +bindings +snippets +evil-commands)) ;; I've swapped these keys on my keyboard @@ -12,9 +161,6 @@ (setq user-mail-address "root@gws.fyi" user-full-name "Griffin Smith") -(add-hook! doom-big-font-mode - (setq +doom-modeline-height (if doom-big-font-mode 37 29))) - ; (def-package-hook! doom-themes :disable) (after! rust @@ -192,56 +338,6 @@ ;; 'haskell-mode ;; `((,(rx "-- |") . 'haskell-keyword-face))) -;;; * Column Marker -(defun sanityinc/fci-enabled-p () (symbol-value 'fci-mode)) - -(defvar sanityinc/fci-mode-suppressed nil) -(make-variable-buffer-local 'sanityinc/fci-mode-suppressed) - -(defadvice popup-create (before suppress-fci-mode activate) - "Suspend fci-mode while popups are visible" - (let ((fci-enabled (sanityinc/fci-enabled-p))) - (when fci-enabled - (setq sanityinc/fci-mode-suppressed fci-enabled) - (turn-off-fci-mode)))) - -(defadvice popup-delete (after restore-fci-mode activate) - "Restore fci-mode when all popups have closed" - (when (and sanityinc/fci-mode-suppressed - (null popup-instances)) - (setq sanityinc/fci-mode-suppressed nil) - (turn-on-fci-mode))) - - -;; https://github.com/alpaker/Fill-Column-Indicator/issues/67#issuecomment-195611974 -(after! fill-column-indicator - (add-hook 'prog-mode-hook #'fci-mode) - (defvar eos/fci-disabled nil) - (make-variable-buffer-local 'eos/fci-disabled) - - ;; Add a hook that disables fci if enabled when the window changes and it - ;; isn't wide enough to display it. - (defun eos/maybe-disable-fci () - (interactive) - ;; Disable FCI if necessary - (when (and fci-mode - (< (window-width) (or fci-rule-column fill-column))) - (fci-mode -1) - (setq-local eos/fci-disabled t)) - ;; Enable FCI if necessary - (when (and eos/fci-disabled - (eq fci-mode nil) - (> (window-width) (or fci-rule-column fill-column))) - (fci-mode 1) - (setq-local eos/fci-disabled nil))) - - (defun eos/add-fci-disabling-hook () - (interactive) - (add-hook 'window-configuration-change-hook - #'eos/maybe-disable-fci)) - - (add-hook 'prog-mode-hook #'eos/add-fci-disabling-hook)) - -; (require 'haskell-prettify) - -;; (add-hook 'haskell-mode-hook #'haskell-prettify-enable) + +(load-file (let ((coding-system-for-read 'utf-8)) + (shell-command-to-string "agda-mode locate"))) |