Add doom emacs configs
This commit is contained in:
parent
b3adc6445f
commit
ac7702ed4d
5 changed files with 438 additions and 0 deletions
170
slackware/home/doom/.doom.d/config.org
Normal file
170
slackware/home/doom/.doom.d/config.org
Normal file
|
|
@ -0,0 +1,170 @@
|
|||
#+TITLE: Ian's Emacs Config
|
||||
* Appearance
|
||||
** Misc
|
||||
#+begin_src emacs-lisp
|
||||
(setq fancy-splash-image
|
||||
(concat doom-private-dir "sink.png")) ;; the best emacs logo
|
||||
(load-theme 'doom-oceanic-next t)
|
||||
(setq lsp-lens-enable nil) ;; gets rid of the little '0 references' note from lsp
|
||||
#+end_src
|
||||
** Font
|
||||
#+begin_src emacs-lisp
|
||||
(setq
|
||||
doom-font (font-spec
|
||||
:family "Fira Mono for Powerline"
|
||||
:size=28
|
||||
:weight=medium)
|
||||
;; default-font-size 28
|
||||
doom-font-increment 1
|
||||
;; TODO doom-unicode-font, check out fira-code-symbol?
|
||||
)
|
||||
#+end_src
|
||||
* Window Management and Navigation
|
||||
** TODO General Concepts and Rationale
|
||||
** Tab Behavior
|
||||
#+begin_src emacs-lisp
|
||||
(setq tab-bar-show nil)
|
||||
(doom-modeline-mode -1)
|
||||
(define-key evil-normal-state-map (kbd "s-t") 'tab-next)
|
||||
(define-key evil-normal-state-map (kbd "s-z") 'toggle-maximize-buffer)
|
||||
#+end_src
|
||||
** Window Movement
|
||||
#+begin_src emacs-lisp
|
||||
(defun split-and-follow-horizontally ()
|
||||
(interactive)
|
||||
(split-window-below)
|
||||
(balance-windows)
|
||||
(other-window 1))
|
||||
|
||||
(defun split-and-follow-vertically ()
|
||||
(interactive)
|
||||
(split-window-right)
|
||||
(balance-windows)
|
||||
(other-window 1))
|
||||
#+end_src
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(global-set-key (kbd "s-c") 'delete-window)
|
||||
(global-set-key (kbd "s-h") 'windmove-left)
|
||||
(global-set-key (kbd "s-j") 'windmove-down)
|
||||
(global-set-key (kbd "s-k") 'windmove-up)
|
||||
(global-set-key (kbd "s-l") 'windmove-right)
|
||||
(define-key evil-normal-state-map (kbd "s-d") 'kill-this-buffer)
|
||||
(define-key evil-normal-state-map (kbd "s-n") 'projectile-next-project-buffer)
|
||||
(define-key evil-normal-state-map (kbd "s-p") 'projectile-previous-project-buffer)
|
||||
(define-key evil-normal-state-map (kbd "s-J") 'split-and-follow-horizontally)
|
||||
(define-key evil-normal-state-map (kbd "s-L") 'split-and-follow-vertically)
|
||||
(define-key evil-normal-state-map (kbd "s-b") 'buffer-menu)
|
||||
(define-key evil-normal-state-map (kbd "s-x") 'execute-extended-command)
|
||||
(global-set-key (kbd "s-SPC") 'tab-next)
|
||||
#+end_src
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
;; disable mac default bindings
|
||||
(when IS-MAC
|
||||
(setq mac-pass-command-to-system nil))
|
||||
#+end_src
|
||||
** TODO Toggle Maximize Buffer
|
||||
This was meant to replace the functionality of =ctrl b z= in tmux. It's not really good enough though, I'd like it to be independent of workspaces and tabs, for example, so that I can zoom one window, move to another context and zoom the others and be able to undo the zoom on the buffer I'm on specifically
|
||||
#+begin_src emacs-lisp
|
||||
(defun toggle-maximize-buffer ()
|
||||
"Maximize buffer"
|
||||
(interactive)
|
||||
(if (= 1 (length (window-list)))
|
||||
(jump-to-register '_)
|
||||
(progn
|
||||
(window-configuration-to-register '_)
|
||||
(delete-other-windows))))
|
||||
#+end_src
|
||||
* IRC
|
||||
#+begin_src emacs-lisp
|
||||
(setq circe-network-options
|
||||
'(("Libera"
|
||||
:host "dump.town"
|
||||
:port (6667 . 6697)
|
||||
:tls t
|
||||
:user "bl0rt/libera"
|
||||
:pass (password-store-get "self/irc/znc"))))
|
||||
#+end_src
|
||||
|
||||
* Org Mode
|
||||
#+begin_src emacs-lisp
|
||||
(setq deft-directory "~/notes/deft"
|
||||
deft-extensions '("org" "txt")
|
||||
deft-recursive t)
|
||||
|
||||
(setq org-roam-directory "~/notes/roam")
|
||||
|
||||
(map! :leader
|
||||
(:prefix ("e" . "export")
|
||||
:desc "Export Org to HTML"
|
||||
"e" #'org-html-export-to-html))
|
||||
|
||||
#+end_src
|
||||
|
||||
* Ejira
|
||||
#+begin_src emacs-lisp
|
||||
(use-package! ejira
|
||||
:init
|
||||
(setq jiralib2-url "https://everblue.atlassian.net"
|
||||
jiralib2-auth 'basic
|
||||
jiralib2-user-login-name "ian@fs.tech"
|
||||
jiralib2-token (password-store-get "work/api-keys/jira")
|
||||
|
||||
;; NOTE, this directory needs to be in `org-agenda-files'`
|
||||
ejira-org-directory "~/notes/jira"
|
||||
ejira-projects '("FP" "RWA")
|
||||
|
||||
ejira-priorities-alist '(("Highest" . ?A)
|
||||
("High" . ?B)
|
||||
("Medium" . ?C)
|
||||
("Low" . ?D)
|
||||
("Lowest" . ?E))
|
||||
ejira-todo-states-alist '(("To Do" . 1)
|
||||
("Development In Progress" . 2)
|
||||
("QA" . 3)))
|
||||
:config
|
||||
;; Tries to auto-set custom fields by looking into /editmeta
|
||||
;; of an issue and an epic.
|
||||
(add-hook 'jiralib2-post-login-hook #'ejira-guess-epic-sprint-fields)
|
||||
|
||||
;; They can also be set manually if autoconfigure is not used.
|
||||
;; (setq ejira-sprint-field 'customfield_10001
|
||||
;; ejira-epic-field 'customfield_10002
|
||||
;; ejira-epic-summary-field 'customfield_10004)
|
||||
|
||||
(require 'ejira-agenda)
|
||||
|
||||
;; Make the issues visisble in your agenda by adding `ejira-org-directory'
|
||||
;; into your `org-agenda-files'.
|
||||
(add-to-list 'org-agenda-files ejira-org-directory)
|
||||
|
||||
;; Add an agenda view to browse the issues that
|
||||
(org-add-agenda-custom-command
|
||||
'("j" "My JIRA issues"
|
||||
((ejira-jql "resolution = unresolved and assignee = currentUser()"
|
||||
((org-agenda-overriding-header "Assigned to me")))))))
|
||||
#+end_src
|
||||
* One-Off Behavior Tweaks
|
||||
** Projectile search path
|
||||
#+begin_src emacs-lisp
|
||||
(setq projectile-project-search-path '("~/code/"))
|
||||
#+end_src
|
||||
** Speed up flycheck for TS/JS file opening
|
||||
[[https://github.com/flycheck/flycheck/issues/1129#issuecomment-319600923][source]]
|
||||
#+begin_src emacs-lisp
|
||||
(with-eval-after-load 'flycheck
|
||||
(advice-add 'flycheck-eslint-config-exists-p :override (lambda() t)))
|
||||
#+end_src
|
||||
** Company mode manual activation
|
||||
Keep auto-complete from constantly suggesting things.
|
||||
#+begin_src emacs-lisp
|
||||
(setq company-minimum-prefix-length 100)
|
||||
(map! :i "S-o" #'company-complete)
|
||||
#+end_src
|
||||
|
||||
* Todo
|
||||
** Bind 'Kill buffer and window' to spc b w
|
||||
** Make c-spc change tabs, make sure tabs are invisible
|
||||
** Word wrap on org mode
|
||||
** Highlight matching paren
|
||||
14
slackware/home/doom/.doom.d/custom.el
Normal file
14
slackware/home/doom/.doom.d/custom.el
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
(custom-set-variables
|
||||
;; custom-set-variables was added by Custom.
|
||||
;; If you edit it by hand, you could mess it up, so be careful.
|
||||
;; Your init file should contain only one such instance.
|
||||
;; If there is more than one, they won't work right.
|
||||
'(custom-safe-themes
|
||||
'("2721b06afaf1769ef63f942bf3e977f208f517b187f2526f0e57c1bd4a000350" "991ca4dbb23cab4f45c1463c187ac80de9e6a718edc8640003892a2523cb6259" "02f57ef0a20b7f61adce51445b68b2a7e832648ce2e7efb19d217b6454c1b644" "6945dadc749ac5cbd47012cad836f92aea9ebec9f504d32fe89a956260773ca4" "e3daa8f18440301f3e54f2093fe15f4fe951986a8628e98dcd781efbec7a46f2" "00cec71d41047ebabeb310a325c365d5bc4b7fab0a681a2a108d32fb161b4006" "aec7b55f2a13307a55517fdf08438863d694550565dee23181d2ebd973ebd6b8" "443e2c3c4dd44510f0ea8247b438e834188dc1c6fb80785d83ad3628eadf9294" "ddffe74bc4bf2c332c2c3f67f1b8141ee1de8fd6b7be103ade50abb97fe70f0c" default))
|
||||
'(package-selected-packages '(ox-hugo)))
|
||||
(custom-set-faces
|
||||
;; custom-set-faces was added by Custom.
|
||||
;; If you edit it by hand, you could mess it up, so be careful.
|
||||
;; Your init file should contain only one such instance.
|
||||
;; If there is more than one, they won't work right.
|
||||
)
|
||||
198
slackware/home/doom/.doom.d/init.el
Normal file
198
slackware/home/doom/.doom.d/init.el
Normal file
|
|
@ -0,0 +1,198 @@
|
|||
;;; init.el -*- lexical-binding: t; -*-
|
||||
|
||||
;; This file controls what Doom modules are enabled and what order they load
|
||||
;; in. Remember to run 'doom sync' after modifying it!
|
||||
|
||||
;; NOTE Press 'SPC h d h' (or 'C-h d h' for non-vim users) to access Doom's
|
||||
;; documentation. There you'll find a link to Doom's Module Index where all
|
||||
;; of our modules are listed, including what flags they support.
|
||||
|
||||
;; NOTE Move your cursor over a module's name (or its flags) and press 'K' (or
|
||||
;; 'C-c c k' for non-vim users) to view its documentation. This works on
|
||||
;; flags as well (those symbols that start with a plus).
|
||||
;;
|
||||
;; Alternatively, press 'gd' (or 'C-c c d') on a module to browse its
|
||||
;; directory (for easy access to its source code).
|
||||
|
||||
(doom! :input ;;bidi ; (tfel ot) thgir etirw uoy gnipleh
|
||||
;;chinese
|
||||
;;japanese
|
||||
;;layout ; auie,ctsrnm is the superior home row
|
||||
|
||||
:completion
|
||||
company ; the ultimate code completion backend
|
||||
;;helm ; the *other* search engine for love and life
|
||||
;;ido ; the other *other* search engine...
|
||||
(ivy +fuzzy +prescient) ; a search engine for love and life
|
||||
;;vertico ; the search engine of the future
|
||||
|
||||
: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
|
||||
(emoji +unicode) ; 🙂
|
||||
hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
|
||||
;;hydra
|
||||
;;indent-guides ; highlighted indent columns
|
||||
ligatures ; ligatures and symbols to make your code pretty again
|
||||
;;minimap ; show a map of the code on the side
|
||||
modeline ; snazzy, Atom-inspired modeline, plus API
|
||||
;;nav-flash ; blink cursor line after big motions
|
||||
neotree ; a project drawer, like NERDTree for vim
|
||||
ophints ; highlight the region an operation acts on
|
||||
(popup +defaults) ; tame sudden yet inevitable temporary windows
|
||||
;;tabs ; a tab bar for Emacs
|
||||
;; treemacs ; a project drawer, like neotree but cooler
|
||||
unicode ; extended unicode support for various languages
|
||||
(vc-gutter +pretty) ; 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
|
||||
zen ; distraction-free coding or writing
|
||||
|
||||
: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
|
||||
;;god ; run Emacs commands without modifier keys
|
||||
;;lispy ; vim for lisp, for people who don't 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
|
||||
;;ibuffer ; interactive buffer management
|
||||
undo ; persistent, smarter undo for your inevitable mistakes
|
||||
vc ; version-control and Emacs, sitting in a tree
|
||||
|
||||
:term
|
||||
eshell ; the elisp shell that works everywhere
|
||||
shell ; simple shell REPL for Emacs
|
||||
term ; basic terminal emulator for Emacs
|
||||
vterm ; the best terminal emulation in Emacs
|
||||
|
||||
:checkers
|
||||
syntax ; tasing you for every semicolon you forget
|
||||
;;(spell +flyspell) ; tasing you for misspelling mispelling
|
||||
;;grammar ; tasing grammar mistake every you make
|
||||
|
||||
:tools
|
||||
;;ansible
|
||||
;;biblio ; Writes a PhD for you (citation needed)
|
||||
;;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 +overlay) ; run code, run (also, repls)
|
||||
;;gist ; interacting with github gists
|
||||
lookup ; navigate your code and its documentation
|
||||
lsp ; M-x vscode
|
||||
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
|
||||
taskrunner ; taskrunner for all your projects
|
||||
terraform ; infrastructure as code
|
||||
;; tmux ; an API for interacting with tmux
|
||||
;;tree-sitter ; syntax and parsing, sitting in a tree...
|
||||
;;upload ; map local to remote projects via ssh/ftp
|
||||
|
||||
:os
|
||||
(:if IS-MAC macos) ; improve compatibility with macOS
|
||||
;;tty ; improve the terminal Emacs experience
|
||||
|
||||
:lang
|
||||
;;agda ; types of types of types of types...
|
||||
;;beancount ; mind the GAAP
|
||||
;;(cc +lsp) ; C > C++ == 1
|
||||
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
|
||||
;;(dart +flutter) ; paint ui and not much else
|
||||
;;dhall
|
||||
;;elixir ; erlang done right
|
||||
;;elm ; care for a cup of TEA?
|
||||
emacs-lisp ; drown in parentheses
|
||||
;;erlang ; an elegant language for a more civilized age
|
||||
;;ess ; emacs speaks statistics
|
||||
;;factor
|
||||
;;faust ; dsp, but you get to keep your soul
|
||||
;;fortran ; in FORTRAN, GOD is REAL (unless declared INTEGER)
|
||||
;;fsharp ; ML stands for Microsoft's Language
|
||||
;;fstar ; (dependent) types and (monadic) effects and Z3
|
||||
;;gdscript ; the language you waited for
|
||||
;;(go +lsp) ; the hipster dialect
|
||||
;;(graphql +lsp) ; Give queries a REST
|
||||
;;(haskell +lsp) ; a language that's lazier than I am
|
||||
;;hy ; readability of scheme w/ speed of python
|
||||
;;idris ; a language you can depend on
|
||||
json ; At least it ain't XML
|
||||
;;(java +lsp) ; the poster child for carpal tunnel syndrome
|
||||
(javascript +lsp) ; 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 ; for folks with too much to prove
|
||||
;;ledger ; be audit you can be
|
||||
;;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
|
||||
+pretty
|
||||
+roam2 ; put your brain in emacs
|
||||
+dragndrop ; export org to whatever format
|
||||
+hugo
|
||||
+present) ; org for presentations
|
||||
;;php ; perl's insecure younger brother
|
||||
;;plantuml ; diagrams for confusing people more
|
||||
;;purescript ; javascript, but functional
|
||||
(python +lsp) ; beautiful is better than ugly
|
||||
;;qt ; the 'cutest' gui framework ever
|
||||
;;racket ; a DSL for DSLs
|
||||
;;raku ; the artist formerly known as perl6
|
||||
;;rest ; Emacs as a REST client
|
||||
;;rst ; ReST in peace
|
||||
;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
|
||||
;;(rust +lsp) ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
|
||||
;;scala ; java, but good
|
||||
(scheme +guile) ; a fully conniving family of lisps
|
||||
sh ; she sells {ba,z,fi}sh shells on the C xor
|
||||
;;sml
|
||||
;;solidity ; do you need a blockchain? No.
|
||||
;;swift ; who asked for emoji variables?
|
||||
;;terra ; Earth and Moon in alignment for performance.
|
||||
;;web ; the tubes
|
||||
yaml ; JSON, but readable
|
||||
;;zig ; C, but simpler
|
||||
|
||||
:email
|
||||
(mu4e +org +gmail)
|
||||
;;notmuch
|
||||
;;(wanderlust +gmail)
|
||||
|
||||
:app
|
||||
calendar
|
||||
;;emms
|
||||
;;everywhere ; *leave* Emacs!? You must be joking
|
||||
irc ; how neckbeards socialize
|
||||
(rss +org) ; emacs as an RSS reader
|
||||
;;twitter ; twitter client https://twitter.com/vnought
|
||||
|
||||
:config
|
||||
literate
|
||||
(default +bindings +smartparens))
|
||||
56
slackware/home/doom/.doom.d/packages.el
Normal file
56
slackware/home/doom/.doom.d/packages.el
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
;; -*- no-byte-compile: t; -*-
|
||||
;;; $DOOMDIR/packages.el
|
||||
|
||||
;; To install a package with Doom you must declare them here and run 'doom sync'
|
||||
;; on the command line, then restart Emacs for the changes to take effect -- or
|
||||
;; use 'M-x doom/reload'.
|
||||
|
||||
|
||||
;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror:
|
||||
;(package! some-package)
|
||||
|
||||
;; To install a package directly from a remote git repo, you must specify a
|
||||
;; `:recipe'. You'll find documentation on what `:recipe' accepts here:
|
||||
;; https://github.com/radian-software/straight.el#the-recipe-format
|
||||
;(package! another-package
|
||||
; :recipe (:host github :repo "username/repo"))
|
||||
|
||||
;; If the package you are trying to install does not contain a PACKAGENAME.el
|
||||
;; file, or is located in a subdirectory of the repo, you'll need to specify
|
||||
;; `:files' in the `:recipe':
|
||||
;(package! this-package
|
||||
; :recipe (:host github :repo "username/repo"
|
||||
; :files ("some-file.el" "src/lisp/*.el")))
|
||||
|
||||
;; If you'd like to disable a package included with Doom, you can do so here
|
||||
;; with the `:disable' property:
|
||||
;(package! builtin-package :disable t)
|
||||
|
||||
;; You can override the recipe of a built in package without having to specify
|
||||
;; all the properties for `:recipe'. These will inherit the rest of its recipe
|
||||
;; from Doom or MELPA/ELPA/Emacsmirror:
|
||||
;(package! builtin-package :recipe (:nonrecursive t))
|
||||
;(package! builtin-package-2 :recipe (:repo "myfork/package"))
|
||||
|
||||
;; Specify a `:branch' to install a package from a particular branch or tag.
|
||||
;; This is required for some packages whose default branch isn't 'master' (which
|
||||
;; our package manager can't deal with; see radian-software/straight.el#279)
|
||||
;(package! builtin-package :recipe (:branch "develop"))
|
||||
|
||||
;; Use `:pin' to specify a particular commit to install.
|
||||
;(package! builtin-package :pin "1a2b3c4d5e")
|
||||
|
||||
|
||||
;; Doom's packages are pinned to a specific commit and updated from release to
|
||||
;; release. The `unpin!' macro allows you to unpin single packages...
|
||||
;(unpin! pinned-package)
|
||||
;; ...or multiple packages
|
||||
;(unpin! pinned-package another-pinned-package)
|
||||
;; ...Or *all* packages (NOT RECOMMENDED; will likely break things)
|
||||
;(unpin! t)
|
||||
|
||||
;; (package! org-super-agenda)
|
||||
(package! ejira
|
||||
:recipe (:host github :repo "nyyManni/ejira"))
|
||||
|
||||
(package! ox-hugo)
|
||||
BIN
slackware/home/doom/.doom.d/sink.png
Normal file
BIN
slackware/home/doom/.doom.d/sink.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 16 KiB |
Loading…
Add table
Add a link
Reference in a new issue