summaryrefslogtreecommitdiff
path: root/config.org
diff options
context:
space:
mode:
authorcashmere <cashmere@autistici.org>2025-11-22 16:30:36 +0100
committercashmere <cashmere@autistici.org>2025-11-22 16:30:36 +0100
commitf29647a5c0a291309983597b613c485f3be26fcd (patch)
tree0b900864c135ebb7c0d5a7847db2fccc94dbae46 /config.org
parent1c2d3b9ecb6ea58c13b309767228a12a118ce310 (diff)
downloademacs-f29647a5c0a291309983597b613c485f3be26fcd.tar.gz
sync
Diffstat (limited to 'config.org')
-rw-r--r--config.org272
1 files changed, 212 insertions, 60 deletions
diff --git a/config.org b/config.org
index 8f22dd5..3d28ae3 100644
--- a/config.org
+++ b/config.org
@@ -1,7 +1,7 @@
#+title: config.org
#+date: [2025-10-20 Mon 08:33]
#+identifier: 20251020T083323
-#+PROPERTY: header-args :tangle yes
+#+PROPERTY: header-args
#+STARTUP: content
* early-init
@@ -34,6 +34,40 @@
(setq kept-old-versions 5)
#+end_src
+* emacs startuup speed
+
+#+begin_src emacs-lisp
+(defvar yy/cache-2 nil)
+
+(defun yy/load-cache ()
+ (setq yy/cache-2
+ (condition-case e
+ (car (read-from-string
+ (with-temp-buffer
+ (insert-file-contents
+ (file-name-concat user-emacs-directory "ycache.eld"))
+ (buffer-substring (point-min) (point-max)))))
+ (error nil))))
+ ;;(make-hash-table :test #'equal))))
+(yy/load-cache)
+
+(defun yy/load-path-filter (path file suffixes)
+ (if-let* ((ls (with-memoization (alist-get file yy/cache-2 nil nil #'equal)
+ (let ((res (load-path-filter-cache-directory-files path file suffixes)))
+ (if (eq res path) nil res)))))
+ ls path))
+
+(defun yy/write-cache ()
+ (interactive)
+ (when yy/cache-2
+ (with-temp-file (file-name-concat user-emacs-directory "ycache.eld")
+ (pp yy/cache-2 (current-buffer)))))
+
+(yy/load-cache)
+
+(setq load-path-filter-function #'yy/load-path-filter)
+#+end_src
+
* emacs
#+begin_src emacs-lisp
@@ -258,6 +292,69 @@
(message "centered-cursor on"))))
#+end_src
+* cursory
+
+#+begin_src emacs-lisp
+(use-package cursory
+ :ensure t
+ :demand t
+ :if (display-graphic-p)
+ :config
+ (setq cursory-presets
+ '((box
+ :cursor-color success ; will typically be green
+ :blink-cursor-interval 1.2)
+ (box-no-blink
+ :inherit box
+ :blink-cursor-mode -1)
+ (bar
+ :cursor-type (bar . 2)
+ :cursor-color error ; will typically be red
+ :blink-cursor-interval 0.8)
+ (bar-no-other-window
+ :inherit bar
+ :cursor-in-non-selected-windows nil)
+ (bar-no-blink
+ :inherit bar
+ :blink-cursor-mode -1)
+ (underscore
+ :cursor-color warning ; will typically be yellow
+ :cursor-type (hbar . 3)
+ :blink-cursor-interval 0.3
+ :blink-cursor-blinks 50)
+ (underscore-no-other-window
+ :inherit underscore
+ :cursor-in-non-selected-windows nil)
+ (underscore-thick
+ :inherit underscore
+ :cursor-type (hbar . 8)
+ :cursor-in-non-selected-windows (hbar . 3))
+ (t ; the default values
+ :cursor-color unspecified ; use the theme's original
+ :cursor-type box
+ :cursor-in-non-selected-windows hollow
+ :blink-cursor-mode 1
+ :blink-cursor-blinks 10
+ :blink-cursor-interval 0.2
+ :blink-cursor-delay 0.2)))
+
+ ;; I am using the default value of `cursory-latest-state-file'.
+
+ ;; Set last preset or fall back to desired style from
+ ;; `cursory-presets'. Alternatively, use the function
+ ;; `cursory-set-last-or-fallback' (can be added to the
+ ;; `after-init-hook'.
+ (cursory-set-preset (or (cursory-restore-latest-preset) 'box))
+
+ ;; Persist configurations between Emacs sessions. Also apply the
+ ;; :cursor-color again when swithcing to another theme.
+ (cursory-mode 1)
+ :bind
+ ;; We have to use the "point" mnemonic, because C-c c is often the
+ ;; suggested binding for `org-capture' and is the one I use as well.
+ ("C-c p" . cursory-set-preset))
+#+end_src
+
* clipetty
#+begin_src emacs-lisp
@@ -444,14 +541,15 @@ Not necessary but an eyecandy to look at!
("C-c ^ p" . smerge-previous))) ;; Move to the previous conflict.
#+end_src
-* gptel
+* ai
+
+** gptel
#+begin_src emacs-lisp
(use-package gptel
:ensure t ;; Install from MELPA if not present.
:defer t
:config
- ;; Define OpenRouter backend using gptel-make-openai with custom host and endpoint.
(setq my/openrouter-backend
(gptel-make-openai
"OpenRouter" ; Any name you want
@@ -459,7 +557,7 @@ Not necessary but an eyecandy to look at!
:endpoint "/api/v1/chat/completions"
:stream t
:key (lambda () (auth-source-pass-get 'secret "openrouter-api")) ; Retrieves from pass entry
- :models '(x-ai/grok-code-fast-1)))
+ :models '(anthropic/claude-haiku-4.5)))
;; Set backend, default mode, and list of backends.
(setq gptel-backend my/openrouter-backend)
@@ -467,17 +565,17 @@ Not necessary but an eyecandy to look at!
(setq gptel-backends (list my/openrouter-backend)))
#+end_src
-* COMMENT eldoc
+* eldoc
#+begin_src emacs-lisp
(use-package eldoc
:straight nil
:ensure t
:config
- (setq eldoc-idle-delay 0.001)
- (setq eldoc-echo-area-use-multiline-p 1)
+ (setq eldoc-idle-delay 0) ;; Automatically fetch doc help
+ (setq eldoc-echo-area-use-multiline-p nil) ;; We use the "K" floating help instead
+ ;; set to t if you want docs on the echo area
(setq eldoc-echo-area-display-truncation-message nil)
- (setq eldoc-echo-area-prefer-doc-buffer nil)
:init
(global-eldoc-mode))
#+end_src
@@ -487,17 +585,8 @@ Not necessary but an eyecandy to look at!
#+begin_src emacs-lisp
(use-package eldoc-box
:ensure t
- :hook (eglot-managed-mode . eldoc-box-hover-mode)
:config
- (setq eldoc-box-clear-with-C-g t)
- (setq eldoc-box-only-multiline-doc nil)
- (setq eldoc-box-max-pixel-width 800)
- (setq eldoc-box-max-pixel-height 400)
- (setq eldoc-box-frame-parameters
- '((internal-border-width . 2)
- (border-width . 1)
- (left-fringe . 8)
- (right-fringe . 8))))
+ :defer t)
#+end_src
* flymake
@@ -925,6 +1014,15 @@ Org Backend exporter for typst templates written and configured in org mode.
(setq org-export-with-broken-links t)
#+end_src
+** ox-pandoc
+
+#+begin_src emacs-lisp
+(use-package ox-pandoc
+ :ensure t
+ :after org
+ )
+#+end_src
+
* denote
Denote is objectively the best note taking extension, which you could install. It has a very easy to parse file naming scheme and suports not only org files. It has also transclusion inclusive! if you are interested, then check it out yourself.
@@ -934,8 +1032,10 @@ Denote is objectively the best note taking extension, which you could install. I
:ensure t
:hook (dired-mode . denote-dired-mode)
:config
- (setq denote-rename-buffer-mode 1
- denote-directory (expand-file-name "~/org/")))
+ (setq denote-rename-buffer-format "%t"
+ denote-buffer-name-prefix ""
+ denote-directory (expand-file-name "~/org/"))
+ (denote-rename-buffer-mode 1))
#+end_src
** denote-agenda
@@ -1207,6 +1307,39 @@ Some goodies for better integration with org files.
(consult-ripgrep (:not posframe)))))
#+end_src
+** corfu
+
+#+begin_src emacs-lisp
+(use-package corfu
+ :ensure t
+ :custom
+ ;; Optional customizations
+ ;; :custom
+ ;; (corfu-cycle t) ;; Enable cycling for `corfu-next/previous'
+ ;; (corfu-quit-at-boundary nil) ;; Never quit at completion boundary
+ ;; (corfu-quit-no-match nil) ;; Never quit, even if there is no match
+ ;; (corfu-preview-current nil) ;; Disable current candidate preview
+ ;; (corfu-preselect 'prompt) ;; Preselect the prompt
+ ;; (corfu-on-exact-match 'insert) ;; Configure handling of exact matches
+
+ ;; Enable Corfu only for certain modes. See also `global-corfu-modes'.
+ ;; :hook ((prog-mode . corfu-mode)
+ ;; (shell-mode . corfu-mode)
+ ;; (eshell-mode . corfu-mode))
+ (corfu-auto t)
+ (corfu-auto-delay 0.2)
+ (corfu-auto-prefix 2)
+ :init
+
+ ;; Recommended: Enable Corfu globally. Recommended since many modes provide
+ ;; Capfs and Dabbrev can be used globally (M-/). See also the customization
+ ;; variable `global-corfu-modes' to exclude certain modes.
+ ;; Enable optional extension modes:
+ ;; (corfu-history-mode)
+ ;; (corfu-popupinfo-mode)
+ (global-corfu-mode))
+#+end_src
+
* consult
#+begin_src emacs-lisp
@@ -1332,7 +1465,7 @@ completion-category-overrides '((file (styles partial-completion))))) ;; Customi
(eglot-inlay-hints-mode -1)))
(setq eglot-ignored-server-capabilities
- '(:inlayHintProvider :documentHighlightProvider)))
+ '(:inlayhintprovider :documenthighlightprovider)))
#+end_src
*** settings
@@ -1343,11 +1476,11 @@ completion-category-overrides '((file (styles partial-completion))))) ;; Customi
*** eglot booster
#+begin_src emacs-lisp
-(use-package eglot-booster
- :ensure t
- :straight ( eglot-booster :type git :host nil :repo "https://github.com/jdtsmith/eglot-booster")
- :after eglot
- :config (eglot-booster-mode))
+;; (use-package eglot-booster
+;; :ensure t
+;; :straight ( eglot-booster :type git :host nil :repo "https://github.com/jdtsmith/eglot-booster")
+;; :after eglot
+;; :config (eglot-booster-mode))
#+end_src
** typst-mode
@@ -1381,30 +1514,30 @@ completion-category-overrides '((file (styles partial-completion))))) ;; Customi
company is also required as an completion backend. besides that i really enjoy using company.
#+begin_src emacs-lisp
-(use-package company
- :straight t
- :hook (after-init . global-company-mode)
- :bind (:map company-active-map
- ("C-n" . company-select-next)
- ("C-p" . company-select-previous)
- ("C-j" . company-select-next-or-abort)
- ("C-k" . company-select-previous-or-abort)
- ("M-j" . company-select-next)
- ("M-k" . company-select-previous)
- ("<tab>" . company-complete-selection)
- ("TAB" . company-complete-selection))
- :config
- (setq company-minimum-prefix-length 1)
- (setq company-idle-delay 0.1)
- (setq company-show-numbers t)
- (setq company-tooltip-align-annotations t)
- (setq company-require-match nil)
- (setq company-backends '((company-capf :with company-yasnippet)
- company-files
- company-dabbrev-code
- ))
- (setq company-dabbrev-code-everywhere t)
- (setq company-dabbrev-code-ignore-case t))
+;; (use-package company
+;; :straight t
+;; :hook (after-init . global-company-mode)
+;; :bind (:map company-active-map
+;; ("C-n" . company-select-next)
+;; ("C-p" . company-select-previous)
+;; ("C-j" . company-select-next-or-abort)
+;; ("C-k" . company-select-previous-or-abort)
+;; ("M-j" . company-select-next)
+;; ("M-k" . company-select-previous)
+;; ("<tab>" . company-complete-selection)
+;; ("TAB" . company-complete-selection))
+;; :config
+;; (setq company-minimum-prefix-length 1)
+;; (setq company-idle-delay 0.1)
+;; (setq company-show-numbers t)
+;; (setq company-tooltip-align-annotations t)
+;; (setq company-require-match nil)
+;; (setq company-backends '((company-capf :with company-yasnippet)
+;; company-files
+;; company-dabbrev-code
+;; ))
+;; (setq company-dabbrev-code-everywhere t)
+;; (setq company-dabbrev-code-ignore-case t))
#+end_src
** nix mode
@@ -1552,6 +1685,15 @@ ily <3.
'(json-mode . ("vscode-json-language-server" "--stdio")))))
#+end_src
+** yaml-mode
+
+#+begin_src emacs-lisp
+(use-package yaml-mode
+ :ensure t
+ :mode "\\.ya?ml\\'"
+ :hook (yaml-mode . eglot-ensure))
+#+end_src
+
* vterm
#+begin_src emacs-lisp
@@ -2447,7 +2589,7 @@ ily <3.
* my/fns
#+begin_src emacs-lisp
-(setq-default olivetti-body-width 110)
+(setq-default olivetti-body-width 130)
(define-globalized-minor-mode my/global-olivetti-mode olivetti-mode
(lambda () (olivetti-mode 1)))
(my/centered-cursor)
@@ -2577,24 +2719,27 @@ ily <3.
(when (get-buffer help-buffer)
(switch-to-buffer-other-window help-buffer))))
+
(defun my/eldoc-and-jump ()
+ "Zeige Eldoc-Dokumentation manuell an."
(interactive)
(if (>= emacs-major-version 31)
(eldoc-box-help-at-point)
- (eldoc-doc-buffer))
- (when-let ((eldoc-win (get-buffer-window "*eldoc*")))
- (select-window eldoc-win)))
+ (progn
+ (eldoc-doc-buffer)
+ (when-let ((eldoc-win (get-buffer-window "*eldoc*")))
+ (select-window eldoc-win)))))
(evil-define-key 'normal 'global (kbd "K") #'my/eldoc-and-jump)
-(defun my/setup-eldoc-hover-keys ()
- (when (string-match-p "\\*eldoc\\*" (buffer-name))
- (evil-normalize-keymaps)
- (evil-local-set-key 'normal (kbd "q") 'quit-window)))
+;; (defun my/setup-eldoc-hover-keys ()
+;; (when (string-match-p "\\*eldoc\\*" (buffer-name))
+;; (evil-normalize-keymaps)
+;; (evil-local-set-key 'normal (kbd "q") 'quit-window)))
-(add-hook 'buffer-list-update-hook #'my/setup-eldoc-hover-keys)
+;; (add-hook 'buffer-list-update-hook #'my/setup-eldoc-hover-keys)
-(evil-define-key 'normal 'global (kbd "K") #'my/eldoc-and-jump)
+;; (evil-define-key 'normal 'global (kbd "K") #'my/eldoc-and-jump)
(defun my/format-buffer ()
(interactive)
@@ -2926,6 +3071,13 @@ ily <3.
(elfeed-org))
#+end_src
+** set default browser
+
+#+begin_src emacs-lisp
+(setq browse-url-browser-function 'browse-url-generic
+ browse-url-generic-program "qutebrowser")
+#+end_src
+
* mu4e
#+begin_src emacs-lisp