[emacs] MOve back to a config structure

This commit is contained in:
2020-12-26 10:02:43 -05:00
parent 53f94defe1
commit 2d31b2f2f6
12 changed files with 32 additions and 414 deletions

View File

@ -18,9 +18,9 @@ I change my default theme almost as often as the weather. I tend to revert back
to Doom One most of the time, but I like the Kaolin themes, as well as Nimbus to Doom One most of the time, but I like the Kaolin themes, as well as Nimbus
for it's retro charm. Nimbus just doesn't look great when I'm tired though. for it's retro charm. Nimbus just doesn't look great when I'm tired though.
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(setq doom-theme 'doom-challenger-deep (setq doom-theme 'srcery
doom-font (font-spec :family "JetBrains Mono NL" :size 12 :weight 'semi-light) doom-font (font-spec :family "JetBrains Mono" :size 14 :weight 'semi-light)
doom-big-font (font-spec :family "JetBrains Mono NL" :size 16) doom-big-font (font-spec :family "JetBrains Mono" :size 18)
doom-variable-pitch-font (font-spec :family "Overpass" :size 16)) doom-variable-pitch-font (font-spec :family "Overpass" :size 16))
#+END_SRC #+END_SRC
** Borders ** Borders
@ -173,6 +173,14 @@ How I went about [[file:/usr/home/powellc/var/org/20200916134500-vale_prose_lint
) )
(add-to-list 'flycheck-checkers 'vale 'append) (add-to-list 'flycheck-checkers 'vale 'append)
#+END_SRC #+END_SRC
#+begin_src emacs-lisp
(setq +format-on-save-enabled-modes
'(not emacs-lisp-mode ; elisp's mechanisms are good enough
sql-mode ; sqlformat is currently broken
tex-mode ; latexindent is broken
org-mode
latex-mode))
#+end_src
* Org-mode * Org-mode
** Basic configuration ** Basic configuration
A handful of mods here clean up org mode. Line numbers dont mean much when A handful of mods here clean up org mode. Line numbers dont mean much when
@ -495,11 +503,6 @@ Here we are trying to auto-translate Word and PDF files to be viewed in Emacs.
#+END_SRC #+END_SRC
* Magit * Magit
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
;;(add-hook 'magit-mode-hook #'doom-disable-line-numbers-h)
(setq +magit-hub-features t ;; I want the PR/issue stuff too!
+magit-hub-enable-by-default t) ;; And I want it on by default!
(after! magit (after! magit
(magit-wip-after-save-mode t) (magit-wip-after-save-mode t)
(magit-wip-after-apply-mode t) (magit-wip-after-apply-mode t)
@ -513,9 +516,12 @@ Here we are trying to auto-translate Word and PDF files to be viewed in Emacs.
magithub-clone-default-directory "~/src" ;; I want my stuff to clone to ~/projects magithub-clone-default-directory "~/src" ;; I want my stuff to clone to ~/projects
magithub-preferred-remote-method 'ssh_url)) ;; HTTPS cloning is awful, i authenticate with ssh keys. magithub-preferred-remote-method 'ssh_url)) ;; HTTPS cloning is awful, i authenticate with ssh keys.
; Show gravatars in magit
(setq magit-revision-show-gravatars '("^Author: " . "^Commit: "))
(setq lsp-enable-links nil) ; (setq lsp-enable-links nil)
#+END_SRC #+END_SRC
* Openwith * Openwith
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(when (require 'openwith nil 'noerror) (when (require 'openwith nil 'noerror)

View File

@ -0,0 +1,12 @@
(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.
'(package-selected-packages '(modus-vivendi-theme)))
(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.
)

View File

@ -24,6 +24,7 @@
;;ido ; the other *other* search engine... ;;ido ; the other *other* search engine...
(ivy ; a search engine for love and life (ivy ; a search engine for love and life
+fuzzy +fuzzy
+presient
+icons) +icons)
:ui :ui
@ -89,15 +90,15 @@
;;debugger ; FIXME stepping through code, to help you add bugs ;;debugger ; FIXME stepping through code, to help you add bugs
direnv direnv
;;docker ;;docker
editorconfig ; let someone else argue about tabs vs spaces editorconfig ; let someone else argue about tabs vs spaces
;;ein ; tame Jupyter notebooks with emacs ;;ein ; tame Jupyter notebooks with emacs
(eval +overlay) ; run code, run (also, repls) (eval +overlay) ; run code, run (also, repls)
gist ; interacting with github gists gist ; interacting with github gists
(lookup ; navigate your code and its documentation (lookup ; navigate your code and its documentation
+dictionary +dictionary
+docsets) +docsets)
lsp lsp
magit ; a git porcelain for Emacs (magit +forge) ; a git porcelain for Emacs
make ; run make tasks from Emacs make ; run make tasks from Emacs
(pass +auth) ; password manager for nerds (pass +auth) ; password manager for nerds
pdf ; pdf enhancements pdf ; pdf enhancements

View File

@ -1,401 +0,0 @@
(setq user-full-name "Colin Powell"
user-mail-address "colin@unbl.ink")
(setq ivy-read-action-function #'ivy-hydra-read-action)
(setq doom-theme 'doom-challenger-deep
doom-font (font-spec :family "JetBrains Mono NL" :size 12 :weight 'semi-light)
doom-big-font (font-spec :family "JetBrains Mono NL" :size 16)
doom-variable-pitch-font (font-spec :family "Overpass" :size 16))
;; Applies to current frame
(set-frame-parameter nil 'internal-border-width 10) ; applies to the current frame
;; If we create new frames (via emacsclient) this will do the trick
(add-to-list 'default-frame-alist '(internal-border-width . 10))
(nyan-mode) ;; progress in the form of a rainbow cat.
(add-hook 'after-init-hook #'global-emojify-mode) ;; emojis?!
(add-hook 'prog-mode-hook #'goto-address-mode) ;; linify links!
(map! ;; Easier window movement
:n "C-h" 'evil-window-left
:n "C-j" 'evil-window-down
:n "C-k" 'evil-window-up
:n "C-l" 'evil-window-right
(:map evil-treemacs-state-map
"C-h" 'evil-window-left
"C-l" 'evil-window-right)
:leader
(:prefix "f"
:desc "Find file in dotfiles" "t" #'+hlissner/find-in-dotfiles
:desc "Browse dotfiles" "T" #'+hlissner/browse-dotfiles)
(:prefix "o"
:desc "(H)ckrnews" "H" #'hackernews
:desc "(R)SS" "R" #'=rss
:desc "(M)ail" "M" #'=notmuch
:desc "(L)obste.rs" "L" #'ivy-lobsters)
(:prefix "b"
:desc "Black format buffer" "f" #'blacken-buffer
:desc "isort buffer" "I" #'py-isort-buffer
:desc "Links in buffer" "l" #'ace-link-org)
(:prefix "s"
:desc "Search the web" "w" #'web-search
:desc "Goto URL in eww" "u" #'eww-browse-url
:desc "Search in eww" "3" #'eww-search-words
:desc "Search all the things" "g" #'deadgrep))
(setq wttrin-default-cities '("Castine, ME" "San Francisco" "Thessaloniki"))
(setq wttrin-default-accept-language '("Accept-Language" . "en-US"))
(map!
(:leader
(:prefix "o"
:desc "(W)eather" "W" #'wttrin)))
(setq libmpdel-hostname "mpd.unbl.ink")
(defun mpdel-playlist-play ()
"Start playing the song at point."
(interactive)
(if (derived-mode-p 'mpdel-playlist-current-playlist-mode)
(libmpdel-play-song (navigel-entity-at-point))
(mpdel-core-insert-current-playlist)))
(map! :leader
(:prefix "-"
:desc "MPD Open playlist" "-" #'mpdel-playlist-open
:desc "MPD Remove at point" "d" #'mpdel-playlist-delete
:desc "MPD Start at point" "s" #'mpdel-playlist-play
:desc "MPD Next track" "n" #'libmpdel-playback-next
:desc "MPD Previous track" "p" #'libmpdel-playback-previous))
(setq elfeed-protocol-ttrss-maxsize 100) ;; bigger than 200 is invalid
(setq elfeed-feeds '("ttrss+https://powellc:hT7nPKAHa^fYwXZ*@reader.unbl.ink"))
(setq elfeed-log-level 'debug)
(elfeed-protocol-enable)
;; Schedule feed update for every 15 minutes
(run-at-time "30 min" nil 'elfeed-update)
(setq elfeed-search-filter "@2-days-ago +unread")
(defun elfeed-search-format-date (date)
(format-time-string "%Y-%m-%d %H:%M" (seconds-to-time date)))
; Serif font in Elfeed
(add-hook! 'elfeed-mode-hook 'variable-pitch-mode)
(add-hook! 'elfeed-show-mode-hook (text-scale-set 1.2))
(defun unfill-paragraph ()
"Takes a multi-line paragraph and makes it into a single line of text."
(interactive)
(let ((fill-column (point-max)))
(fill-paragraph nil)))
(define-key global-map "\M-z" 'unfill-paragraph)
;; PlantUML is awesome for quick diagrams
(add-to-list 'auto-mode-alist '("\\.plantuml\\'" . plantuml-mode))
;; Timezone location strings at http://worldtime.io
(setq display-time-world-list '(("America/Los_Angeles" "San Francisco")
("America/Tegucigalpa" "Tegucigalpa")
("America/New_York" "New York")
("Europe/London" "London")
("Europe/Warsaw" "Warsaw")
("Europe/Kiev" "Lviv")))
(flycheck-define-checker vale
"A checker for prose"
:command ("vale" "--output" "line"
source)
:standard-input nil
:error-patterns
((error line-start (file-name) ":" line ":" column ":" (id (one-or-more (not (any ":")))) ":" (message) line-end))
:modes (markdown-mode org-mode text-mode)
)
(add-to-list 'flycheck-checkers 'vale 'append)
(add-hook 'org-mode-hook #'doom-disable-line-numbers-h)
(after! org
(setq org-directory (expand-file-name "~/var/org/")
org-agenda-files (file-expand-wildcards "~/var/org/2020-*")
org-pretty-entities t
org-agenda-dim-blocked-tasks nil
org-log-done 'time
org-hide-emphasis-markers t
org-fontify-whole-heading-line t
org-fontify-done-headline t
org-fontify-quote-and-verse-blocks t
org-ellipsis ""
org-image-actual-width '(600)
org-protocol-default-template-key "l"
org-capture-templates
'(("i" "Send to inbox" entry (file "~/var/org/inbox.org")
"* TODO %?\n")
("l" "Link" entry (file "~/var/org/inbox.org")
"* TODO %a\n %?\n %i"))
org-todo-keywords
'((sequence "TODO(t)" "NEXT(n)" "MAYBE(m)" "|" "DONE(d)" "WONTDO(w)"))
org-modules '(ol-eshell
ol-notmuch
ob-eval
ob-exp
ob-http
org-id)))
;; Dont display git gutter in org mode
;; With tree folding, it's pretty much useless
(after! git-gutter
(setq git-gutter:disabled-modes '(org-mode image-mode)))
;; Refiling
(setq org-refile-targets '(("~/var/org/inbox.org" :maxlevel . 9)))
(setq org-outline-path-complete-in-steps nil) ; Refile in a single go
(setq org-refile-use-outline-path t) ; Show full paths for refiling
(setq +inbox-file "~/var/org/inbox.org")
(defun +open-inbox-file ()
(interactive)
"Opens the inbox file"
(find-file +inbox-file))
(map!
:leader
:desc "Open inbox" "I" #'+open-inbox-file
:desc "Save all org buffers" "A" #'org-save-all-org-buffers)
(setq org-agenda-span 3
org-agenda-start-day "1d")
(defun +show-agenda ()
(interactive)
(delete-other-windows)
(with-popup-rules! nil
(org-agenda-list)
(calendar))
(other-window 1)
(split-window-vertically)
(other-window 1)
(find-file +todo-file))
(setq org-roam-directory "~/var/org/")
(setq org-roam-dailies-directory "")
(setq org-roam-dailies-capture-templates
'(("d" "default" entry
#'org-roam-capture--get-point
"* %?"
:file-name "%<%Y-%m-%d>"
:head "#+title: %<%Y-%m-%d>\n\n")))
(setq org-fc-directories "~/var/org/")
(require 'org-fc-hydra)
(require 'justify-kp)
;(setq nov-text-width t)
(setq nov-text-width 100)
(defun my-nov-window-configuration-change-hook ()
(my-nov-post-html-render-hook)
(remove-hook 'window-configuration-change-hook
'my-nov-window-configuration-change-hook
t))
(defun my-nov-post-html-render-hook ()
(if (get-buffer-window)
(let ((max-width (pj-line-width))
buffer-read-only)
(save-excursion
(goto-char (point-min))
(while (not (eobp))
(when (not (looking-at "^[[:space:]]*$"))
(goto-char (line-end-position))
(when (> (shr-pixel-column) max-width)
(goto-char (line-beginning-position))
(pj-justify)))
(forward-line 1))))
(add-hook 'window-configuration-change-hook
'my-nov-window-configuration-change-hook
nil t)))
(add-hook 'nov-post-html-render-hook 'my-nov-post-html-render-hook)
(defun my-nov-font-setup ()
(face-remap-add-relative 'variable-pitch :family "Noto Serif Regular"
:height 1.0
:size 16))
(add-hook 'nov-mode-hook 'my-nov-font-setup)
(add-to-list 'auto-mode-alist '("\\.epub\\'" . nov-mode))
;(add-hook 'nov-mode-hook 'variable-pitch-mode)
(setq mm-text-html-renderer 'w3m)
(setq w3m-fill-column 88)
(setq message-kill-buffer-on-exit t)
(setq message-auto-save-directory "~/Mail/colin@unbl.ink/Drafts/")
(setq message-directory "~/Mail/colin@unbl.ink/")
;; sendmail-program "/usr/local/bin/msmtpq" <--- this doesn't work as advertised right now
(setq send-mail-function 'sendmail-send-it
sendmail-program "/usr/local/bin/msmtp"
mail-specify-envelope-from t
message-sendmail-f-is-evil t
message-sendmail-envelope-from 'header
message-sendmail-extra-arguments '("--read-envelope-from")
mail-envelope-from 'header)
(setq notmuch-saved-searches '((:name "inbox" :query "tag:inbox" :key "i")
(:name "unread" :query "tag:inbox and tag:unread" :key "u")
(:name "jira" :query "tag:jira and date:yesterday..today" :key "j")
(:name "github" :query "tag:github and date:yesterday..today" :key "g")))
(after! notmuch
(set-popup-rule! "^\\*notmuch*" :ignore t)
)
(map! :leader
(:prefix "e"
:desc "(s)end queued mail" "s" #'smtpmail-send-queued-mail
:desc "Open (i)nbox" "i" #'=notmuch
:desc "Open (n)otmuch" "n" #'notmuch
:desc "(C)ompose mail" "c" #'notmuch-mua-new-mail))
(after! eshell
(set-eshell-alias!
"djtest" "DJANGO_SETTINGS_MODULE=ff.settings.ci python manage.py test $*"
"djpytest" "DJANGO_SETTINGS_MODULE=ff.settings.ci pytest --reuse-db --black --flake8 --isort --durations=3 $*"
"djsh" "DJANGO_SETTINGS_MODULE=ff.settings.ci python manage.py shell_plus"
"dj" "DJANGO_SETTINGS_MODULE=ff.settings.ci python manage.py $*"
"f" "(other-window 1) && find-file $1"
"l" "ls -lh"
"d" "dired $1"
"gl" "(call-interactively 'magit-log-current)"
"gs" "magit-status"
"gc" "magit-commit"))
(after! lsp
(setq lsp-file-watch-threshold nil))
(setq mastodon-instance-url "https://mastodon.technology")
(map! :leader
(:prefix "="
:desc "Open mastodon" "=" #'mastodon
:desc "Update Mastodon timeline" "u" #'mastodon-tl--update
:desc "More Mastodon timeline" "m" #'mastodon-tl--more
:desc "Toot to Mastodon" "t" #'mastodon-toot))
(use-package! slack
:commands (slack-start)
:init
(setq slack-buffer-emojify t)
(setq slack-prefer-current-team t)
:config
(slack-register-team
:name "15five"
:token (auth-source-pick-first-password
:host "15five.slack.com"
:user "colin.powell@15five.com")
:subscribed-channels '(squad-admin water-cooler))
(slack-register-team
:name "RAB"
:token (auth-source-pick-first-password
:host "randomaccessbrewery.slack.com"
:user "colin@onec.me")
:subscribed-channels '(the_taps random))
(evil-define-key 'normal slack-info-mode-map
",u" 'slack-room-update-messages)
(evil-define-key 'normal slack-mode-map
",c" 'slack-buffer-kill
",ra" 'slack-message-add-reaction
",rr" 'slack-message-remove-reaction
",rs" 'slack-message-show-reaction-users
",pl" 'slack-room-pins-list
",pa" 'slack-message-pins-add
",pr" 'slack-message-pins-remove
",mm" 'slack-message-write-another-buffer
",me" 'slack-message-edit
",md" 'slack-message-delete
",u" 'slack-room-update-messages
",2" 'slack-message-embed-mention
",3" 'slack-message-embed-channel
"\C-n" 'slack-buffer-goto-next-message
"\C-p" 'slack-buffer-goto-prev-message)
(evil-define-key 'normal slack-edit-message-mode-map
",k" 'slack-message-cancel-edit
",s" 'slack-message-send-from-buffer
",2" 'slack-message-embed-mention
",3" 'slack-message-embed-channel))
(use-package! alert
:commands (alert)
:init
(setq alert-default-style 'libnotify))
(map! :leader
(:prefix "o"
(:prefix ("s" . "+slack")
:desc "Slack channels" "S" #'slack-start
:desc "Slack channels" "s" #'slack-channel-select
:desc "Slack IMs" "i" #'slack-im-select
:desc "Slack groups" "g" #'slack-group-select
:desc "Slack threads" "t" #'slack-all-threads)))
(load! "beancount")
(require 'beancount)
(add-to-list 'auto-mode-alist '("\\.beancount\\'" . beancount-mode))
(define-derived-mode
pandoc-view-mode
markdown-mode
"pandoc-view-mode"
"View pandoc processing of docx file using markdown mode."
(erase-buffer)
(let* ((pandoc (executable-find "pandoc")))
(insert (shell-command-to-string
(concat pandoc " --wrap=none " (shell-quote-argument (buffer-file-name)) " -t markdown"))))
(not-modified)
(read-only-mode t))
(add-to-list 'auto-mode-alist '("\\.docx\\'" . pandoc-view-mode))
;;(add-hook 'magit-mode-hook #'doom-disable-line-numbers-h)
(setq +magit-hub-features t ;; I want the PR/issue stuff too!
+magit-hub-enable-by-default t) ;; And I want it on by default!
(after! magit
(magit-wip-after-save-mode t)
(magit-wip-after-apply-mode t)
(setq magit-save-repository-buffers 'dontask
magit-circleci-token "097bf0dd808ad9103d489844e37cecffdf967837"
magit-repository-directories '(("~/src/" . 3)
("~/dotfiles/" . 0))
magit-popup-display-buffer-action nil ;; Not sure why this is here, wonder what it does
magit-display-file-buffer-function #'switch-to-buffer-other-window
magithub-clone-default-directory "~/src" ;; I want my stuff to clone to ~/projects
magithub-preferred-remote-method 'ssh_url)) ;; HTTPS cloning is awful, i authenticate with ssh keys.
(setq lsp-enable-links nil)
(when (require 'openwith nil 'noerror)
(setq openwith-associations
(list
(list (openwith-make-extension-regexp
'("mpg" "mpeg" "mp3" "mp4"
"avi" "wmv" "wav" "mov" "flv"
"ogm" "ogg" "mkv"))
"vlc"
'(file))
(list (openwith-make-extension-regexp
'("pdf" "ps" "ps.gz" "dvi"))
"zathura"
'(file))
))
(openwith-mode 1))