aboutsummaryrefslogtreecommitdiff
path: root/dot.emacs.d/init.el
diff options
context:
space:
mode:
Diffstat (limited to 'dot.emacs.d/init.el')
-rw-r--r--dot.emacs.d/init.el169
1 files changed, 130 insertions, 39 deletions
diff --git a/dot.emacs.d/init.el b/dot.emacs.d/init.el
index 992421f..41508c6 100644
--- a/dot.emacs.d/init.el
+++ b/dot.emacs.d/init.el
@@ -52,20 +52,14 @@
(load "server")
(unless (server-running-p) (server-start))
+(setq custom-file (locate-user-emacs-file "custom.el"))
+(load custom-file :noerror)
+
(use-package modus-themes
:defer nil
- :init
- (dolist
- (hash
- '("7613ef56a3aebbec29618a689e47876a72023bbd1b8393efc51c38f5ed3f33d1"
- "c7a926ad0e1ca4272c90fce2e1ffa7760494083356f6bb6d72481b879afce1f2"))
- (add-to-list 'custom-safe-themes hash))
:config
(load-theme 'modus-vivendi-tinted))
-(setq custom-file (locate-user-emacs-file "custom.el"))
-(load custom-file :noerror)
-
(setq display-time-day-and-date t
display-time-24hr-format t)
(display-time-mode)
@@ -119,11 +113,19 @@
:hook ((python-mode python-ts-mode) . lsp))
(use-package pet
:init
- (add-hook 'python-base-mode-hook 'pet-mode -10))
+ (add-hook 'python-base-mode-hook 'pet-mode -10)
+ (add-hook
+ 'python-base-mode-hook
+ (defun qsx-python-pet-hook ()
+ (setq-local lsp-pylsp-server-command (list (pet-executable-find "pylsp"))))))
(use-package highlight-indentation
:hook python-base-mode)
+(use-package jinja2-mode
+ :mode "\\.html.j2\\'"
+ :config (keymap-unset jinja2-mode-map "M-o"))
+
(defun qsx-no-indent-tabs-mode ()
(setq indent-tabs-mode nil))
@@ -146,10 +148,23 @@
:custom
(treesit-auto-install 'prompt)
:config
- (setq treesit-auto-langs (seq-difference treesit-auto-langs '(go gomod yaml)))
+ (setq treesit-auto-langs
+ (seq-difference treesit-auto-langs
+ '(c cpp go gomod yaml php jsdoc phpdoc)))
(treesit-auto-add-to-auto-mode-alist 'all)
(global-treesit-auto-mode))
+(setq
+ treesit-language-source-alist
+ (append treesit-language-source-alist
+ '((astro "https://github.com/virchau13/tree-sitter-astro")
+ (css "https://github.com/tree-sitter/tree-sitter-css")
+ (tsx "https://github.com/tree-sitter/tree-sitter-typescript" "master" "tsx/src"))))
+
+(use-package astro-ts-mode
+ :mode "\\.astro\\'"
+ :config (keymap-unset astro-ts-mode-map "M-o"))
+
(use-package editorconfig
:defer nil
:config
@@ -162,12 +177,25 @@
(typescript-ts-mode . tide-hl-identifier-mode)))
(use-package lsp-mode
+ :pin melpa-unstable
:commands lsp
:bind-keymap ("s-l" . lsp-command-map)
;; https://emacs-lsp.github.io/lsp-mode/page/performance/
:init
(setq read-process-output-max (* 1024 1024) ;; 1 MiB
- gc-cons-threshold 6400000))
+ gc-cons-threshold 6400000
+ lsp-clients-clangd-args '("--header-insertion=never"))
+ :config
+ (add-to-list 'lsp-language-id-configuration '(LaTeX-mode . "latex"))
+
+ ;; ugly hack to add #'LaTeX-mode
+ ;; TODO: ⛔ Error (use-package): lsp-mode/:config: Symbol’s value as variable is void: lsp-clients-digestif-executable
+ (with-eval-after-load 'lsp-tex
+ (lsp-register-client
+ (make-lsp-client :new-connection (lsp-stdio-connection lsp-clients-digestif-executable)
+ :major-modes '(plain-tex-mode latex-mode context-mode texinfo-mode LaTeX-mode)
+ :priority (if (eq lsp-tex-server 'digestif) 1 -1)
+ :server-id 'digestif))))
(use-package lsp-ui
:commands lsp-ui-mode)
(use-package helm-lsp
@@ -178,11 +206,14 @@
:bind-keymap ("C-c H" . hg-global-map))
(use-package magit
- :bind (("C-x g" . #'magit-status)
- ("C-c m m" . #'magit-status)
- ("C-c m p" . #'magit-dispatch-popup)
- ("C-c m f" . #'magit-file-popup)
- ("C-c m d" . #'magit-diff-buffer-file)))
+ :defer 10)
+(use-package magit-gh
+ :ensure t
+ :after magit)
+
+(use-package info-nav)
+
+(use-package elsqlite)
(use-package transpose-frame
:init
@@ -201,6 +232,10 @@
:bind ("M-o" . ace-window)
:config (setq aw-scope 'frame))
+(use-package mhtml-mode
+ :ensure nil
+ :config (keymap-unset html-mode-map "M-o"))
+
(use-package avy
:bind (("C-." . avy-goto-char-timer)
("C-:" . avy-goto-char-2)
@@ -247,7 +282,7 @@
(setq-default display-line-numbers 'relative)
(use-package stripe-buffer
- :config
+ :init
(defun qsx-stripe-listify-buffer-hook ()
(stripe-listify-buffer))
(dolist (h '(gnus-group-mode-hook
@@ -256,8 +291,7 @@
(add-hook h #'qsx-stripe-listify-buffer-hook)))
(use-package rainbow-delimiters
- :config
- (add-hook 'prog-mode-hook #'rainbow-delimiters-mode-enable))
+ :hook (prog-mode . rainbow-delimiters-mode-enable))
(show-paren-mode 1)
@@ -272,10 +306,22 @@
(highlight-indentation-set-offset yaml-indent-offset)))
(add-hook 'yaml-mode-hook #'qsx-no-indent-tabs-mode))
+(defun qsx-disable-show-trailing-whitespace ()
+ (setq show-trailing-whitespace nil))
+
+(add-hook 'Info-mode-hook #'qsx-disable-show-trailing-whitespace)
+
+(use-package k8s-mode
+ :hook (k8s-mode . yas-minor-mode))
+(use-package kubedoc
+ :hook ((kubedoc-mode . qsx-dont-show-line-numbers-hook)
+ (kubedoc-mode . qsx-disable-show-trailing-whitespace)))
+
(use-package elisp-mode
:ensure nil
:config
- (add-hook 'emacs-lisp-mode-hook #'qsx-no-indent-tabs-mode))
+ (add-hook 'emacs-lisp-mode-hook #'qsx-no-indent-tabs-mode)
+ (add-hook 'lisp-data-mode-hook #'qsx-no-indent-tabs-mode))
(use-package macrostep
:bind (:map emacs-lisp-mode-map
@@ -329,7 +375,7 @@
fill-column 80)
(dolist (f '(qsx-enable-TeX-fold-mode
turn-on-auto-fill
- prettify-symbols-mode))
+ TeX-source-correlate-mode))
(add-hook 'TeX-mode-hook f))
(TeX-add-symbols
'("cref" TeX-arg-ref)
@@ -344,9 +390,20 @@
(use-package reftex
:if (display-graphic-p)
+ :after (tex)
+ :hook (TeX-mode . reftex-mode)
:config
(setq reftex-plug-into-AUCTeX t)
- (add-hook 'TeX-mode-hook #'reftex-mode))
+ (add-hook 'TeX-mode-hook #'reftex-mode)
+ (TeX-add-style-hook
+ "cleveref"
+ (lambda ()
+ (if (boundp 'reftex-ref-style-alist)
+ (add-to-list
+ 'reftex-ref-style-alist
+ '("Cleveref" "cleveref"
+ (("\\cref" ?c) ("\\Cref" ?C) ("\\cpageref" ?d) ("\\Cpageref" ?D)))))
+ (reftex-ref-style-activate "Cleveref"))))
(use-package auctex-latexmk
:if (display-graphic-p)
@@ -360,12 +417,12 @@
(use-package toml-mode)
-(use-package rust-mode
- :hook (rust-mode . lsp)
- :mode "\\.rs\\'")
+(use-package rust-ts-mode
+ :ensure nil
+ :hook (rust-ts-mode . lsp))
;; Add keybindings for interacting with Cargo
(use-package cargo
- :hook (rust-mode . cargo-minor-mode))
+ :hook ((rust-mode rust-ts-mode) . cargo-minor-mode))
(setq c-default-style "linux")
@@ -399,13 +456,15 @@
(setq column-number-mode t)
-(global-set-key (kbd "C-x C-k") #'kill-this-buffer)
+(global-set-key (kbd "C-x C-k") #'kill-current-buffer)
(global-set-key (kbd "C-M-y") #'(lambda ()
(interactive)
(insert (gui-get-primary-selection))))
(use-package org
:ensure nil
+ :init
+ (require 'org-loaddefs)
:config
(add-hook 'org-mode-hook #'turn-on-auto-fill)
(setq org-list-allow-alphabetical t)
@@ -413,7 +472,8 @@
'org-babel-load-languages
'((emacs-lisp . t)
(dot . t)
- (sqlite . t)))
+ (sqlite . t)
+ (plantuml . t)))
(add-to-list
'org-latex-packages-alist
'("AUTO" "polyglossia" t ("xelatex" "lualatex")))
@@ -423,16 +483,17 @@
(add-to-list
'org-latex-packages-alist
'("" "booktabs" nil))
- (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}")))
- (setq org-latex-default-class "scrartcl"))
+ (with-eval-after-load 'ox-latex
+ (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}")))
+ (setq org-latex-default-class "scrartcl")))
(setq-default fill-column 80)
@@ -464,7 +525,37 @@
(if (eq window-system 'pgtk)
(pgtk-use-im-context nil)))
+(use-package gnuplot
+ :mode ("\\.gp\\'" . gnuplot-mode)
+ :hook ((gnuplot-comint-mode . qsx-disable-show-trailing-whitespace)))
+
+;; RP PIO
+(progn
+ (define-hostmode poly-pio-hostmode
+ :mode 'asm-mode)
+ (define-innermode poly-pio-c-innermode
+ :mode 'c-mode
+ :head-matcher "^% c-sdk {$"
+ :tail-matcher "^%}$"
+ :head-mode 'host
+ :tail-mode 'host)
+ (define-polymode poly-pio-mode
+ :hostmode 'poly-pio-hostmode
+ :innermodes '(poly-pio-c-innermode))
+ (add-to-list 'auto-mode-alist '("\\.pio\\'" . poly-pio-mode)))
+
+(use-package arduino-mode)
+(use-package arduino-cli-mode)
+
+(use-package gleam-ts-mode
+ :mode (rx ".gleam" eos))
+
;;; Mail
+(use-package notmuch
+ :defer t
+ :ensure nil
+ :hook ((notmuch-hello-mode . qsx-dont-show-line-numbers-hook)))
+
(use-package gnus
:defer t
:config