diff --git a/dotfiles/doom.org b/dotfiles/doom.org index 16484da..9649288 100644 --- a/dotfiles/doom.org +++ b/dotfiles/doom.org @@ -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) + ("BU" 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