It's been a change a long time coming. Ivy's snappiness and simple API was Ivy's selling point (as far as Doom is concerned). It helps that much of helm's vast featureset has been ported over and its API is so much simpler to grok, but its greatest weakness lies in its choice of display mechanism: the minibuffer. Ivy's performance suffers dramatically with large datasets because mutating results in the minibuffer blocks the minibuffer, which also happens to be where we type in our queries. This can make input feel dreadfully sluggish in the best cases, locking up Emacs entirely in the worst. Helm updates a buffer asynchronously, so it suffers none of this (though the overhead of maintaining this buffer is certainly overkill for tiny datasets). And Ivy's simple API, while easier to understand, is significantly less powerful. That it takes so much effort to grok Helm is a huge turn off (and of course, no fault of the dev). Still, there simply is no excuse for power users like myself to not do so anyway. The more I learn about it, the more I wonder why I stuck to ivy for so long (but also reminds me exactly why I did)!
153 lines
7.8 KiB
EmacsLisp
153 lines
7.8 KiB
EmacsLisp
;;; init.el -*- lexical-binding: t; -*-
|
|
;; Copy me to ~/.doom.d/init.el or ~/.config/doom/init.el, then edit me!
|
|
|
|
(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
|
|
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
|
|
;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))
|
|
|