diff options
Diffstat (limited to 'config.org')
| -rw-r--r-- | config.org | 272 |
1 files changed, 212 insertions, 60 deletions
@@ -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 |
