about summary refs log tree commit diff
path: root/modules/emacs/doom/config.el
diff options
context:
space:
mode:
authorazahi <azat@bahawi.net>2025-03-12 20:17:13 +0300
committerazahi <azat@bahawi.net>2025-03-12 20:17:13 +0300
commitc81dc5a13b469c511fac6fa2390b70422d1b4da5 (patch)
tree4dab5909006ab5c25da6bd9fde6a714c7719ded7 /modules/emacs/doom/config.el
parent2025-02-17 (diff)
2025-03-12 HEAD master
Diffstat (limited to 'modules/emacs/doom/config.el')
-rw-r--r--modules/emacs/doom/config.el208
1 files changed, 72 insertions, 136 deletions
diff --git a/modules/emacs/doom/config.el b/modules/emacs/doom/config.el
index d7ab80e..4ff9af8 100644
--- a/modules/emacs/doom/config.el
+++ b/modules/emacs/doom/config.el
@@ -1,6 +1,4 @@
-;;
-;;; Misc
-;;
+;; Misc
 
 (setq! frame-title-format '("GNU Emacs"))
 
@@ -22,9 +20,7 @@
 (setq! migemo-options '("--quiet" "--emacs")
        skk-show-inline t)
 
-;;
-;;; Doom-specific
-;;
+;; Doom-specific
 
 (setq! doom-theme 'modus-operandi
        doom-modeline-icon nil
@@ -32,9 +28,7 @@
        doom-modeline-total-line-number t
        doom-modeline-height 30)
 
-;;
-;;; Editorconfig
-;;
+;; Editorconfig
 
 (setq! +editorconfig-mode-alist '((sh-mode . "sh"))
        ;; It's never a good idea to force specific indentation rules for Lisp,
@@ -48,51 +42,31 @@
                                     hy-mode
                                     dune-mode))
 
-;;
-;;; LSP
-;;
+;; LSP
 
 (after! lsp-mode
   (setq! lsp-enable-server-download nil
          lsp-enable-suggest-server-download nil
-         lsp-modeline-code-action-fallback-icon "~"))
+         lsp-modeline-code-action-fallback-icon "~"
+         lsp-yaml-schemas `((,(intern "https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json")
+                             . ["*-compose.y*"])
+                            (,(intern "https://json.schemastore.org/kustomization.json")
+                             . ["kustomization.yaml"])
+                            (kubernetes
+                             . ["*.yaml"]))))
 
-;;
-;;; Tree-Sitter
-;;
-
-(use-package! treesit-auto
-  :disabled
-  :custom (treesit-auto-install 'prompt)
-  :config
-  (treesit-auto-add-to-auto-mode-alist 'all)
-  (global-treesit-auto-mode))
-
-;;
-;;; Nix
-;;
-
-(after! nix
-  (after! lsp-mode
-    (add-to-list 'lsp-language-id-configuration '(nix-mode . "nix"))
-    (lsp-register-client (make-lsp-client
-                          :new-connection (lsp-stdio-connection "nixd")
-                          :activation-fn (lsp-activate-on "nix")
-                          :server-id 'nixd
-                          :major-modes 'nix-mode))
-    (add-hook 'nix-mode-hook 'lsp-deferred)))
-
-;;
-;;; Go
-;;
+;; Go
 
 (setq! lsp-go-analyses '((unsedvariable . t)
                          (unusedparams . t)
                          (unusedwrite . t)))
 
-;;
-;;; Org
-;;
+;; Python
+
+(after! dap-mode
+  (setq dap-python-debugger 'debugpy))
+
+;; Org
 
 (setq! org-directory "~/doc/org/"
        org-roam-directory "~/doc/roam/"
@@ -149,88 +123,86 @@
 
 (add-hook 'org-capture-mode-hook 'evil-insert-state)
 
-;;
-;;; LaTeX
-;;
+;; LaTeX
 
 (map! :map cdlatex-mode-map
       :i "TAB" #'cdlatex-tab)
 
-;;
-;;; Typst
-;;
+;; Typst
 
 (use-package! typst-ts-mode
   :custom (typst-ts-watch-options "--open")
   :config
-  (add-to-list 'lsp-language-id-configuration '(typst-ts-mode . "typst"))
-  (lsp-register-client (make-lsp-client
-                        :new-connection (lsp-stdio-connection "tinymist")
-                        :server-id 'tinymist
-                        :major-modes '(typst-ts-mode)))
-  (add-hook 'typst-ts-mode-hook 'lsp-deferred)
-
-  (when (boundp 'treesit-auto-recipe-list)
-    (add-to-list 'treesit-auto-recipe-list
-                 (make-treesit-auto-recipe
-                  :lang 'typst
-                  :ts-mode 'typst-ts-mode
-                  :url "https://github.com/uben0/tree-sitter-typst"
-                  :revision "master"
-                  :source-dir "src"))))
-
-;;
-;;; PlantUML
-;;
+  (after! lsp-mode
+    (add-to-list 'lsp-language-id-configuration '(typst-ts-mode . "typst"))
+    (lsp-register-client
+     (make-lsp-client
+      :new-connection (lsp-stdio-connection "tinymist")
+      :server-id 'tinymist
+      :major-modes '(typst-ts-mode)))
+    (add-hook 'typst-ts-mode-hook 'lsp-deferred))
+
+  (after! apheleia
+    (add-to-list 'apheleia-mode-alist '(typst-ts-mode . prettypst))
+    (add-to-list 'apheleia-formatters '(prettypst "prettypst" "--use-std-in" "--use-std-out"))))
+
+(use-package! typst-preview
+  :custom
+  (typst-preview-invert-colors "never")
+  (typst-preview-open-browser-automatically t)
+  :config
+  (advice-add 'typst-preview-start :before (lambda (&rest r)
+                                             (setq tp--master-file buffer-file-name))))
+
+;; PlantUML
 
 (setq! plantuml-default-exec-mode 'executable
        org-plantuml-exec-mode 'plantuml)
 
-;;
-;;; Elisp
-;;
+;; Elisp
 
 (after! flycheck
   (pushnew! flycheck-disabled-checkers 'emacs-lisp-checkdoc))
 
-;;
-;;; Haskell
-;;
+;; Haskell
 
 (setq! lsp-haskell-formatting-provider "ormolu")
 
-;;
-;;; Nickel
-;;
+;; Nickel
 
 (use-package! nickel-mode
   :config
   (after! lsp-mode
     (add-to-list 'lsp-language-id-configuration '(nickel-mode . "nickel"))
-    (lsp-register-client (make-lsp-client
-                          :new-connection (lsp-stdio-connection "nls")
-                          :server-id 'nls
-                          :major-modes '(nickel-mode)))
+    (lsp-register-client
+     (make-lsp-client
+      :new-connection (lsp-stdio-connection "nls")
+      :activation-fn (lsp-activate-on "nickel")
+      :server-id 'nls
+      :major-modes 'nickel-mode))
     (add-hook 'nickel-mode-hook 'lsp-deferred)))
 
-;;
-;;; YAML
-;;
+;; YAML
 
 ;; Turn off `flycheck-mode' and `lsp-mode' for Helm templates.
-(add-hook! 'yaml-mode-hook
-  (defun nixfiles/disable-flycheck-for-helm-templates-h ()
-    (when (and buffer-file-name
-               (string-match-p "/templates/" buffer-file-name)
-               (or (string-suffix-p ".yaml" buffer-file-name)
-                   (string-suffix-p ".yml" buffer-file-name)))
-      (remove-hook! 'yaml-mode-local-vars-hook #'lsp!))))
+;; (add-hook! 'yaml-mode-hook
+;;   (defun nixfiles/disable-flycheck-for-helm-templates-h ()
+;;     (when (and buffer-file-name
+;;                (string-match-p "/templates/" buffer-file-name)
+;;                (or (string-suffix-p ".yaml" buffer-file-name)
+;;                    (string-suffix-p ".yml" buffer-file-name)))
+;;       (remove-hook! 'yaml-mode-local-vars-hook #'lsp!))))
+
+;; (setq-hook! 'yaml-mode-hook +format-with-lsp nil)
 
-(setq-hook! 'yaml-mode-hook +format-with-lsp nil)
+;; Magit
 
-;;
-;;; Elfeed
-;;
+(setq! code-review-auth-login-marker 'forge)
+
+(add-hook 'code-review-mode-hook (lambda ()
+                                   (persp-add-buffer (current-buffer))))
+
+;; Elfeed
 
 (setq! elfeed-db-directory "~/.elfeed"
        elfeed-enclosure-default-dir (concat elfeed-db-directory "/enclosures")
@@ -239,9 +211,7 @@
        elfeed-goodies/entry-pane-size 0.75
        elfeed-goodies/entry-pane-position 'bottom)
 
-;;
-;;; mu4e
-;;
+;; mu4e
 
 (after! mu4e
   (setq! sendmail-program (executable-find "msmtp")
@@ -256,9 +226,7 @@
 
 (setq-hook! 'mu4e-main-mode-hook mu4e-update-interval 30)
 
-;;
-;;; Circe
-;;
+;; Circe
 
 (setq! circe-network-options
        (mapcar (lambda (server)
@@ -273,44 +241,12 @@
                             (+pass-get-secret "server/soju.shire.net/azahi"))))
                '("libera" "oftc" "hackint" "rizon")))
 
-;;
-;;; Sops
-;;
+;; Sops
 
 (use-package! sops
   :hook (doom-first-file . global-sops-mode))
 
-;;
-;;; Hledger
-;;
-
-(use-package! hledger-mode
-  :disabled
-  :mode ("\\.journal\\'")
-  :hook ((hledger-view-mode . hl-line-mode)
-         (hledger-view-mode . center-text-for-reading))
-  :init
-  (setq! hledger-jfile "~/doc/accounting/current.journal")
-  :config
-  (set-company-backend! 'hledger-mode 'hledger-company)
-  (add-hook! 'hledger-mode-hook
-    (lambda (&rest _)
-      (make-local-variable 'company-backends)
-      (add-to-list 'company-backends 'hledger-company))))
-
-(use-package! hledger-input
-  :disabled
-  :hook ((hledger-input-post-commit . hledger-show-new-balances)
-         (hledger-input-mode . auto-fill-mode)
-         (hledger-input-mode . (lambda (&rest _)
-                                 (make-local-variable 'compay-idle-delay)
-                                 (setq-local company-idle-delay 0.1))))
-  :init
-  (setq! hledger-input-buffer-height 20))
-
-;;
-;;; LLM
-;;
+;; LLM
 
 (use-package! gptel
   :config

Consider giving Nix/NixOS a try! <3