doomconfig/config.org

167 lines
5.0 KiB
Org Mode

#+title: My Org-mode Emacs Config
#+author: Samuel ORTION
#+date: 2023-08-10
* Doom theme
** Use nerd-font in Emacs (for better support in vterm to liquidprompt)
#+begin_src emacs-lisp :tangle yes
(setq doom-font (font-spec :family "Fira Code Nerd Font" :size 12)
doom-big-font (font-spec :family "Fira Code Nerd Font" :size 24)
doom-variable-pitch-font (font-spec :family "Fira Code Nerd Font" :size 12)
doom-unicode-font (font-spec :family "Fira Code Nerd Font")
doom-serif-font (font-spec :family "Fira Code Nerd Font" :size 12 :weight 'light))
#+end_src
* UI
* Edition modes
** Quarto
** LaTeX
#+begin_src emacs-lisp :tangle yes
(setq TeX-quote-after-quote t)
#+end_src
*** Fix =cdlatex= back quote binding
#+begin_quote
I want my back quotes back.
#+end_quote
#+begin_src emacs-lisp :tangle yes
(setq cdlatex-math-symbol-prefix [f12])
#+end_src
Add custom LaTeX classes to ox-latex class.
#+begin_src emacs-lisp :tangle yes
(defun custom-latex-classes ()
(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
'("scrbook" "\\documentclass{scrbook}"
("\\part{%s}" . "\\part*{%s}")
("\\chapter{%s}" . "\\chapter*{%s}")
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}" . "\\subsubsection*{%s}")
("\\paragraph{%s}" . "\\paragraph*{%s}")
("\\subparagraph{%s}" . "\\subparagraph*{%s}"))))
(eval-after-load "ox-latex"
#'custom-latex-classes)
#+end_src
#+begin_src emacs-lisp :tangle yes
(setq org-latex-compiler "lualatex")
#+end_src
Use minted for code listings:
#+begin_src emacs-lisp :tangle yes
(setq org-latex-listings 'minted
org-latex-packages-alist '(("" "minted"))
org-latex-pdf-process
'("lualatex -shell-escape -interaction nonstopmode -output-directory %o %f"
"lualatex -shell-escape -interaction nonstopmode -output-directory %o %f"))
#+end_src
Disable LateX preview in Org-mode by default
#+begin_src emacs-lisp :tangle yes
(setq org-startup-with-latex-preview nil)
#+end_src
*** Add a hook so that the org file is tangled before the build
#+begin_src emacs-lisp :tangle yes
(add-hook 'org-export-before-processing-hook #'org-babel-tangle)
#+end_src
*** Syntax highlighting in Org-mode
#+begin_src emacs-lisp :tangle yes
(setq org-highlight-latex-and-related '(latex script entities))
#+end_src
\(i \in \mathbf{N}\)
** Expand initial Frame
#+begin_src emacs-lisp :tangle yes
(add-hook 'window-setup-hook 'toggle-frame-maximized t)
#+end_src
** Enable conda environment in a Org-mode
#+begin_src emacs-lisp :tangle no
(require 'conda)
(conda-env-initialize-interactive-shells)
#+end_src
** Org-roam
Set the roam directory
#+begin_src emacs-lisp
(setq org-roam-directory "~/sync/Documents/org/roam/")
#+end_src
* Emacs Server & Emacs Client
Emacs can be a little slow to startup: it might come useful to use Emacs server to share the initialization cost between instances.
Let's add an entry to our applications launcher, in client mode:
#+begin_src desktop :tangle no
# In ~/.local/share/applications/emacs-client.desktop
[Desktop Entry]
Name=Emacs (Client)
GenericName=Text Editor
Comment=Edit text
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
Exec=emacsclient -fs -c -a "emacs" %F
Icon=emacs
Type=Application
Terminal=false
Categories=Development;TextEditor;Utility;
StartupWMClass=Emacs
#+end_src
the =-fs= option enable to launch Emacs in full-screen mode at startup.
Then we start the Emacs daemon:
#+begin_src bash :tangle no
systemctl --user enable --now emacs
#+end_src
#+RESULTS:
* Escape from vim in libvterm while in evil-mode
#+begin_src emacs-lisp :tangle no
(defun vim-save ()
":wd this unfortunate vim window in my terminal"
(interactive)
(send-))
#+end_src
#+RESULTS:
: vim-save
* PlantUML
#+begin_src emacs-lisp :tangle yes
(setq plantuml-default-exec-mode 'executable)
;; (setq plantuml-default-exec-mode 'jar)
(setq plantuml-executable-path "/usr/bin/plantuml")
;; setup plantuml for org-babel
(add-to-list 'org-src-lang-modes '("plantuml" . plantuml))
(setq org-plantuml-exec-mode 'executable)
(setq org-plantuml-executable-path plantuml-executable-path)
;; (require 'ob-plantuml) ; OBSOLETED
(setq org-plantuml-jar-path "/usr/share/java/plantuml.jar")
;; (setq plantuml-jar-args '())
;; Enable puml-mode for PlantUML files
(add-to-list 'auto-mode-alist '("\\.puml\\'" . plantuml-mode))
(add-to-list 'auto-mode-alist '("\\.plantuml\\'" . plantuml-mode))
#+end_src