Created
November 12, 2019 17:09
-
-
Save webframp/cf8b51c6646e564023145247d5f53371 to your computer and use it in GitHub Desktop.
doom emacs config dir .doom.d
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;;; ~/.doom.d/config.el -*- lexical-binding: t; -*- | |
;; To modify or add binding for existing modules use add-hook! or after! macros | |
;; https://github.com/hlissner/doom-emacs/wiki/Customization#reconfigure-packages | |
;; HOTFIX for Emacs 26.1 and gnutls 3.6 - no longer needed? | |
;; https://www.reddit.com/r/emacs/comments/cdf48c/failed_to_download_gnu_archive/ | |
;; (setq gnutls-algorithm-priority "NORMAL:-VERS-TLS1.3") | |
;;; UI | |
(when IS-LINUX | |
(font-put doom-font :weight 'semi-light)) | |
(when IS-MAC | |
(setq ns-use-thin-smoothing t)) | |
(setq doom-modeline-major-mode-icon t) | |
(setq doom-theme 'doom-outrun-electric) | |
;; (setq doom-font (font-spec :family "SauceCodePro Nerd Font" :size 18)) | |
(setq doom-font (font-spec :family "FuraCode Nerd Font Mono" :size 18) | |
doom-variable-pitch-font (font-spec :family "Noto Sans" :size 18)) | |
;;; Windows/Frames | |
;;; | |
(add-to-list 'default-frame-alist '(inhibit-double-buffering . t)) | |
(when IS-MAC | |
(add-hook 'window-setup-hook #'toggle-frame-maximized)) | |
;;; Keybinds | |
;; TODO Combine into single map! use | |
(map! :after forge | |
:map forge-post-mode-map | |
:n "ZZ" #'forge-post-submit | |
:n "ZQ" #'forge-post-cancel) | |
(map! :after forge | |
:map forge-topic-mode-map | |
"c" #'forge-create-post | |
:n "gy" #'forge-copy-url-at-point-as-kill | |
:n "go" #'forge-browse-dwim) | |
(map! :after forge | |
:map magit-status-mode-map | |
:n "gi" #'forge-jump-to-issues | |
:n "gp" #'forge-jump-to-pullreqs | |
:n "gy" #'forge-copy-url-at-point-as-kill | |
:n "go" #'magit-browse-thing) | |
;; TODO add mapping for forge-toggle-closed-visibility. | |
;; Place with dispatch: SPC g ' x ?, @ x ? (visual, normal states too) | |
;; NOTE how to customize dispatch menu? | |
(map! :leader | |
:after projectile | |
(:prefix "p" | |
:desc "Save Project Buffers" "s" #'projectile-save-project-buffers)) | |
;; Bind to SPC f F - freshen file from disk | |
;; Source: https://www.emacswiki.org/emacs/download/misc-cmds.el | |
(defun revert-buffer-no-confirm () | |
"Revert buffer without confirmation." | |
(interactive) | |
(revert-buffer :ignore-auto :noconfirm)) | |
(map! :leader | |
(:prefix "f" | |
:desc "Refresh file from disk" "F" #'revert-buffer-no-confirm)) | |
;; TODO rebind org-archive-subtree to SPC m h a ? | |
;; bindings for org-move-subtree-up, down, etc ? | |
;; http://develop.spacemacs.org/layers/+emacs/org/README.html#trees | |
;; (map! :localleader | |
;; :map org-mode-map | |
;; :after org | |
;; :desc "Archive subtree" "$" #'org-archive-subtree) | |
;;; Modules/Packages | |
;; | |
;; Emoji Cheatsheet | |
;; https://github.com/syl20bnr/emacs-emoji-cheat-sheet-plus/ | |
;; (use-package! emoji-cheat-sheet-plus | |
;; :after (magit) | |
;; :config | |
;; (add-hook! 'magit-status-mode-hook 'emoji-cheat-sheet-plus-display-mode) | |
;; (add-hook! 'magit-log-mode-hook 'emoji-cheat-sheet-plus-display-mode)) | |
;; (map! :leader | |
;; :after emoji-cheat-sheet-plus | |
;; (:prefix "i" | |
;; :desc "Insert emoji" "e" #'emoji-cheat-sheet-plus-insert)) | |
;; Kubernetes.el | |
;; https://github.com/chrisbarrett/kubernetes-el | |
;; TODO Fix kubeconfig handling with iam-authenticator | |
;; :init config? is :defer-incrementally useful here? | |
(use-package! kubernetes | |
:config | |
(setq kubernetes-poll-frequency 3600 | |
kubernetes-redraw-frequency 3600)) | |
(use-package! kubernetes-evil | |
:when (featurep! :editor evil +everywhere) | |
:after kubernetes) | |
;; TODO any more keybindings ? | |
(map! :leader | |
:after kubernetes | |
(:prefix "o" | |
:desc "Kubernetes status" "k" #'kubernetes-overview)) | |
;; Org mode | |
;; (setq org-ellipsis " ▼ " | |
;; org-mobile-directory "~/Dropbox/Apps/MobileOrg" | |
;; org-agenda-files '("~/org/todo.org" | |
;; "~/org/devou.org" | |
;; "~/org/devops.org" | |
;; ;; "~/org/sensuwork.org")) | |
(after! org | |
;; FIXME https://emacs.stackexchange.com/questions/38800/match-data-clobbered-by-buffer-modification-hooks | |
(add-hook! 'org-mode-hook 'emoji-cheat-sheet-plus-display-mode) | |
(add-to-list 'org-modules 'org-habit t)) | |
;; Cloudformation mode | |
;; https://github.com/awkspace/doom-emacs-config/blob/dfd89cdff6204899fc49c5a2df88e71f427df0b5/config.el#L96 | |
(define-derived-mode cfn-mode yaml-mode | |
"Cloudformation" | |
"Cloudformation template mode.") | |
(add-to-list 'auto-mode-alist '(".template\\'" . cfn-mode)) | |
(after! flycheck | |
(flycheck-define-checker cfn-lint | |
"A Cloudformation linter using cfn-python-lint. | |
See URL 'https://github.com/awslabs/cfn-python-lint'." | |
:command ("cfn-lint" "-f" "parseable" source) | |
:error-patterns ((warning line-start (file-name) ":" line ":" column | |
":" (one-or-more digit) ":" (one-or-more digit) ":" | |
(id "W" (one-or-more digit)) ":" (message) line-end) | |
(error line-start (file-name) ":" line ":" column | |
":" (one-or-more digit) ":" (one-or-more digit) ":" | |
(id "E" (one-or-more digit)) ":" (message) line-end)) | |
:modes (cfn-mode)) | |
(add-to-list 'flycheck-checkers 'cfn-lint)) | |
;; Spotify controls | |
(use-package! counsel-spotify | |
:after (counsel)) | |
(map! :leader | |
(:prefix ("o" . "open") | |
(:prefix ("s" . "Spotify control") | |
:desc "play/pause" "SPC" #'counsel-spotify-toggle-play-pause | |
:desc "next" "l" #'counsel-spotify-next | |
:desc "previous" "h" #'counsel-spotify-previous))) | |
;; Typopunct - insert proper typographical punctuation when writing | |
;; https://github.com/emacsmirror/typopunct | |
(use-package! typopunct) | |
(map! :desc "Typopunct" :n "SPC t t" #'typopunct-mode) | |
(defun sme-markdown-mode-config () | |
"Enforce customized settings for markdown mode and enable typopunct" | |
(set-fill-column 80) | |
(typopunct-change-language 'english t) | |
(typopunct-mode 1) | |
;; (setq-local comment-use-syntax nil) ;; usefulness is questionable | |
) | |
(add-hook! 'markdown-mode-hook 'sme-markdown-mode-config) | |
(add-hook! 'gfm-mode-hook 'sme-markdown-mode-config) | |
;;; Edit Server | |
;; Edit with emacs, supports editing textareas from FF in Emacs | |
;; https://github.com/stsquad/emacs_chrome | |
;; https://addons.mozilla.org/en-US/firefox/addon/edit-with-emacs1/ | |
;; TODO add hook after edit-server-edit minor mode to turn on autofilll/spellcheck/evil bindings | |
;; NOTE customize based on buffer type? html email vs markdown vs text | |
(use-package! edit-server | |
:config | |
(edit-server-start)) | |
;; (map! :map edit-server-edit-mode-map | |
;; "ZZ" #'edit-server-done | |
;; "ZQ" #'edit-server-abort) | |
(pushnew! auto-mode-alist | |
'("\\.tmpl\\'" . web-mode)) | |
(setq web-mode-engines-alist | |
'(("go" . "\\.tmpl\\'"))) | |
;; Non git tracked local settings | |
(load! "+local") | |
;; Finally, keep my configs clean | |
(setq-default custom-file (concat doom-private-dir "+custom.el")) | |
(load! "+custom") | |
;; Local Variables: | |
;; flycheck-disabled-checkers: (emacs-lisp-checkdoc) | |
;; byte-compile-warnings: (not free-vars) | |
;; End: |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;;; init.el -*- lexical-binding: t; -*- | |
;; Copy this file to ~/.doom.d/init.el or ~/.config/doom/init.el ('doom | |
;; quickstart' 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 tags | |
;;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 | |
;;tabbar ; FIXME an (incomplete) tab bar for Emacs | |
treemacs ; a project drawer, like neotree but coole | |
;;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 | |
:emacs | |
(dired ; making dired pretty [functional] | |
;;+ranger ; bringing the goodness of ranger to dired | |
+icons) ; colorful icons for dired-mode | |
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 +lsp) ; 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 | |
;;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 | |
;; +pyenv) ; 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 | |
+html | |
+css) ; the tubes | |
;;vala ; GObjective-C | |
;;(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 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 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)) | |
;; (with-eval-after-load 'gnutls | |
;; (add-to-list 'gnutls-trustfiles "/usr/local/etc/libressl/cert.pem")) | |
;; Local Variables: | |
;; flycheck-disabled-checkers: (emacs-lisp-checkdoc) | |
;; End: |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;; -*- no-byte-compile: t; -*- | |
;;; ~/.doom.d/packages.el | |
(package! kubernetes) | |
(when (featurep! :editor evil +everywhere) | |
(package! kubernetes-evil)) | |
(package! emoji-cheat-sheet-plus) | |
(package! counsel-spotify) | |
(package! typopunct :recipe (:host github :repo "emacsmirror/typopunct" :files (:defaults "*"))) | |
(package! edit-server) | |
;; Local Variables: | |
;; flycheck-disabled-checkers: (emacs-lisp-checkdoc) | |
;; End: |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment