;;; $DOOMDIR/config.el -*- lexical-binding: t; -*- ;; Place your private configuration here! Remember, you do not need to run 'doom ;; sync' after modifying this file! ;; Some functionality uses this to identify you, e.g. GPG configuration, email ;; clients, file templates and snippets. It is optional. ;; (setq user-full-name "John Doe" ;; user-mail-address "john@doe.com") ;; Doom exposes five (optional) variables for controlling fonts in Doom: ;; ;; - `doom-font' -- the primary font to use ;; - `doom-variable-pitch-font' -- a non-monospace font (where applicable) ;; - `doom-big-font' -- used for `doom-big-font-mode'; use this for ;; presentations or streaming. ;; - `doom-symbol-font' -- for symbols ;; - `doom-serif-font' -- for the `fixed-pitch-serif' face ;; ;; See 'C-h v doom-font' for documentation and more examples of what they ;; accept. For example: ;; ;;(setq doom-font (font-spec :family "Fira Code" :size 12 :weight 'semi-light) ;; doom-variable-pitch-font (font-spec :family "Fira Sans" :size 13)) ;; ;; If you or Emacs can't find your font, use 'M-x describe-font' to look them ;; up, `M-x eval-region' to execute elisp code, and 'M-x doom/reload-font' to ;; refresh your font settings. If Emacs still can't find your font, it likely ;; wasn't installed correctly. Font issues are rarely Doom issues! ;; There are two ways to load a theme. Both assume the theme is installed and ;; available. You can either set `doom-theme' or manually load a theme with the ;; `load-theme' function. This is the default: (setq doom-theme 'doom-one) ;; This determines the style of line numbers in effect. If set to `nil', line ;; numbers are disabled. For relative line numbers, set this to `relative'. (setq display-line-numbers-type t) ;; If you use `org' and don't want your org files in the default location below, ;; change `org-directory'. It must be set before org loads! (setq org-directory "~/org/") ;; Whenever you reconfigure a package, make sure to wrap your config in an ;; `after!' block, otherwise Doom's defaults may override your settings. E.g. ;; ;; (after! PACKAGE ;; (setq x y)) ;; ;; The exceptions to this rule: ;; ;; - Setting file/directory variables (like `org-directory') ;; - Setting variables which explicitly tell you to set them before their ;; package is loaded (see 'C-h v VARIABLE' to look up their documentation). ;; - Setting doom variables (which start with 'doom-' or '+'). ;; ;; Here are some additional functions/macros that will help you configure Doom. ;; ;; - `load!' for loading external *.el files relative to this one ;; - `use-package!' for configuring packages ;; - `after!' for running code after a package has loaded ;; - `add-load-path!' for adding directories to the `load-path', relative to ;; this file. Emacs searches the `load-path' when you load packages with ;; `require' or `use-package'. ;; - `map!' for binding new keys ;; ;; To get information about any of these functions/macros, move the cursor over ;; the highlighted symbol at press 'K' (non-evil users must press 'C-c c k'). ;; This will open documentation for it, including demos of how they are used. ;; Alternatively, use `C-h o' to look up a symbol (functions, variables, faces, ;; etc). ;; ;; You can also try 'gd' (or 'C-c c d') to jump to their definition and see how ;; they are implemented. (setq doom-theme 'catppuccin) ;;(setq org-startup-with-inline-images t) ;; for inline images in org mode (setq org-display-inline-images t) (setq org-redisplay-inline-images t) (setq org-startup-with-inline-images "inlineimages") ;; (defun my/org-insert-latest-screenshot () ;; "Copy the latest screenshot into the current directory and insert it as [[filename]]." ;; (interactive) ;; (let* ((src (car (sort (directory-files "~/Bilder/Bildschirmfotos/" t ".*\\.png$") ;; (lambda (a b) ;; (time-less-p (file-attribute-modification-time (file-attributes b)) ;; (file-attribute-modification-time (file-attributes a)))))) ;; (filename (format "Pasted image %s.png" ;; (format-time-string "%Y%m%dT%H%M%S"))) ;; (dst (expand-file-name filename default-directory))) ;; (copy-file src dst) ;; (insert (format "[[%s]]" filename)))) ;; ;; (map! :after org ;; :map org-mode-map ;; :leader ;; "i l" #'my/org-insert-latest-screenshot) ;; (with-eval-after-load "ispell" ;; ;; Configure `LANG`, otherwise ispell.el cannot find a 'default ;; ;; dictionary' even though multiple dictionaries will be configured ;; ;; in next line. ;; (setenv "LANG" "en_US.UTF-8") ;; (setq ispell-program-name "hunspell") ;; ;; Configure German, Swiss German, and two variants of English. ;; (setq ispell-dictionary "de_DE,en_US") ;; ;; ispell-set-spellchecker-params has to be called ;; ;; before ispell-hunspell-add-multi-dic will work ;; (ispell-set-spellchecker-params) ;; (ispell-hunspell-add-multi-dic "de_DE,en_US") ;; ;; For saving words to the personal dictionary, don't infer it from ;; ;; the locale, otherwise it would save to ~/.hunspell_de_DE. ;; (setq ispell-personal-dictionary "~/.hunspell_personal")) ;; ;; ;; The personal dictionary file has to exist, otherwise hunspell will ;; ;; silently not use it. ;; (unless (file-exists-p ispell-personal-dictionary) ;; (write-region "" nil ispell-personal-dictionary nil 0)) ;; ;; (use-package flycheck ;; :ensure t ;; :config ;; (add-hook 'after-init-hook #'global-flycheck-mode)) ;; (after! lsp-mode ;; (setq lsp-diagnostics-provider :flycheck)) (use-package! flycheck) (require 'ansi-color) (defun display-ansi-colors () (interactive) (ansi-color-apply-on-region (point-min) (point-max))) (remove-hook 'org-mode-hook #'ws-butler-mode) (add-hook 'org-mode-hook (lambda () (ws-butler-mode -1))) (use-package ox-typst :after org) (use-package! ox-typst :after ox) (require 'ox-typst) ;;(use-package! org-fragtog ;; :after org ;; :hook (org-mode . org-fragtog) ; this auto-enables it when you enter an org-buffer, remove if you do not want this ;; :config ;; ;; whatever you want ;; ) (defun toggle-org-latex-preview-on-save () (interactive) (if (memq 'org-latex-preview after-save-hook) (progn (remove-hook 'after-save-hook 'org-latex-preview) ;; (remove-hook 'after-save-hook 'org-latex-preview t) (message "Disabled org latex preview on save for current buffer...")) (add-hook 'after-save-hook 'org-latex-preview) ;; (add-hook 'after-save-hook 'org-latex-preview nil t) (message "Enabled org latex preview on save for current buffer..."))) ;; (add-to-list 'org-latex-packages-alist '("" "tikz" t)) ;; ;; (eval-after-load "preview" ;; '(add-to-list 'preview-default-preamble ;; "\\PreviewEnvironment{tikzpicture}" t)) (org-babel-do-load-languages 'org-babel-load-languages '((latex . t))) (after! org (setq org-startup-with-latex-preview t) (setq font-lock-maximum-decoration t)) (add-hook 'org-mode-hook #'turn-on-font-lock) (menu-bar--display-line-numbers-mode-relative) ;; (setq org-preview-latex-default-process :imagemagick) ;; ;; (setq org-babel-latex-htlatex "htlatex") ;; (defmacro by-backend (&rest body) ;; `(case org-export-current-backend ,@body)) ;; #+REVEAL_ROOT: https://cdn.jsdelivr.net/npm/reveal.js ;; Reveal.js + Org mode (use-package ox-reveal :after org) (use-package! ox-reveal :after ox) (require 'ox-reveal) (setq Org-Reveal-title-slide nil) ;; Wrong number of arguments?!?! ;;(setq org-export-backends md ascii html icalendar latex odt typst reveal) ;; (defun org-insert-src-block (src-code-type) ;; "Insert a `SRC-CODE-TYPE' type source code block in org-mode." ;; (interactive ;; (let ((src-code-types ;; '("emacs-lisp" "python" "C" "sh" "java" "js" "clojure" "C++" "css" ;; "calc" "asymptote" "dot" "gnuplot" "ledger" "lilypond" "mscgen" ;; "octave" "oz" "plantuml" "R" "sass" "screen" "sql" "awk" "ditaa" ;; "haskell" "latex" "lisp" "matlab" "ocaml" "org" "perl" "ruby" ;; "scheme" "sqlite"))) ;; (list (ido-completing-read "Source code type: " src-code-types)))) ;; (progn ;; (newline-and-indent) ;; (insert (format "#+BEGIN_SRC %s\n" src-code-type)) ;; (newline-and-indent) ;; (insert "#+END_SRC\n") ;; (previous-line 2) ;; (org-edit-src-code) ;; ) ;; ) (defun org-insert-c-src() "Insert a C src block with a helper function to run it." (interactive) (progn (newline-and-indent) (insert "#+NAME: cprog\n#+BEGIN_SRC C :tangle (concat (org-get-heading t t t t) \".c\") :results output") (newline-and-indent) (insert "#+END_SRC\n") (newline-and-indent) ;;(insert "#+BEGIN_SRC sh :dir . :results output :exports both :var filename=(concat (org-get-heading t t t t) \".c\") output=(concat (org-get-heading t t t t) \".o\")\n# output=${filename%.*}.o\ngcc $filename -o $output\n./$output\n# ./$output <$filename\n<>\nEOF\n\n# output=${filename%.*}.o\ngcc $filename -o $output\n./$output\n# ./$output < // / \/ ;; //_________| / |/ |/ \__// / / /_/ \/ ;; | / | : | / /__/ ;; |/ |/ E V A N G E L I O N ;; (defun evangelion-splash () (let* ((banner '(" _ ____ " " : \\ | \\ . " " | \\ . | : |\\ /\\ " " . | :|\\__ | | | \\ / \\ " " |\\ | |! \\ \\ | | | |\\ / / " " \\\"-.______ | \\: ||\\ \\ \\ | | | | \\ / / " " \\_ \"-_| |\\ || \\ \\/ | |___| ! |\\____/ _/-. /\\ " " \"-_ ____: |_\\ || \\/ ___\\ __ _// | | ___ \\---\" / " " \\ \\ | _____, /___\\___\\/ / / \\_! | // _/ / / " " ___\\_ \\__| | | __. _/____ / / / > // / \\/ " " //_________| / |/ |/ \\__// / / /_/ \\/ " " | / | : | / /__/ " " |/ |/ " " E M A C S ")) (longest-line (apply #'max (mapcar #'length banner)))) (put-text-property (point) (dolist (line banner (point)) (insert (+doom-dashboard--center +doom-dashboard--width (concat line (make-string (max 0 (- longest-line (length line))) 50))) "\n")) 'face 'doom-dashboard-banner))) (setq +doom-dashboard-ascii-banner-fn #'evangelion-splash) ;; .doom.d/config.el ;; (let ((alternatives '("nameoffirstfile.svg" ;; "nameofanotherfile.png" ;; "nameofathirdfile.svg"))) ;; (setq fancy-splash-image ;; (concat doom-private-dir "splash/" ;; (nth (random (length alternatives)) alternatives)))) (setq vterm-shell "/usr/bin/env zsh")