summaryrefslogtreecommitdiff
path: root/config.org
diff options
context:
space:
mode:
authorcashmere <cashmere@autistici.org>2026-03-18 04:05:02 +0100
committercashmere <cashmere@autistici.org>2026-03-18 04:05:02 +0100
commit833584d61988a0bad0393d6b702f9645eeb2ec16 (patch)
tree075693e802c7bff7a9aa380f3b6aaa55bd853f2e /config.org
parentf55ebafa5cb6c8d0568be8dbbc29cfa50a11af3f (diff)
downloademacs-833584d61988a0bad0393d6b702f9645eeb2ec16.tar.gz
2026-03-18T04:05:09+01:00
Diffstat (limited to 'config.org')
-rw-r--r--config.org340
1 files changed, 243 insertions, 97 deletions
diff --git a/config.org b/config.org
index 7703596..23cc3f7 100644
--- a/config.org
+++ b/config.org
@@ -811,6 +811,67 @@ Not necessary but an eyecandy to look at!
(setq gptel-backends (list my/openrouter-backend)))
#+end_src
+** markdown-mode
+
+#+begin_src emacs-lisp
+(use-package markdown-mode
+ :ensure t
+ :hook (markdown-mode . nb/markdown-unhighlight)
+ :init
+ (setq-default abbrev-mode t)
+ :config
+ (defvar nb/current-line '(0 . 0)
+ "(start . end) of current line in current buffer")
+ (make-variable-buffer-local 'nb/current-line)
+
+ (defun nb/unhide-current-line (limit)
+ "Font-lock function"
+ (let ((start (max (point) (car nb/current-line)))
+ (end (min limit (cdr nb/current-line))))
+ (when (< start end)
+ (remove-text-properties start end
+ '(invisible t display "" composition ""))
+ (goto-char limit)
+ t)))
+
+ (defun nb/refontify-on-linemove ()
+ "Post-command-hook"
+ (let* ((start (line-beginning-position))
+ (end (line-beginning-position 2))
+ (needs-update (not (equal start (car nb/current-line)))))
+ (setq nb/current-line (cons start end))
+ (when needs-update
+ ;; FIX: Verwende jit-lock-refontify statt font-lock-fontify-block
+ (jit-lock-refontify start end))))
+
+ (defun nb/markdown-unhighlight ()
+ "Enable markdown concealling"
+ (interactive)
+ (markdown-toggle-markup-hiding 'toggle)
+ (font-lock-add-keywords nil '((nb/unhide-current-line)) t)
+ ;; FIX: Stelle sicher dass jit-lock aktiv ist
+ (jit-lock-register #'font-lock-fontify-region)
+ (add-hook 'post-command-hook #'nb/refontify-on-linemove nil t))
+
+ :custom-face
+ (markdown-header-delimiter-face ((t (:foreground "#616161" :height 0.9))))
+ (markdown-header-face-1 ((t (:height 1.6 :foreground "#A3BE8C" :weight extra-bold :inherit markdown-header-face))))
+ (markdown-header-face-2 ((t (:height 1.4 :foreground "#EBCB8B" :weight extra-bold :inherit markdown-header-face))))
+ (markdown-header-face-3 ((t (:height 1.2 :foreground "#D08770" :weight extra-bold :inherit markdown-header-face))))
+ (markdown-header-face-4 ((t (:height 1.15 :foreground "#BF616A" :weight bold :inherit markdown-header-face))))
+ (markdown-header-face-5 ((t (:height 1.1 :foreground "#b48ead" :weight bold :inherit markdown-header-face))))
+ (markdown-header-face-6 ((t (:height 1.05 :foreground "#5e81ac" :weight semi-bold :inherit markdown-header-face)))))
+#+end_src
+
+** eca /(editor code assistant)/
+
+#+begin_src emacs-lisp
+(use-package eca
+ :ensure (:host github :repo "editor-code-assistant/eca-emacs"
+ :files ("*.el"))
+ :defer t)
+#+end_src
+
* eldoc
#+begin_src emacs-lisp
@@ -866,6 +927,7 @@ Not necessary but an eyecandy to look at!
:ensure t
:config
(setq flycheck-global-modes '(not org-mode))
+ (setq flycheck-display-errors-function nil)
(add-hook 'after-init-hook #'global-flycheck-mode))
#+end_src
@@ -906,6 +968,23 @@ Not necessary but an eyecandy to look at!
(global-flycheck-eglot-mode 1))
#+end_src
+** sideline-flycheck
+
+#+begin_src emacs-lisp
+(use-package sideline
+ :ensure t
+ :hook (flycheck-mode . sideline-mode)
+ :config
+ (setq sideline-delay 0.001)
+ :custom
+ (sideline-backends-right '(sideline-flycheck))
+ (sideline-display-backend-name t))
+
+(use-package sideline-flycheck
+ :ensure t
+ :hook (flycheck-mode . sideline-flycheck-setup))
+#+end_src
+
* xref
#+begin_src emacs-lisp
@@ -926,23 +1005,26 @@ Not necessary but an eyecandy to look at!
(setq org-directory "~/org/")
(use-package org
:ensure nil
+ :custom
+ (org-list-demote-modify-bullet '(("+" . "-") ("-" . "+")))
:config
(require 'org-tempo)
(custom-set-faces
- '(org-document-title ((t (:height 1.6))))
- '(outline-1 ((t (:height 1.25))))
- '(outline-2 ((t (:height 1.2))))
- '(outline-3 ((t (:height 1.2))))
- '(outline-4 ((t (:height 1.2))))
+ '(org-document-title ((t (:height 1.5))))
+ '(outline-1 ((t (:height 1.5))))
+ '(outline-2 ((t (:height 1.4))))
+ '(outline-3 ((t (:height 1.3))))
+ '(outline-4 ((t (:height 1.25))))
'(outline-5 ((t (:height 1.2))))
- '(outline-6 ((t (:height 1.2))))
- '(outline-7 ((t (:height 1.2))))
- '(outline-8 ((t (:height 1.2))))
- '(outline-9 ((t (:height 1.2)))))
+ '(outline-6 ((t (:height 1.175))))
+ '(outline-7 ((t (:height 1.0))))
+ '(outline-8 ((t (:height 1.0))))
+ '(outline-9 ((t (:height 1.0)))))
(setq org-startup-folded 'overview)
- (setq org-adapt-indentation t
+ (setq
+ ;; org-adapt-indentation t
;; org-time-stamp-rounding-minutes '(5 5)
org-return-follows-link t
org-hide-leading-stars t
@@ -960,7 +1042,7 @@ Not necessary but an eyecandy to look at!
org-insert-heading-respect-content t)
(add-hook 'org-mode-hook 'variable-pitch-mode)
- (add-hook 'org-mode-hook 'org-indent-mode)
+ ;; (add-hook 'org-mode-hook 'org-indent-mode)
(add-hook 'org-mode-hook 'visual-line-mode)
(add-hook 'org-mode-hook (lambda () (electric-indent-local-mode -1)))
@@ -986,6 +1068,23 @@ Not necessary but an eyecandy to look at!
(advice-add 'org-read-date :around #'my-org-read-date-always-with-time)
#+end_src
+** org-crypt
+
+Encrypt org headings tagged with =:crypt:= using GPG. Entries are
+automatically encrypted before save and can be decrypted in-place with
+=M-x org-decrypt-entry= (or =org-decrypt-entries= for all).
+
+#+begin_src emacs-lisp
+(use-package org-crypt
+ :ensure nil
+ :after org
+ :config
+ (org-crypt-use-before-save-magic)
+ (setq org-crypt-key "1ED9D600A040D0AF193AAF30B877C0AC3B080FBB")
+ (setq org-tags-exclude-from-inheritance '("crypt"))
+ (add-hook 'org-mode-hook (lambda () (setq-local auto-save-default nil))))
+#+end_src
+
** org-appear
#+begin_src emacs-lisp
@@ -2416,21 +2515,21 @@ Timers that expired while Emacs was closed fire immediately."
** vertico-posframe
#+begin_src emacs-lisp
-(use-package vertico-posframe
- :ensure t
- :init
- (setq vertico-posframe-parameters '((left-fringe . 12) ;; Fringes
- (right-fringe . 12)
- (accept-focus . t)))
- ;; (undecorated . nil) ;; Rounded frame
+;; (use-package vertico-posframe
+;; :ensure t
+;; :init
+;; (setq vertico-posframe-parameters '((left-fringe . 12) ;; Fringes
+;; (right-fringe . 12)
+;; (accept-focus . t)))
+;; ;; (undecorated . nil) ;; Rounded frame
- :config
- (vertico-posframe-mode 1)
- (setq vertico-posframe-width 96 ;; Narrow frame
- vertico-posframe-height vertico-count ;; Default height
- ;; Don't create posframe for these commands
- vertico-multiform-commands '((consult-line (:not posframe))
- (consult-ripgrep (:not posframe)))))
+;; :config
+;; (vertico-posframe-mode 1)
+;; (setq vertico-posframe-width 96 ;; Narrow frame
+;; vertico-posframe-height vertico-count ;; Default height
+;; ;; Don't create posframe for these commands
+;; vertico-multiform-commands '((consult-line (:not posframe))
+;; (consult-ripgrep (:not posframe)))))
#+end_src
** corfu
@@ -2441,7 +2540,7 @@ Timers that expired while Emacs was closed fire immediately."
:custom
(corfu-cycle t)
(corfu-auto t)
- (corfu-auto-delay 0.2)
+ (corfu-auto-delay 0.001)
(corfu-auto-prefix 2)
:init
(global-corfu-mode)
@@ -2515,57 +2614,9 @@ Timers that expired while Emacs was closed fire immediately."
"\\`\\*Async-native-compile-log\\*\\'")))
#+end_src
-* markdown-mode
-
-#+begin_src emacs-lisp
-(use-package markdown-mode
- :ensure t
- :hook (markdown-mode . nb/markdown-unhighlight)
- :init
- (setq-default abbrev-mode t)
- :config
- (defvar nb/current-line '(0 . 0)
- "(start . end) of current line in current buffer")
- (make-variable-buffer-local 'nb/current-line)
-
- (defun nb/unhide-current-line (limit)
- "Font-lock function"
- (let ((start (max (point) (car nb/current-line)))
- (end (min limit (cdr nb/current-line))))
- (when (< start end)
- (remove-text-properties start end
- '(invisible t display "" composition ""))
- (goto-char limit)
- t)))
-
- (defun nb/refontify-on-linemove ()
- "Post-command-hook"
- (let* ((start (line-beginning-position))
- (end (line-beginning-position 2))
- (needs-update (not (equal start (car nb/current-line)))))
- (setq nb/current-line (cons start end))
- (when needs-update
- ;; FIX: Verwende jit-lock-refontify statt font-lock-fontify-block
- (jit-lock-refontify start end))))
-
- (defun nb/markdown-unhighlight ()
- "Enable markdown concealling"
- (interactive)
- (markdown-toggle-markup-hiding 'toggle)
- (font-lock-add-keywords nil '((nb/unhide-current-line)) t)
- ;; FIX: Stelle sicher dass jit-lock aktiv ist
- (jit-lock-register #'font-lock-fontify-region)
- (add-hook 'post-command-hook #'nb/refontify-on-linemove nil t))
-
- :custom-face
- (markdown-header-delimiter-face ((t (:foreground "#616161" :height 0.9))))
- (markdown-header-face-1 ((t (:height 1.6 :foreground "#A3BE8C" :weight extra-bold :inherit markdown-header-face))))
- (markdown-header-face-2 ((t (:height 1.4 :foreground "#EBCB8B" :weight extra-bold :inherit markdown-header-face))))
- (markdown-header-face-3 ((t (:height 1.2 :foreground "#D08770" :weight extra-bold :inherit markdown-header-face))))
- (markdown-header-face-4 ((t (:height 1.15 :foreground "#BF616A" :weight bold :inherit markdown-header-face))))
- (markdown-header-face-5 ((t (:height 1.1 :foreground "#b48ead" :weight bold :inherit markdown-header-face))))
- (markdown-header-face-6 ((t (:height 1.05 :foreground "#5e81ac" :weight semi-bold :inherit markdown-header-face)))))
-#+end_src
+#+begin_comment
+markdown-mode moved before eca — see section before eca block
+#+end_comment
* treesit-auto
@@ -2620,7 +2671,9 @@ completion-category-overrides '((file (styles partial-completion))))) ;; Customi
(use-package marginalia
:ensure t
:hook
- (after-init . marginalia-mode))
+ (after-init . marginalia-mode)
+ :config
+ (setq marginalia-align 'center))
#+end_src
* programming
@@ -2722,10 +2775,7 @@ Because I have to and not want to.
:config
(with-eval-after-load 'eglot
(add-to-list 'eglot-server-programs
- '(python-mode . ("rass" "python")))))
-
-
-
+ '(python-mode . ("rass" "--" "pyrefly" "lsp" "--" "ruff" "server")))))
#+end_src
*** pyvenv
@@ -2799,7 +2849,7 @@ Vue files use =web-mode= with the =rass vuetail= preset (=vue-language-server= +
(setq js-indent-level 2)
(with-eval-after-load 'eglot
(add-to-list 'eglot-server-programs
- '(js-mode . ("rass" "tslint")))))
+ '(js-mode . ("rass" "--" "typescript-language-server" "--stdio" "--" "vscode-eslint-language-server" "--stdio")))))
#+end_src
*** typescript-ts-mode
@@ -2817,7 +2867,7 @@ Requires tree-sitter grammars: =M-x treesit-install-language-grammar RET typescr
:config
(with-eval-after-load 'eglot
(add-to-list 'eglot-server-programs
- '((typescript-ts-mode tsx-ts-mode) . ("rass" "tslint")))))
+ '(js-mode . ("rass" "--" "typescript-language-server" "--stdio" "--" "vscode-eslint-language-server" "--stdio")))))
#+end_src
*** web-mode (Vue)
@@ -3018,17 +3068,17 @@ Requires tree-sitter grammars: =M-x treesit-install-language-grammar RET typescr
* visual-fill-column
#+begin_src emacs-lisp
-(use-package visual-fill-column
- :ensure t
- :hook ((text-mode . visual-line-mode) ;; Soft-Wrapping aktivieren
- (text-mode . visual-fill-column-mode)) ;; Das Zentrieren aktivieren
- :custom
- (visual-fill-column-width 110) ;; Maximale Breite des Textes (statt 0.67 relativ)
- (visual-fill-column-center-text nil)
- (visual-fill-column-enable-sensible-window-split t)
- :config
- (when (display-graphic-p)
- (setq-default visual-fill-column-center-text t)))
+;; (use-package visual-fill-column
+;; :ensure t
+;; :hook ((text-mode . visual-line-mode) ;; Soft-Wrapping aktivieren
+;; (text-mode . visual-fill-column-mode)) ;; Das Zentrieren aktivieren
+;; :custom
+;; (visual-fill-column-width 110) ;; Maximale Breite des Textes (statt 0.67 relativ)
+;; (visual-fill-column-center-text nil)
+;; (visual-fill-column-enable-sensible-window-split t)
+;; :config
+;; (when (display-graphic-p)
+;; (setq-default visual-fill-column-center-text t)))
#+end_src
* diff-hl
@@ -3955,6 +4005,29 @@ every =emacsclient -c= frame gets its own set of perspectives.
(desc (tmr-mode-line--format-description timer)))
(concat remaining desc)))
+ (maple-modeline-define-segment mu4e-mail
+ :defines (mu4e-alert-mode-line)
+ :functions (mu4e-alert-view-unread-mails)
+ :if (and (bound-and-true-p mu4e-alert-mode-line)
+ (stringp mu4e-alert-mode-line)
+ (not (string-empty-p (string-trim mu4e-alert-mode-line))))
+ :format
+ (let* ((raw mu4e-alert-mode-line)
+ ;; Extract the count number from the mode-line string (e.g. " [5] ")
+ (count-str (if (string-match "\\[\\([0-9]+\\)\\]" raw)
+ (match-string 1 raw)
+ (string-trim raw))))
+ (concat
+ (maple-modeline--concat-or
+ (maple-modeline--icon 'mdicon "nf-md-email" face)
+ "Mail")
+ " " (propertize count-str
+ 'face face
+ 'mouse-face 'mode-line-highlight
+ 'help-echo "View unread emails"
+ 'local-map (make-mode-line-mouse-map
+ 'mouse-1 'mu4e-alert-view-unread-mails)))))
+
(maple-modeline-define my-custom-style
:left ((evil :left (bar :left ""))
macro
@@ -3966,6 +4039,7 @@ every =emacsclient -c= frame gets its own set of perspectives.
:right (narrow
org-clock-task
tmr-timer
+ mu4e-mail
python
my-modeline-time
process
@@ -3979,6 +4053,7 @@ every =emacsclient -c= frame gets its own set of perspectives.
version-control)
:right (org-clock-task
tmr-timer
+ mu4e-mail
position))
(setq maple-modeline-style
@@ -4032,9 +4107,9 @@ every =emacsclient -c= frame gets its own set of perspectives.
(blink-cursor-mode 0)
(setq-default cursor-type 'box)
-(defvar cashmere/font-height 180)
+(defvar cashmere/font-height 200)
-(set-face-attribute 'default nil :family "Maple Mono NF" :weight 'regular :height cashmere/font-height)
+(set-face-attribute 'default nil :family "Hack Nerd Font" :weight 'regular :height cashmere/font-height)
(set-face-attribute 'fixed-pitch nil :family "RobotoMono Nerd Font" :weight 'regular)
(set-face-attribute 'variable-pitch nil :family "Poppins" :weight 'regular :height 1.1)
@@ -5115,6 +5190,8 @@ every =emacsclient -c= frame gets its own set of perspectives.
:config
(setq mu4e-mu-binary (executable-find "mu"))
+ (setq mu4e-split-view 'vertical)
+ (setq mu4e-thread-mode t)
(setq mu4e-maildir "~/Mails")
(setq mu4e-get-mail-command (concat (executable-find "mbsync") " -a"))
(setq mu4e-update-interval 300)
@@ -5176,6 +5253,42 @@ every =emacsclient -c= frame gets its own set of perspectives.
(add-hook 'message-send-mail-hook 'mu4e-set-msmtp-account))
#+end_src
+** mu4e-alerts
+
+#+begin_src emacs-lisp
+(use-package mu4e-alert
+ :ensure t
+ :after mu4e
+ :config
+ ;; Use libnotify for desktop notifications (notify-send / swaync)
+ (mu4e-alert-set-default-style 'libnotify)
+
+ ;; Interesting mail query: unread, exclude trash and sent folders
+ (setq mu4e-alert-interesting-mail-query
+ (concat "flag:unread AND NOT flag:trashed"
+ " AND NOT maildir:\"/autistici/Sent\""
+ " AND NOT maildir:\"/cashmere/cashmere/Sent\""))
+
+ ;; Show both count and per-sender subject notifications
+ (setq mu4e-alert-email-notification-types '(count subjects))
+
+ ;; Group desktop notifications by maildir (per-account grouping)
+ (setq mu4e-alert-group-by :maildir)
+
+ ;; Disable X11 urgency hints (does not work on Wayland)
+ (setq mu4e-alert-set-window-urgency nil)
+
+ ;; Enable desktop notifications
+ (mu4e-alert-enable-notifications)
+
+ ;; Enable mode-line data updates (populates mu4e-alert-mode-line variable).
+ ;; We strip the default global-mode-string entry afterwards since we use
+ ;; a custom maple-modeline segment instead.
+ (mu4e-alert-enable-mode-line-display)
+ (setq global-mode-string
+ (delete '(:eval mu4e-alert-mode-line) global-mode-string)))
+#+end_src
+
* color-tools
this package provides the ability to display rgb and hex colors.
@@ -5370,6 +5483,39 @@ this package provides the ability to display rgb and hex colors.
"e T r" '(tab-recent :wk "recent tab")))
#+end_src
+* arrow.el
+
+#+begin_src emacs-lisp
+(use-package arrow
+ :ensure t
+ :elpaca (arrow :host github :repo "vmargb/arrow.el")
+ :config
+ (setq arrow-mode 1))
+#+end_src
+
+* colorful-mode
+
+#+begin_src emacs-lisp
+(use-package colorful-mode
+ ;; :diminish
+ :ensure t ; Optional
+ :custom
+ (colorful-use-prefix t)
+ (colorful-only-strings 'only-prog)
+ (css-fontify-colors nil)
+ :config
+ (global-colorful-mode t)
+ (add-to-list 'global-colorful-modes 'helpful-mode))
+#+end_src
+
+
+* plz
+
+#+begin_src emacs-lisp
+(use-package plz
+ :ensure t)
+#+end_src
+
* provide init
#+begin_src emacs-lisp