Huge update of doom config

This commit is contained in:
Thomas Dehaeze 2020-11-03 11:41:52 +01:00
parent 72753e5509
commit 635f0d521d

View File

@ -118,6 +118,30 @@ After that, restart Emacs with =spc q r=.
(setq display-line-numbers-type t)
#+end_src
#+begin_src emacs-lisp
(use-package doom-modeline
:hook (after-init . doom-modeline-mode)
:custom
(doom-modeline-height 25)
(doom-modeline-bar-width 1)
(doom-modeline-icon t)
(doom-modeline-major-mode-icon t)
(doom-modeline-major-mode-color-icon t)
(doom-modeline-buffer-file-name-style 'truncate-upto-project)
(doom-modeline-buffer-state-icon t)
(doom-modeline-buffer-modification-icon t)
(doom-modeline-minor-modes nil)
(doom-modeline-enable-word-count nil)
(doom-modeline-buffer-encoding t)
(doom-modeline-indent-info nil)
(doom-modeline-checker-simple-format t)
(doom-modeline-vcs-max-length 12)
(doom-modeline-env-version t)
(doom-modeline-irc-stylize 'identity)
(doom-modeline-github-timer nil)
(doom-modeline-gnus-timer nil))
#+end_src
** Evil
#+begin_src emacs-lisp
(after! evil
@ -162,6 +186,19 @@ Turn off auto-fill mode that add line breaks.
(add-hook 'org-mode-hook 'turn-off-auto-fill))
#+end_src
** Useful General Functions
#+begin_src emacs-lisp
(defun tdh-matlab-work ()
"Setup Matlab Work Windows"
(interactive)
(delete-other-windows)
(evil-window-vsplit)
(evil-window-right 1)
(switch-to-buffer "*MATLAB*")
(evil-window-left 1)
)
#+end_src
** Change default alert backend
#+begin_src emacs-lisp
(setq alert-default-style 'libnotify)
@ -196,7 +233,19 @@ Turn off auto-fill mode that add line breaks.
#+begin_src emacs-lisp
(setenv "GIT_ASKPASS" "git-gui--askpass")
(setq magit-diff-refine-hunk 'all)
(after! magit
(setq magit-diff-refine-hunk 'all)
(setq magit-repository-directories `(("~/Cloud/thesis/matlab/" . 1)))
(setq magit-repolist-columns '(("Name" 25 magit-repolist-column-ident nil)
("Status" 7 magit-repolist-column-flag)
("B<U" 3 magit-repolist-column-unpulled-from-upstream
((:right-align t)
(:help-echo "Upstream changes not in branch")))
("B>U" 3 magit-repolist-column-unpushed-to-upstream
((:right-align t)
(:help-echo "Local changes not in upstream")))
("Path" 99 magit-repolist-column-path nil)))
)
#+end_src
** Dired
@ -441,7 +490,7 @@ General configuration
(setq org-agenda-window-setup 'current-window)
(setq org-agenda-prefix-format
'((agenda . " %-12:c %?-12t% s")
'((agenda . " %?-12t% s")
(todo . "") ;; Don't show the filename for reading agenda
(tags . " %-12:c")
(search . " %-12:c"))
@ -602,7 +651,7 @@ Documentation:
(after! org
(setq org-capture-templates
(quote (("t" ; key
"todo" ; name
"Todo" ; name
entry ; type
(file+headline "~/Cloud/org/work-notebook.org" "Inbox") ; target
"** TODO %?\n%U\n" ; template
@ -614,11 +663,17 @@ Documentation:
"** %?\n%(org-insert-time-stamp (org-read-date nil t \"+0d\"))\n" ; template
)
("m" ; key
"mail" ; name
"Mail" ; name
entry ; type
(file+headline "~/Cloud/org/work-notebook.org" "Mails") ; target
"** TODO [#A] %?\nSCHEDULED: %(org-insert-time-stamp (org-read-date nil t \"+0d\"))\n%a\n" ; template
)
("r" ; key
"Reference" ; name
entry ; type
(file+headline "~/Cloud/org/inbox-ereader.org" "Things to Read") ; target
"** TODO [#B] %?\n" ; template
)
("pm"
"Org-Protocol Mail"
entry
@ -706,7 +761,7 @@ Do not export headline with the =:ignore:= tag:
(setq org-html-wrap-src-lines nil)
;; Export with css class instead of inline css
(setq org-html-htmlize-output-type 'nil)
(setq org-html-htmlize-output-type 'css)
)
#+end_src
@ -931,7 +986,7 @@ Adapt this from https://github.com/alhassy/emacs.d to do something similar for s
;; Colors of latex fragments
(setq org-format-latex-options (plist-put org-format-latex-options :foreground 'default))
(setq org-format-latex-options (plist-put org-format-latex-options :background (face-background 'fringe)))
(setq org-format-latex-options (plist-put org-format-latex-options :background 'default))
)
#+end_src
@ -975,6 +1030,15 @@ Adapt this from https://github.com/alhassy/emacs.d to do something similar for s
("\\paragraph{%s}" . "\\paragraph*{%s}")
("\\subparagraph{%s}" . "\\subparagraph*{%s}"))
)
(add-to-list 'org-latex-classes
'("scrartcl"
"\\documentclass{scrartcl}"
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}" . "\\subsubsection*{%s}")
("\\paragraph{%s}" . "\\paragraph*{%s}")
("\\subparagraph{%s}" . "\\subparagraph*{%s}"))
)
(add-to-list 'org-latex-classes
'("scrreprt"
"\\documentclass{scrreprt}"
@ -993,13 +1057,29 @@ Adapt this from https://github.com/alhassy/emacs.d to do something similar for s
("\\paragraph{%s}" . "\\paragraph*{%s}")
("\\subparagraph{%s}" . "\\subparagraph*{%s}"))
)
(add-to-list 'org-latex-classes
'("moderncv"
"\\documentclass{moderncv}"
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}" . "\\subsubsection*{%s}")
("\\paragraph{%s}" . "\\paragraph*{%s}")
("\\subparagraph{%s}" . "\\subparagraph*{%s}"))
)
)
#+end_src
*** Ox Latex Subfigure package
#+begin_src emacs-lisp
;; (use-package! ox-latex-subfigure
;; :after org
;; :config (require 'ox-latex-subfigure))
#+end_src
#+begin_src emacs-lisp
(use-package! ox-latex-subfigure
:after org
:load-path "~/.config/doom/packages/ox-latex-subfigure/"
:config (require 'ox-latex-subfigure))
#+end_src
@ -1458,6 +1538,38 @@ https://www.reddit.com/r/emacs/comments/d3a8or/pretty_org_tables_in_the_buffer_c
)
#+end_src
** Citeproc-Org
#+BEGIN_SRC emacs-lisp
(use-package! citeproc-org
:ensure t
:after ox-hugo
:config
(citeproc-org-setup))
#+END_SRC
** Org Wild Notifier
#+begin_src emacs-lisp
(use-package! org-wild-notifier
:after org
:init
(setq alert-default-style 'libnotify)
:config
)
#+end_src
** TODO Orch
#+begin_src emacs-lisp :tangle no
(use-package! web-server
:init
:config
)
#+end_src
#+begin_src emacs-lisp :tangle no
(add-to-list 'load-path "~/.config/doom/packages/orch/")
(autoload 'orch-toggle "orch" nil t)
#+end_src
** TODO [#A] Custom Keybindings - =,= leader key and =C-c=
| | |
@ -1782,19 +1894,6 @@ Add all named source blocks to =org-babel-library-of-babel= ([[file:emacs-librar
#+begin_src emacs-lisp
(after! org
(setq org-babel-matlab-shell-command "/home/thomas/.local/bin/matlab -softwareopengl -nodesktop -nosplash")
(setq org-babel-matlab-emacs-link-wrapper-method
"%s
if ischar(ans);
echo('test');
fid = fopen('%s', 'w');
fprintf(fid, '%s', ans);
fclose(fid);
else;
save -ascii %s ans;
end
delete('%s');
")
)
#+end_src
@ -1815,6 +1914,93 @@ Default options for Matlab code
)
#+end_src
Better format the output results for Matlab ([[https://www.reddit.com/r/emacs/comments/fy98bs/orgbabels_matlab_session_output_is_malformed/?utm_source=share&utm_medium=web2x][link]]).
#+begin_src emacs-lisp
(after! org
(defun org-babel-octave-evaluate-session
(session body result-type &optional matlabp)
"Evaluate BODY in SESSION."
(let* ((tmp-file (org-babel-temp-file (if matlabp "matlab-" "octave-")))
(wait-file (org-babel-temp-file "matlab-emacs-link-wait-signal-"))
(full-body
(pcase result-type
(`output
(mapconcat
#'org-babel-chomp
(list (if matlabp
(multi-replace-regexp-in-string
'(("%.*$" . "") ;Remove comments
(";\\s-*\n+" . "; ") ;Concatenate lines
("\\(\\.\\)\\{3\\}\\s-*\n+" . " ") ;Handle continuations
(",*\\s-*\n+" . ", ")) ;Concatenate lines
body)
body)
org-babel-octave-eoe-indicator) "\n"))
(`value
(if (and matlabp org-babel-matlab-with-emacs-link)
(concat
(format org-babel-matlab-emacs-link-wrapper-method
body
(org-babel-process-file-name tmp-file 'noquote)
(org-babel-process-file-name tmp-file 'noquote) wait-file) "\n")
(mapconcat
#'org-babel-chomp
(list (format org-babel-octave-wrapper-method
body
(org-babel-process-file-name tmp-file 'noquote)
(org-babel-process-file-name tmp-file 'noquote))
org-babel-octave-eoe-indicator) "\n")))))
(raw (if (and matlabp org-babel-matlab-with-emacs-link)
(save-window-excursion
(with-temp-buffer
(insert full-body)
(write-region "" 'ignored wait-file nil nil nil 'excl)
(matlab-shell-run-region (point-min) (point-max))
(message "Waiting for Matlab Emacs Link")
(while (file-exists-p wait-file) (sit-for 0.01))
"")) ;; matlab-shell-run-region doesn't seem to
;; make *matlab* buffer contents easily
;; available, so :results output currently
;; won't work
(org-babel-comint-with-output
(session
(if matlabp
org-babel-octave-eoe-indicator
org-babel-octave-eoe-output)
t full-body)
(insert full-body) (comint-send-input nil t)))) results)
(pcase result-type
(`value
(org-babel-octave-import-elisp-from-file tmp-file))
(`output
(setq results
(if matlabp
(cdr (reverse (delete "" (mapcar #'org-strip-quotes
(mapcar #'org-trim (remove-car-upto-newline raw))))))
(cdr (member org-babel-octave-eoe-output
(reverse (mapcar #'org-strip-quotes
(mapcar #'org-trim raw)))))))
(mapconcat #'identity (reverse results) "\n")))))
(defun remove-car-upto-newline (raw)
"Truncate each string in a list of strings up to the first newline"
(cons (mapconcat #'identity
(cdr (split-string-and-unquote (car raw) "\n"))
"\n") (cdr raw)))
(defun multi-replace-regexp-in-string (replacements-list string &optional rest)
(interactive)
"Replace multiple regexps in a string. Order matters."
(if (null replacements-list)
string
(let ((regex (caar replacements-list))
(replacement (cdar replacements-list)))
(multi-replace-regexp-in-string (cdr replacements-list)
(replace-regexp-in-string regex replacement
string rest)))))
)
#+end_src
** Some functions for using Matlab with Org Babel =,m=
=whos= matlab function
#+begin_src emacs-lisp
@ -2104,6 +2290,14 @@ Nice Functions:
;; Folder where all the pdf are located
(setq org-ref-pdf-directory "~/Cloud/pdfs")
(setq org-ref-bibliography-entry-format
'(("article" . "%a, %t, %j, v(%n), %p (%y).")
("book" . "%a, %t, %u (%y).")
("techreport" . "%a, %t, %i, %u (%y).")
("phdthesis" . "%a, %t (%y).")
("proceedings" . "%e, %t in %S, %u (%y).")
("inproceedings" . "%a, %t, %p, in %b, edited by %e, %u (%y)")))
;; Tell org-ref to let helm-bibtex find notes for it
(setq org-ref-notes-function
(lambda (thekey)
@ -2195,6 +2389,7 @@ Nice Functions:
:config
(setq org-roam-directory "~/Cloud/brain/")
(setq org-roam-completion-system 'helm)
(setq org-roam-tag-sources '(prop last-directory))
(setq org-roam-capture-templates
`(("d" "default" plain (function org-roam--capture-get-point)
"%?"
@ -2224,24 +2419,33 @@ Nice Functions:
)
#+end_src
Automatic export of backlinks
#+begin_src emacs-lisp
(defun tdh-org-roam--backlinks-list (file)
(if (org-roam--org-roam-file-p file)
(--reduce-from
(concat acc (format "- [[file:%s][%s]]\n"
(file-relative-name (car it) org-roam-directory)
(org-roam--get-title-or-slug (car it))))
"" (org-roam-db-query [:select [from] :from links :where (= to $s1)] file))
""))
(after! (org org-roam)
(defun tdh-org-roam--backlinks-list (file)
(when (org-roam--org-roam-file-p file)
(mapcar #'car (org-roam-db-query [:select :distinct [from]
:from links
:where (= to $s1)
:and from :not :like $s2] file "%private%"))))
(defun tdh-org-export-preprocessor (_backend)
(when-let ((links (tdh-org-roam--backlinks-list (buffer-file-name))))
(insert "\nBacklinks:\n")
(dolist (link links)
(insert (format "- [[file:%s][%s]]\n"
(file-relative-name link org-roam-directory)
(org-roam--get-title-or-slug link))))))
(add-hook 'org-export-before-processing-hook #'tdh-org-export-preprocessor)
(defun tdh-org-export-preprocessor (backend)
(let ((links (tdh-org-roam--backlinks-list (buffer-file-name))))
(unless (string= links "")
(save-excursion
(goto-char (point-max))
(insert (concat "\n* Backlinks\n") links)))))
(add-hook 'org-export-before-processing-hook 'tdh-org-export-preprocessor)
(defun tdh-org-roam-export-all ()
"Re-exports all Org-roam files to Hugo markdown."
(interactive)
(dolist (f (org-roam--list-all-files))
(with-current-buffer (find-file f)
(when (s-contains? "SETUPFILE" (buffer-string))
(org-hugo-export-wim-to-md)))))
)
#+end_src
** Helm-Bibtex ([[https://github.com/tmalsburg/helm-bibtex][link]])
@ -2254,7 +2458,7 @@ Nice Functions:
(setq bibtex-completion-bibliography "~/Cloud/brain/biblio/references.bib")
;; Directory with all the pdfs
(setq bibtex-completion-library-path "~/Cloud/pdfs")
(setq bibtex-completion-library-path "~/Cloud/pdfs/")
;; Directory with notes files
(setq bibtex-completion-notes-path "~/Cloud/brain/")
@ -2304,6 +2508,19 @@ Nice Functions:
(helm-add-action-to-source "Open PDF Externally" 'tdh-open-pdf-externally helm-source-bibtex 1)
(helm-add-action-to-source "Insert Link to Note" 'tdh-insert-link-to-note helm-source-bibtex 2)
(helm-add-action-to-source "Insert E-Reader Link" 'tdh-insert-link-to-pdf-entry helm-source-bibtex 3)
)
#+end_src
#+begin_src emacs-lisp
(defun tdh-insert-link-to-pdf-entry (key)
"Insert a link to a pdf associated with the bibtex entry."
(let*
((entry (bibtex-completion-get-entry key))
(title (bibtex-completion-get-value "title" entry)))
(insert (concat "[[file:Download/" key ".pdf][" title "]] (cite:" key ")"))
)
)
#+end_src
@ -2315,7 +2532,7 @@ Nice Functions:
(let* ((path (f-join bibtex-completion-notes-path
(s-concat key bibtex-completion-notes-extension))))
(if (file-exists-p path)
(insert (concat "[[" (file-relative-name path) "][Notes]]"))
(insert (concat "[[file:" (file-relative-name path) "][Notes]]"))
(message "No note file associated"))
)))
#+end_src
@ -2370,36 +2587,36 @@ Provides nice functions such as:
- =orb-note-action=
#+begin_src emacs-lisp
(use-package! org-roam-bibtex
:hook (org-roam-mode . org-roam-bibtex-mode)
:config
(setq org-roam-bibtex-preformat-keywords `("=key=" "title" "author" "year" "author-abbrev" "=type="))
(use-package! org-roam-bibtex
:hook (org-roam-mode . org-roam-bibtex-mode)
:config
(setq orb-preformat-keywords `("=key=" "title" "author" "year" "author-abbrev" "=type="))
(setq org-roam-bibtex-templates
`(("r" "ref" plain (function org-roam-capture--get-point) ""
:file-name "${=key=}"
:head ,(concat "#+TITLE: ${title}\n"
"#+SETUPFILE: ./setup/org-setup-file.org\n"
"#+HUGO_SECTION: ${=type=}\n"
"#+ROAM_KEY: ${ref}\n"
"\n"
"- Tags ::\n"
"- Reference :: ${ref}\n"
"- Author(s) :: ${author}\n"
"- Year :: ${year}\n"
"\n"
"* ${author-abbrev} (${year}): ${title} :${=type=}:ignore:\n"
":PROPERTIES:\n"
":NOTER_DOCUMENT: ../pdfs/${=key=}.pdf\n"
":END:\n"
"\n"
"* Bibliography :ignore:\n"
"bibliography:./biblio/references.bib"
)
:unnarrowed t)))
(setq orb-templates
`(("r" "ref" plain (function org-roam-capture--get-point) ""
:file-name "${=key=}"
:head ,(concat "#+TITLE: ${title}\n"
"#+SETUPFILE: ./setup/org-setup-file.org\n"
"#+HUGO_SECTION: ${=type=}\n"
"#+ROAM_KEY: ${ref}\n"
"\n"
"- Tags ::\n"
"- Reference :: ${ref}\n"
"- Author(s) :: ${author}\n"
"- Year :: ${year}\n"
"\n"
"* ${author-abbrev} (${year}): ${title} :${=type=}:ignore:\n"
":PROPERTIES:\n"
":NOTER_DOCUMENT: ../pdfs/${=key=}.pdf\n"
":END:\n"
"\n"
"* Bibliography :ignore:\n"
"bibliography:./biblio/references.bib"
)
:unnarrowed t)))
(setq orb-note-actions-user '(("Open with Zathura" . tdh-open-bib-with-zathura)))
)
(setq orb-note-actions-user '(("Open with Zathura" . tdh-open-bib-with-zathura)))
)
#+end_src
#+begin_src emacs-lisp
@ -2410,29 +2627,12 @@ Provides nice functions such as:
(call-process "zathura" nil 0 nil (org-ref-get-pdf-filename key)))
#+end_src
** Org-Ref-Ox-Hugo ([[https://github.com/jethrokuan/org-ref-ox-hugo][link]])
This package is used to correctly format the bibliography and links when exporting to hugo.
** Citeproc-org ([[https://github.com/andras-simonyi/citeproc-org][link]])
#+begin_src emacs-lisp
(use-package! org-ref-ox-hugo
:load-path "~/.config/doom/packages/org-ref-ox-hugo/"
(use-package! citeproc-org
:after org
:config
(add-to-list 'org-ref-formatted-citation-formats
'("md"
("article" . "${author}, *${title}*, ${journal}, *${volume}(${number})*, ${pages} (${year}). ${doi}")
("inproceedings" . "${author}, *${title}*, In ${editor}, ${booktitle} (pp. ${pages}) (${year}). ${address}: ${publisher}.")
("book" . "${author}, *${title}* (${year}), ${address}: ${publisher}.")
("phdthesis" . "${author}, *${title}* (${year}). ${school}.")
("inbook" . "${author}, *${title}*, In ${editor} (Eds.), ${booktitle} (pp. ${pages}) (${year}). ${address}: ${publisher}.")
("incollection" . "${author}, *${title}*, In ${editor} (Eds.), ${booktitle} (pp. ${pages}) (${year}). ${address}: ${publisher}.")
("proceedings" . "${editor} (Eds.), _${booktitle}_ (${year}). ${address}: ${publisher}.")
("unpublished" . "${author}, *${title}* (${year}). Unpublished manuscript.")
("misc" . "${author} (${year}). *${title}*. Retrieved from [${howpublished}](${howpublished}). ${note}.")
(nil . "${author}, *${title}* (${year}).")))
(setq reference-link-class "reference-link")
(setq bibtex-entry-class "bibtex-entry")
)
(citeproc-org-setup))
#+end_src
* LaTeX
@ -2485,7 +2685,8 @@ This package is used to correctly format the bibliography and links when exporti
** Setup Matlab Mode
#+begin_src emacs-lisp
(setq matlab-shell-command "/home/thomas/.local/bin/matlab")
(setq matlab-shell-command-switches (list "-nodesktop -nosplash"))
(setq matlab-shell-command-switches (list "-softwareopengl -nodesktop -nosplash"))
(setq matlab-indent-function t)
(setq mlint-programs '("mlint" "/home/thomas/.local/bin/mlint"))
#+end_src
@ -2546,6 +2747,14 @@ This package is used to correctly format the bibliography and links when exporti
(interactive)
(matlab-shell-run-command (concat "dbclear in " (buffer-name))))
(defun tdh-matlab-no-debug-on-error ()
(interactive)
(matlab-shell-run-command (concat "dbclear if error")))
(defun tdh-matlab-debug-on-error ()
(interactive)
(matlab-shell-run-command (concat "dbstop if error")))
(defun tdh-matlab-go-to-file-directory ()
(interactive)
(matlab-shell-run-command (concat "cd " (file-name-directory buffer-file-name))))
@ -2553,18 +2762,21 @@ This package is used to correctly format the bibliography and links when exporti
#+begin_src emacs-lisp
(map! :map matlab-mode-map
:n ",g" 'tdh-matlab-go-to-file-directory
:n ",da" 'tdh-matlab-add-breakpoint
:n ",dr" 'tdh-matlab-remove-breakpoint
:n ",dL" 'tdh-matlab-list-breakpoints
:n ",dc" 'tdh-matlab-clear-breakpoints
:n ",dl" 'gud-cont
:n ",ds" 'gud-step
:n ",dn" 'gud-next
:n ",dq" 'gud-finish)
(:prefix ("," . "prefix")
:n "g" 'tdh-matlab-go-to-file-directory
(:prefix ("d" . "Debug")
:n "de" 'tdh-matlab-debug-on-error
:n "dE" 'tdh-matlab-no-debug-on-error
:n "da" 'tdh-matlab-add-breakpoint
:n "dr" 'tdh-matlab-remove-breakpoint
:n "dL" 'tdh-matlab-list-breakpoints
:n "dc" 'tdh-matlab-clear-breakpoints
:n "dl" 'gud-cont
:n "ds" 'gud-step
:n "dn" 'gud-next
:n "dq" 'gud-finish)))
#+end_src
* Mu4e
** Resources
Documentation:
@ -2777,8 +2989,7 @@ Choose account label to feed msmtp -a option based on From header in Message buf
deft
hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
hydra
(modeline
+light) ; snazzy, Atom-inspired modeline, plus API
modeline
ophints ; highlight the region an operation acts on
(popup ; tame sudden yet inevitable temporary windows
+all ; catch all popups that start with an asterix
@ -2787,6 +2998,7 @@ Choose account label to feed msmtp -a option based on From header in Message buf
vc-gutter ; vcs diff in the fringe
vi-tilde-fringe ; fringe tildes to mark beyond EOB
workspaces ; tab emulation, persistence & separate workspaces
(emoji +unicode)
:editor
(evil +everywhere); come to the dark side, we have cookies
@ -2800,6 +3012,7 @@ Choose account label to feed msmtp -a option based on From header in Message buf
electric ; smarter, keyword-based electric-indent
(ibuffer +icons) ; interactive buffer management
vc ; version-control and Emacs, sitting in a tree
undo
:term
eshell ; a consistent, cross-platform shell (WIP)
@ -2812,10 +3025,12 @@ Choose account label to feed msmtp -a option based on From header in Message buf
+docsets) ; ...or in Dash docsets locally
lsp
magit ; a git porcelain for Emacs
docker
;;pass ; password manager for nerds
pdf ; pdf enhancements
eval
biblio
(lookup +dictionary)
:checkers
syntax ; tasing you for every semicolon you forget
@ -2839,6 +3054,7 @@ Choose account label to feed msmtp -a option based on From header in Message buf
+lsp)
(web
+lsp)
yaml
:email
(mu4e +gmail)
@ -2861,16 +3077,25 @@ Choose account label to feed msmtp -a option based on From header in Message buf
#+begin_src emacs-lisp
(package! poet-theme)
(package! org-alert)
(package! spice-mode)
(package! org-pandoc-import
:recipe (:host github
:repo "tecosaur/org-pandoc-import"
:files ("*.el" "filters" "preprocessors")))
(package! citeproc-org)
(package! org-wild-notifier)
(package! org-gcal)
(package! ox-latex-subfigure
:recipe (:host github :repo "linktohack/ox-latex-subfigure"))
;; (package! ox-latex-subfigure
;; :recipe (:host github :repo "linktohack/ox-latex-subfigure"))
;; (package! matlab-mode)
(package! matlab-mode
:recipe (:host github :repo "matlab-mode/mirror"))
(package! org-ref)
(package! org-roam-bibtex)
(package! citeproc-org)
(package! org-ql)
(package! org-fancy-priorities)
(package! evil-escape :disable t)
(package! dired-narrow)
(package! web-server)
#+end_src