Update to latest doom, agda stuff, misc

This commit is contained in:
Griffin Smith 2018-08-31 13:31:14 -04:00
parent f95d025d1f
commit 8ba14144a3
9 changed files with 429 additions and 155 deletions

212
init.el
View file

@ -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")))