diff options
| author | cashmere <cashmere@autistici.org> | 2025-10-11 04:49:10 +0200 |
|---|---|---|
| committer | cashmere <cashmere@autistici.org> | 2025-10-11 04:49:10 +0200 |
| commit | 27ceb78dd18b97a71fe73758bb81818e92ae7c78 (patch) | |
| tree | 1b683e67a6877643bc164ac02b3193f66092b50a | |
| parent | baa0a52c5f4bf22b44bb22071d57f73551db094d (diff) | |
| download | emacs-27ceb78dd18b97a71fe73758bb81818e92ae7c78.tar.gz | |
backup
| -rw-r--r-- | config.el | 373 | ||||
| -rw-r--r-- | config.org | 266 | ||||
| -rw-r--r-- | early-init.el | 1 | ||||
| -rw-r--r-- | init.el | 8 |
4 files changed, 405 insertions, 243 deletions
@@ -1,19 +1,13 @@ ;;; config.el --- Emacs-Kick --- A feature rich Emacs config for (neo)vi(m)mers -*- lexical-binding: t; -*- ;; (setenv "LSP_USE_PLISTS" "true") -(setq gc-cons-threshold #x40000000) - -;; (setq read-process-output-max (* 1024 1024 4)) - -;; (setq package-enable-at-startup nil) - -(set-language-environment "UTF-8") -(setq locale-coding-system 'utf-8) -(prefer-coding-system 'utf-8) -(set-default-coding-systems 'utf-8) -(set-terminal-coding-system 'utf-8) -(set-keyboard-coding-system 'utf-8) -(set-selection-coding-system 'utf-8) +;; (setq debug-on-error '(wrong-type-argument)) +;; (setq gc-cons-threshold #x40000000) +;; (setq gc-cons-threshold 50000000) +;; (setenv "LSP_USE_PLISTS" "true") +(setq gc-cons-threshold 100000000) +(add-hook 'emacs-startup-hook + (lambda () (setq gc-cons-threshold (* 50 1024 1024)))) (setq create-lockfiles nil) (setq make-backup-files nil) @@ -28,16 +22,13 @@ (setq kept-new-versions 5) (setq kept-old-versions 5) -(setq default-frame-alist - '((alpha-background . 90) - (undecorated . t))) - ;;; EMACS ;; This is biggest one. Keep going, plugins (oops, I mean packages) will be shorter :) (use-package emacs :straight nil :ensure nil :custom ;; Set custom variables to configure Emacs behavior. + (setq modify-coding-system-alist 'file "" 'utf-8) (column-number-mode t) ;; Display the column number in the mode line. (auto-save-default nil) ;; Disable automatic saving of buffers. (create-lockfiles nil) ;; Prevent the creation of lock files when editing. @@ -66,8 +57,6 @@ :hook ;; Add hooks to enable specific features in certain modes. (prog-mode . display-line-numbers-mode) (org-mode . display-line-numbers-mode) - ;; (org-mode . (lambda () (display-line-numbers-mode -1))) - :config (add-to-list 'custom-theme-load-path user-emacs-directory) @@ -150,40 +139,40 @@ ;; Note: I have left some commented-out code below that may facilitate your ;; Emacs journey later on. These configurations can be useful for displaying ;; other types of buffers in side windows, allowing for a more organized workspace. -(use-package window - :straight nil - :ensure nil ;; This is built-in, no need to fetch it. - :custom - (display-buffer-alist - '( - ;; ("\\*.*e?shell\\*" - ;; (display-buffer-in-side-window) - ;; (window-height . 0.25) - ;; (side . bottom) - ;; (slot . -1)) + (use-package window + :straight nil + :ensure nil ;; This is built-in, no need to fetch it. + :custom + (display-buffer-alist + '( + ;; ("\\*.*e?shell\\*" + ;; (display-buffer-in-side-window) + ;; (window-height . 0.25) + ;; (side . bottom) + ;; (slot . -1)) - ("\\*\\(Backtrace\\|Warnings\\|Compile-Log\\|[Hh]elp\\|Messages\\|Bookmark List\\|Ibuffer\\|Occur\\|eldoc.*\\)\\*" - (display-buffer-in-side-window) - (window-height . 0.25) - (side . bottom) - (slot . 0)) + ("\\*\\(Backtrace\\|Warnings\\|Compile-Log\\|[Hh]elp\\|Messages\\|Bookmark List\\|Ibuffer\\|Occur\\|eldoc.*\\)\\*" + (display-buffer-in-side-window) + (window-height . 0.25) + (side . bottom) + (slot . 0)) - ;; Example configuration for the LSP help buffer, - ;; keeps it always on bottom using 25% of the available space: - ("\\*\\(lsp-help\\)\\*" - (display-buffer-in-side-window) - (window-height . 0.25) - (side . bottom) - (slot . 0)) + ;; Example configuration for the LSP help buffer, + ;; keeps it always on bottom using 25% of the available space: + ("\\*\\(lsp-help\\)\\*" + (display-buffer-in-side-window) + (window-height . 0.25) + (side . bottom) + (slot . 0)) - ;; Configuration for displaying various diagnostic buffers on - ;; bottom 25%: - ("\\*\\(Flymake diagnostics\\|xref\\|ivy\\|Swiper\\|Completions\\)" - (display-buffer-in-side-window) - (window-height . 0.25) - (side . bottom) - (slot . 1)) - ))) + ;; Configuration for displaying various diagnostic buffers on + ;; bottom 25%: + ("\\*\\(Flymake diagnostics\\|xref\\|ivy\\|Swiper\\|Completions\\)" + (display-buffer-in-side-window) + (window-height . 0.25) + (side . bottom) + (slot . 1)) + ))) (use-package dired :straight nil @@ -282,9 +271,9 @@ (use-package eldoc :straight nil :ensure nil ;; This is built-in, no need to fetch it. - :after eglot + :after lsp-mode :config - (setq eldoc-idle-delay 0.0001) ;; Automatically fetch doc help + (setq eldoc-idle-delay 0.001) ;; Automatically fetch doc help (setq eldoc-echo-area-use-multiline-p t) ;; We use the "K" floating help instead ;; set to t if you want docs on the echo area (setq eldoc-help-at-pt t) @@ -292,6 +281,19 @@ :init (global-eldoc-mode)) +(use-package eldoc-box + :ensure t + :straight t + :defer t + :config + (setq eldoc-box-clear-with-C-g t) + (setq eldoc-box-only-multiline-doc nil) + (setq eldoc-box-frame-parameters + '((internal-border-width . 2) + (border-width . 1) + (left-fringe . 8) + (right-fringe . 8)))) + (use-package flymake :straight nil :ensure nil ;; This is built-in, no need to fetch it. @@ -302,6 +304,10 @@ '((error "!»" compilation-error) (warning "»" compilation-warning) (note "»" compilation-info)))) +(setq trusted-content + '("~/.emacs.d/config.el" + "~/.emacs.d/init.el")) + (use-package xref :straight nil :ensure nil) @@ -369,7 +375,6 @@ (use-package org-modern :ensure t - :straight t ) (with-eval-after-load 'org (global-org-modern-mode)) @@ -383,7 +388,7 @@ org-agenda-remove-tags t) (use-package org-super-agenda - :after org + :defer t :config (setq org-super-agenda-header-prefix "\n ") ;; Hide the thin width char glyph @@ -438,8 +443,7 @@ denote-directory (expand-file-name "~/org/"))) :ensure t) (use-package which-key - :straight nil - :ensure nil + :ensure t :defer t :hook (after-init . which-key-mode) @@ -486,6 +490,7 @@ denote-directory (expand-file-name "~/org/"))) ;; It integrates well with other completion frameworks like Vertico, enabling ;; features like previews and enhanced register management. It's useful for ;; navigating buffers, files, and xrefs with ease. + (use-package consult :ensure t :straight t @@ -493,8 +498,8 @@ denote-directory (expand-file-name "~/org/"))) :init (advice-add #'register-preview :override #'consult-register-window) - ;; (setq xref-show-xrefs-function #'consult-xref - ;; xref-show-definitions-function #'consult-xref) + (setq xref-show-xrefs-function #'consult-xref + xref-show-definitions-function #'consult-xref) :config (setq consult-buffer-filter @@ -622,18 +627,20 @@ completion-category-overrides '((file (styles partial-completion))))) ;; Customi (use-package typst-ts-mode :straight t :mode "\\.typ\\'" - :hook (typst-ts-mode . eglot-ensure) + ;; :hook (typst-ts-mode . eglot-ensure) :config :defer t - (with-eval-after-load 'eglot - (add-to-list 'eglot-server-programs - `(typst-ts-mode . ,(eglot-alternatives '("tinymist" "typst-lsp")))))) + ;; (with-eval-after-load 'eglot + ;; (add-to-list 'eglot-server-programs + ;; `(typst-ts-mode . ,(eglot-alternatives '("tinymist" "typst-lsp"))))) + ) (use-package rustic :ensure t :defer t - :custom - (rustic-lsp-client 'eglot)) + ;; :custom + ;; (rustic-lsp-client 'eglot) + ) ;; Make sure rustic gets activated in the org-src block and add the original file's source code. (defun my-read-file-to-string (file) @@ -666,45 +673,105 @@ completion-category-overrides '((file (styles partial-completion))))) ;; Customi (when (eq major-mode 'rustic-mode) (my-delete-hidden-text))) -(use-package eglot - :ensure nil - :straight nil - :hook ((rustic-mode . eglot-ensure) - (nix-mode . eglot-ensure) - (python-mode . eglot-ensure) - ;; (eglot-managed-mode . (lambda () (eldoc-mode -1))) - ) - :bind (:map eglot-mode-map - ("M-<return>" . eglot-code-actions) - ("C-M-." . xref-find-references) - ("C-c r" . eglot-rename)) - :config - (add-to-list 'eglot-server-programs - `(python-mode - . ,(eglot-alternatives '(("basedpyright-langserver" "--stdio") - ("pyright-langserver" "--stdio") - "jedi-language-server" - "pylsp")))) - (setq eldoc-echo-area-use-multiline-p nil - eglot-inlay-hints-mode -1) - (add-to-list 'eglot-server-programs '(nix-mode . ("nixd")))) +(use-package yasnippet + :ensure t + :after lsp-mode + :hook ((prog-mode . yas-minor-mode) + (org-mode . yas-minor-mode))) -(use-package eglot-booster -:straight ( eglot-booster :type git :host nil :repo "https://github.com/jdtsmith/eglot-booster") -:after eglot -:config (eglot-booster-mode)) +(use-package yasnippet-snippets + :ensure t + :after yasnippet) -(use-package consult-eglot - :straight t - :after (consult eglot)) +;; (use-package eglot +;; :ensure nil +;; :straight nil +;; :hook ((rustic-mode . eglot-ensure) +;; (nix-mode . eglot-ensure) +;; (python-mode . eglot-ensure) +;; (eglot-managed-mode . (lambda () (eglot-inlay-hints-mode -1))) +;; ) +;; :bind (:map eglot-mode-map +;; ("M-<return>" . eglot-code-actions) +;; ("C-M-." . xref-find-references) +;; ("C-c r" . eglot-rename)) +;; :config +;; (add-to-list 'eglot-server-programs +;; `(python-mode +;; . ,(eglot-alternatives '(("basedpyright-langserver" "--stdio") +;; ("pyright-langserver" "--stdio") +;; "jedi-language-server" +;; "pylsp")))) +;; (setq eldoc-echo-area-use-multiline-p nil) +;; (add-to-list 'eglot-server-programs '(nix-mode . ("nixd")))) -(use-package olivetti +;; (use-package consult-eglot +;; :straight t +;; :after (consult eglot)) +(use-package lsp-mode :ensure t - :defer t) + :straight t + :defer t + :hook (;; Replace XXX-mode with concrete major mode (e.g. python-mode) + (lsp-mode . lsp-enable-which-key-integration) ;; Integrate with Which Key + ((js-mode ;; Enable LSP for JavaScript + tsx-ts-mode ;; Enable LSP for TSX + typescript-ts-base-mode ;; Enable LSP for TypeScript + css-mode ;; Enable LSP for CSS + go-ts-mode ;; Enable LSP for Go + js-ts-mode ;; Enable LSP for JavaScript (TS mode) + prisma-mode ;; Enable LSP for Prisma + python-base-mode ;; Enable LSP for Python + ruby-base-mode ;; Enable LSP for Ruby + rust-ts-mode ;; Enable LSP for Rust + nix-mode + web-mode) . lsp-deferred)) ;; Enable LSP for Web (HTML) + :commands lsp + :custom + (lsp-keymap-prefix "C-c l") ;; Set the prefix for LSP commands. + (lsp-inlay-hint-enable nil) ;; Usage of inlay hints. + (lsp-completion-provider :none) ;; Disable the default completion provider. + (lsp-session-file (locate-user-emacs-file ".lsp-session")) ;; Specify session file location. + (lsp-log-io nil) ;; Disable IO logging for speed. + (lsp-idle-delay 0.5) ;; Set the delay for LSP to 0 (debouncing). + (lsp-keep-workspace-alive nil) ;; Disable keeping the workspace alive. + ;; Core settings + (lsp-enable-xref t) ;; Enable cross-references. + (lsp-auto-configure t) ;; Automatically configure LSP. + (lsp-enable-links nil) ;; Disable links. + (lsp-eldoc-enable-hover t) ;; Enable ElDoc hover. + (lsp-enable-file-watchers nil) ;; Disable file watchers. + (lsp-enable-folding nil) ;; Disable folding. + (lsp-enable-imenu t) ;; Enable Imenu support. + (lsp-enable-indentation nil) ;; Disable indentation. + (lsp-enable-on-type-formatting nil) ;; Disable on-type formatting. + (lsp-enable-suggest-server-download t) ;; Enable server download suggestion. + (lsp-enable-symbol-highlighting t) ;; Enable symbol highlighting. + (lsp-enable-text-document-color t) ;; Enable text document color. + ;; Modeline settings + (lsp-modeline-code-actions-enable nil) ;; Keep modeline clean. + (lsp-modeline-diagnostics-enable nil) ;; Use `flymake' instead. + (lsp-modeline-workspace-status-enable t) ;; Display "LSP" in the modeline when enabled. + (lsp-signature-doc-lines 1) ;; Limit echo area to one line. + (lsp-eldoc-render-all t) ;; Render all ElDoc messages. + ;; Completion settings + (lsp-completion-enable t) ;; Enable completion. + (lsp-completion-enable-additional-text-edit t) ;; Enable additional text edits for completions. + (lsp-enable-snippet nil) ;; Disable snippets + (lsp-completion-show-kind t) ;; Show kind in completions. + ;; Lens settings + (lsp-lens-enable t) ;; Enable lens support. + ;; Headerline settings + (lsp-headerline-breadcrumb-enable-symbol-numbers nil) ;; Enable symbol numbers in the headerline. + (lsp-headerline-breadcrumb-enable nil) + ;; (lsp-headerline-arrow "▶") ;; Set arrow for headerline. + (lsp-headerline-breadcrumb-enable-diagnostics nil) ;; Disable diagnostics in headerline. + (lsp-headerline-breadcrumb-icons-enable nil) ;; Disable icons in breadcrumb. + ;; Semantic settings + (lsp-semantic-tokens-enable nil)) ;; Disable semantic tokens. -(use-package eldoc-box +(use-package olivetti :ensure t - :straight t :defer t) (use-package diff-hl @@ -810,8 +877,8 @@ completion-category-overrides '((file (styles partial-completion))))) ;; Customi (define-key evil-inner-text-objects-map "b" 'evil-textobj-anyblock-inner-block) (define-key evil-outer-text-objects-map "b" 'evil-textobj-anyblock-a-block) - (define-key evil-inner-text-objects-map "q" 'evil-textobj-anyblock-inner-quote) - (define-key evil-outer-text-objects-map "q" 'evil-textobj-anyblock-a-quote) + ;; (define-key evil-inner-text-objects-map "q" 'evil-textobj-anyblock-inner-quote) + ;; (define-key evil-outer-text-objects-map "q" 'evil-textobj-anyblock-a-quote) (setq evil-textobj-anyblock-blocks '(("(" . ")") @@ -819,6 +886,29 @@ completion-category-overrides '((file (styles partial-completion))))) ;; Customi ("\\[" . "\\]") ("<" . ">")))) +(evil-define-text-object my-evil-textobj-anyblock-inner-quote + (count &optional beg end type) + "Select the closest outer quote." + (let ((evil-textobj-anyblock-blocks + '(("'" . "'") + ("\"" . "\"") + ("`" . "'") + ("“" . "”")))) + (evil-textobj-anyblock--make-textobj beg end type count nil))) + +(evil-define-text-object my-evil-textobj-anyblock-a-quote + (count &optional beg end type) + "Select the closest outer quote." + (let ((evil-textobj-anyblock-blocks + '(("'" . "'") + ("\"" . "\"") + ("`" . "'") + ("“" . "”")))) + (evil-textobj-anyblock--make-textobj beg end type count t))) + +(define-key evil-inner-text-objects-map "q" 'my-evil-textobj-anyblock-inner-quote) +(define-key evil-outer-text-objects-map "q" 'my-evil-textobj-anyblock-a-quote) + (use-package avy :ensure t :straight t @@ -1143,9 +1233,9 @@ mode-line-buffer-identification (defvar cashmere/font-height 170) -(when (member "Maple Mono NF" (font-family-list)) - (set-face-attribute 'default nil :font "Maple Mono NF" :height cashmere/font-height) - (set-face-attribute 'fixed-pitch nil :family "Maple Mono NF" :height cashmere/font-height)) +(when (member "Fragment Mono" (font-family-list)) + (set-face-attribute 'default nil :font "Fragment Mono" :height cashmere/font-height) + (set-face-attribute 'fixed-pitch nil :family "Fragment Mono" :height cashmere/font-height)) (when (member "Maple Mono NF" (font-family-list)) (set-face-attribute 'variable-pitch nil :family "Maple Mono NF" :height cashmere/font-height)) @@ -1274,6 +1364,14 @@ mode-line-buffer-identification :ensure t :defer t) +(defun my/lsp-describe-and-jump () + "Show hover documentation and jump to *lsp-help* buffer." + (interactive) + (lsp-describe-thing-at-point) + (let ((help-buffer "*lsp-help*")) + (when (get-buffer help-buffer) + (switch-to-buffer-other-window help-buffer)))) + (use-package pdf-tools :ensure t :magic ("%PDF" . pdf-view-mode) @@ -1281,13 +1379,12 @@ mode-line-buffer-identification (pdf-tools-install :no-query) :hook (pdf-view-mode . (lambda () (display-line-numbers-mode -1)))) -;; (setq ) - (my-leader + "SPC" '(projectile-switch-project :wk "switch project") "sp" '(consult-ripgrep :wk "search project") "/" '(consult-line :wk "search buffer") "." '(find-file :wk "find file") - "," '(bufler-switch-buffer :wk "switch buffer") + "," '(consult-buffer :wk "switch buffer") ":" (lambda () (interactive) (execute-extended-command nil)) "d" '(:ignore t :wk "denote") @@ -1326,7 +1423,7 @@ mode-line-buffer-identification "g" '(:ignore t :wk "git/goto") "gg" '(magit-status :wk "status") "gl" '(magit-log-current :wk "log") - "gd" '(xref-find-definitions :wk "go to definition") ; sowohl hier als auch unter code + "gd" '(xref-find-definitions :wk "go to definition") "gs" '(magit-status :wk "status") "gb" '(vc-annotate :wk "blame") @@ -1348,17 +1445,17 @@ mode-line-buffer-identification "wo" '(delete-other-windows :wk "delete others") "c" '(:ignore t :wk "code") - "ca" '(eglot-code-actions :wk "code actions") - "cd" '(xref-find-definitions :wk "go to definition") ; sowohl hier als auch unter g - "cD" '(xref-find-references :wk "find references") - "cr" '(eglot-rename :wk "lsp rename") - "ch" '(eglot-help-at-point :wk "help at point") - "cf" '(eglot-format :wk "format") - "ci" '(eglot-find-implementation :wk "implementation") - "ct" '(eglot-find-typeDefinition :wk "type definition") - "cs" '(consult-eglot-symbols :wk "workspace symbols") - "cS" '(eglot-shutdown :wk "shutdown lsp") - "cR" '(eglot-reconnect :wk "restart lsp") + "ca" '(lsp-code-action :wk "code actions") + ;; "cd" '(xref-find-definitions :wk "go to definition") + ;; "cD" '(xref-find-references :wk "find references") + "cr" '(lsp-rename :wk "lsp rename") + ;; "ch" '(eglot-help-at-point :wk "help at point") + "cf" '(lsp-format-buffer :wk "format") + ;; "ci" '(eglot-find-implementation :wk "implementation") + ;; "ct" '(eglot-find-typeDefinition :wk "type definition") + ;; "cs" '(consult-eglot-symbols :wk "workspace symbols") + ;; "cS" '(eglot-shutdown :wk "shutdown lsp") + ;; "cR" '(eglot-reconnect :wk "restart lsp") "m" '(:ignore t :wk "mode") "mp" (list (lambda () @@ -1376,6 +1473,34 @@ mode-line-buffer-identification "u" '(undo-tree-visualize :wk "undo tree") "P" '(consult-yank-from-kill-ring :wk "paste history")) +;; (defun my/evil-eldoc-box-lookup () +;; "Show documentation using eldoc-box." +;; (interactive) +;; (cond +;; ((and (fboundp 'eglot-managed-p) (eglot-managed-p)) +;; (eldoc-box-help-at-point)) +;; (t +;; (call-interactively 'describe-symbol)))) + +(general-def 'normal 'override + "K" 'my/lsp-describe-and-jump) + +(defun my/ibuffer-smart () + (interactive) + (ibuffer) + (local-set-key (kbd "RET") + (lambda () + (interactive) + (ibuffer-visit-buffer) + (kill-buffer "*Ibuffer*"))) + (local-set-key (kbd "q") + (lambda () + (interactive) + (kill-buffer "*Ibuffer*")))) + +(my-leader + "bi" 'my/ibuffer-smart) + (my-local-leader "a" '(org-agenda :wk "org agenda") "t" '(eat :wk "terminal") @@ -1456,20 +1581,6 @@ mode-line-buffer-identification (general-def 'normal eat-mode-map "C-l" 'eat-reset) -;; (defun my-toggle-org-tree-indirect-buffer () -;; (interactive) -;; (if (and (boundp 'my-org-indirect-buffer) -;; my-org-indirect-buffer -;; (buffer-live-p my-org-indirect-buffer)) -;; (progn -;; (kill-buffer my-org-indirect-buffer) -;; (setq my-org-indirect-buffer nil)) -;; (org-tree-to-indirect-buffer) -;; (setq my-org-indirect-buffer (current-buffer)) -;; (delete-other-windows))) - -;; (evil-define-key 'normal 'org (kbd "z n") 'my-toggle-org-tree-indirect-buffer) - (define-key minibuffer-local-map [escape] 'abort-recursive-edit) (define-key minibuffer-local-ns-map [escape] 'abort-recursive-edit) (define-key minibuffer-local-completion-map [escape] 'abort-recursive-edit) @@ -1,3 +1,4 @@ +#+title: My Emacs configuration #+PROPERTY: header-args :tangle yes #+startup: content @@ -13,13 +14,12 @@ ;; (setq package-enable-at-startup nil) -(set-language-environment "UTF-8") -(setq locale-coding-system 'utf-8) -(prefer-coding-system 'utf-8) -(set-default-coding-systems 'utf-8) -(set-terminal-coding-system 'utf-8) -(set-keyboard-coding-system 'utf-8) -(set-selection-coding-system 'utf-8) +(prefer-coding-system 'utf-8-unix) +(set-default-coding-systems 'utf-8-unix) +(set-terminal-coding-system 'utf-8-unix) +(set-keyboard-coding-system 'utf-8-unix) +(setq default-buffer-file-coding-system 'utf-8-unix) +(setq-default buffer-file-coding-system 'utf-8-unix) (setq create-lockfiles nil) (setq make-backup-files nil) @@ -40,18 +40,6 @@ Let's define some visual optimizations to change the appearnce of Emacs. -** Opacity - -To change the appearance of Emacs, lets start with the opacity. Setting it to 90% changes Emacs to a whole new level, as the colors of your theme and your background image harmonize with each otherd. - -#+begin_src emacs-lisp - -(setq default-frame-alist - '((alpha-background . 90) - (undecorated . t))) - -#+end_src - * emacs #+begin_src emacs-lisp @@ -90,8 +78,6 @@ To change the appearance of Emacs, lets start with the opacity. Setting it to 90 :hook ;; Add hooks to enable specific features in certain modes. (prog-mode . display-line-numbers-mode) (org-mode . display-line-numbers-mode) - ;; (org-mode . (lambda () (display-line-numbers-mode -1))) - :config (add-to-list 'custom-theme-load-path user-emacs-directory) @@ -170,7 +156,7 @@ To change the appearance of Emacs, lets start with the opacity. Setting it to 90 :group 'appearance) #+end_src -* window +* Window #+begin_src emacs-lisp @@ -356,6 +342,23 @@ To change the appearance of Emacs, lets start with the opacity. Setting it to 90 (global-eldoc-mode)) #+end_src +** eldoc-box + +#+begin_src emacs-lisp +(use-package eldoc-box + :ensure t + :straight t + :defer t + :config + (setq eldoc-box-clear-with-C-g t) + (setq eldoc-box-only-multiline-doc nil) + (setq eldoc-box-frame-parameters + '((internal-border-width . 2) + (border-width . 1) + (left-fringe . 8) + (right-fringe . 8)))) +#+end_src + * flymake Disabled because nix is managing the flymake configuration. @@ -458,7 +461,6 @@ Disabled because nix is managing the flymake configuration. #+begin_src emacs-lisp (use-package org-modern :ensure t - :straight t ) (with-eval-after-load 'org (global-org-modern-mode)) @@ -482,7 +484,7 @@ We will start of with setting some sane configuration for org agenda. #+begin_src emacs-lisp (use-package org-super-agenda - :after org + :defer t :config (setq org-super-agenda-header-prefix "\n ") ;; Hide the thin width char glyph @@ -578,8 +580,7 @@ Denote fitself focused on the last versions to have a core for note taking and t #+begin_src emacs-lisp (use-package which-key - :straight nil - :ensure nil + :ensure t :defer t :hook (after-init . which-key-mode) @@ -645,8 +646,8 @@ Denote fitself focused on the last versions to have a core for note taking and t :init (advice-add #'register-preview :override #'consult-register-window) - ;; (setq xref-show-xrefs-function #'consult-xref - ;; xref-show-definitions-function #'consult-xref) + (setq xref-show-xrefs-function #'consult-xref + xref-show-definitions-function #'consult-xref) :config (setq consult-buffer-filter @@ -814,15 +815,15 @@ completion-category-overrides '((file (styles partial-completion))))) ;; Customi ** typst-mode #+begin_src emacs-lisp -(use-package typst-ts-mode - :straight t - :mode "\\.typ\\'" - :hook (typst-ts-mode . eglot-ensure) - :config - :defer t - (with-eval-after-load 'eglot - (add-to-list 'eglot-server-programs - `(typst-ts-mode . ,(eglot-alternatives '("tinymist" "typst-lsp")))))) + (use-package typst-ts-mode + :straight t + :mode "\\.typ\\'" + :hook (typst-ts-mode . eglot-ensure) + :config + ;; :defer t + (with-eval-after-load 'eglot + (add-to-list 'eglot-server-programs + `(typst-ts-mode . ,(eglot-alternatives '("tinymist" "typst-lsp")))))) #+end_src ** rust mode @@ -870,6 +871,20 @@ completion-category-overrides '((file (styles partial-completion))))) ;; Customi (my-delete-hidden-text))) #+end_src +*** yasnippet + +#+begin_src emacs-lisp +(use-package yasnippet + :ensure t + :after eglot + :hook ((prog-mode . yas-minor-mode) + (org-mode . yas-minor-mode))) + +(use-package yasnippet-snippets + :ensure t + :after yasnippet) +#+end_src + * eglot #+begin_src emacs-lisp @@ -877,25 +892,23 @@ completion-category-overrides '((file (styles partial-completion))))) ;; Customi :ensure nil :straight nil :hook ((rustic-mode . eglot-ensure) - (nix-mode . eglot-ensure) - (python-mode . eglot-ensure) - ;; (eglot-managed-mode . (lambda () (eldoc-mode -1))) - ) + (nix-mode . eglot-ensure) + (python-mode . eglot-ensure) + (eglot-managed-mode . (lambda () (eglot-inlay-hints-mode -1))) + ) :bind (:map eglot-mode-map - ("M-<return>" . eglot-code-actions) - ("C-M-." . xref-find-references) - ("C-c r" . eglot-rename)) + ("M-<return>" . eglot-code-actions) + ("C-M-." . xref-find-references) + ("C-c r" . eglot-rename)) :config (add-to-list 'eglot-server-programs - `(python-mode - . ,(eglot-alternatives '(("basedpyright-langserver" "--stdio") - ("pyright-langserver" "--stdio") - "jedi-language-server" - "pylsp")))) - (setq eldoc-echo-area-use-multiline-p nil - eglot-inlay-hints-mode -1) + `(python-mode + . ,(eglot-alternatives '(("basedpyright-langserver" "--stdio") + ("pyright-langserver" "--stdio") + "jedi-language-server" + "pylsp")))) + (setq eldoc-echo-area-use-multiline-p nil) (add-to-list 'eglot-server-programs '(nix-mode . ("nixd")))) - #+end_src ** eglot-booster @@ -923,15 +936,6 @@ completion-category-overrides '((file (styles partial-completion))))) ;; Customi :defer t) #+end_src -* eldoc - -#+begin_src emacs-lisp - (use-package eldoc-box - :ensure t - :straight t - :defer t) -#+end_src - * diff-hl #+begin_src emacs-lisp @@ -983,22 +987,22 @@ completion-category-overrides '((file (styles partial-completion))))) ;; Customi * general #+begin_src emacs-lisp - (use-package general - :straight t - :ensure t - :demand t - :config - (general-evil-setup) +(use-package general + :straight t + :ensure t + :demand t + :config + (general-evil-setup) - (general-create-definer my-leader - :states '(normal visual) - :keymaps 'override - :prefix "SPC") + (general-create-definer my-leader + :states '(normal visual) + :keymaps 'override + :prefix "SPC") - (general-create-definer my-local-leader - :states '(normal visual) - :keymaps 'override - :prefix ",")) + (general-create-definer my-local-leader + :states '(normal visual) + :keymaps 'override + :prefix ",")) #+end_src * evil @@ -1068,16 +1072,43 @@ completion-category-overrides '((file (styles partial-completion))))) ;; Customi (define-key evil-inner-text-objects-map "b" 'evil-textobj-anyblock-inner-block) (define-key evil-outer-text-objects-map "b" 'evil-textobj-anyblock-a-block) - (define-key evil-inner-text-objects-map "q" 'evil-textobj-anyblock-inner-quote) - (define-key evil-outer-text-objects-map "q" 'evil-textobj-anyblock-a-quote) + ;; (define-key evil-inner-text-objects-map "q" 'evil-textobj-anyblock-inner-quote) + ;; (define-key evil-outer-text-objects-map "q" 'evil-textobj-anyblock-a-quote) (setq evil-textobj-anyblock-blocks - '(("(" . ")") - ("{" . "}") - ("\\[" . "\\]") - ("<" . ">")))) + '(("(" . ")") + ("{" . "}") + ("\\[" . "\\]") + ("<" . ">")))) #+end_src +** add quotes + +#+begin_src emacs-lisp +(evil-define-text-object my-evil-textobj-anyblock-inner-quote + (count &optional beg end type) + "Select the closest outer quote." + (let ((evil-textobj-anyblock-blocks + '(("'" . "'") + ("\"" . "\"") + ("`" . "'") + ("“" . "”")))) + (evil-textobj-anyblock--make-textobj beg end type count nil))) + +(evil-define-text-object my-evil-textobj-anyblock-a-quote + (count &optional beg end type) + "Select the closest outer quote." + (let ((evil-textobj-anyblock-blocks + '(("'" . "'") + ("\"" . "\"") + ("`" . "'") + ("“" . "”")))) + (evil-textobj-anyblock--make-textobj beg end type count t))) + +(define-key evil-inner-text-objects-map "q" 'my-evil-textobj-anyblock-inner-quote) +(define-key evil-outer-text-objects-map "q" 'my-evil-textobj-anyblock-a-quote) +#+end_src + * avy #+begin_src emacs-lisp @@ -1680,17 +1711,16 @@ mode-line-buffer-identification :hook (pdf-view-mode . (lambda () (display-line-numbers-mode -1)))) #+end_src - * keybindings -** global leader (SPC) kill ring +** global leader #+begin_src emacs-lisp (my-leader "sp" '(consult-ripgrep :wk "search project") "/" '(consult-line :wk "search buffer") "." '(find-file :wk "find file") - "," '(bufler-switch-buffer :wk "switch buffer") + "," '(consult-buffer :wk "switch buffer") ":" (lambda () (interactive) (execute-extended-command nil)) "d" '(:ignore t :wk "denote") @@ -1780,6 +1810,51 @@ mode-line-buffer-identification "P" '(consult-yank-from-kill-ring :wk "paste history")) #+end_src +** evil lookup + +#+begin_src emacs-lisp +(defun my/evil-eldoc-box-lookup () + "Show documentation using eldoc-box." + (interactive) + (cond + ((and (fboundp 'eglot-managed-p) (eglot-managed-p)) + (eldoc-box-help-at-point)) + (t + (call-interactively 'describe-symbol)))) + +(general-def 'normal 'override + "K" 'my/evil-eldoc-box-lookup) +#+end_src + +** ibuffer + +#+begin_src emacs-lisp +(defun my/ibuffer-smart () + (interactive) + (ibuffer) + (local-set-key (kbd "RET") + (lambda () + (interactive) + (ibuffer-visit-buffer) + (kill-buffer "*Ibuffer*"))) + (local-set-key (kbd "q") + (lambda () + (interactive) + (kill-buffer "*Ibuffer*")))) + +(my-leader + "bi" 'my/ibuffer-smart) +#+end_src + +*** better display buffer + +#+begin_src +(add-to-list 'display-buffer-alist + '("\\*Ibuffer\\*" + (display-buffer-same-window) + (inhibit-same-window . nil))) +#+end_src + ** local leader (,) This is my own personal local leader configuration. @@ -1894,28 +1969,9 @@ Here we configure the keymaps for keymaps in normal state. "C-l" 'eat-reset) #+end_src -*** focus headline - - #+begin_src emacs-lisp - ;; (defun my-toggle-org-tree-indirect-buffer () - ;; (interactive) - ;; (if (and (boundp 'my-org-indirect-buffer) - ;; my-org-indirect-buffer - ;; (buffer-live-p my-org-indirect-buffer)) - ;; (progn - ;; (kill-buffer my-org-indirect-buffer) - ;; (setq my-org-indirect-buffer nil)) - ;; (org-tree-to-indirect-buffer) - ;; (setq my-org-indirect-buffer (current-buffer)) - ;; (delete-other-windows))) - - ;; (evil-define-key 'normal 'org (kbd "z n") 'my-toggle-org-tree-indirect-buffer) - #+end_src - ** minibuffer #+begin_src emacs-lisp - (define-key minibuffer-local-map [escape] 'abort-recursive-edit) (define-key minibuffer-local-ns-map [escape] 'abort-recursive-edit) (define-key minibuffer-local-completion-map [escape] 'abort-recursive-edit) @@ -1923,7 +1979,7 @@ Here we configure the keymaps for keymaps in normal state. (define-key minibuffer-local-isearch-map [escape] 'abort-recursive-edit) #+end_src -** scroll +** text scaling #+begin_src emacs-lisp (global-set-key (kbd "C-=") 'text-scale-increase) @@ -1933,5 +1989,5 @@ Here we configure the keymaps for keymaps in normal state. ** provide init #+begin_src emacs-lisp - (provide 'init) + (provide 'init) #+end_src diff --git a/early-init.el b/early-init.el index e69de29..512068a 100644 --- a/early-init.el +++ b/early-init.el @@ -0,0 +1 @@ +(setq package-enable-at-startup nil) @@ -1,6 +1,5 @@ ;; -*- lexical-binding: t; -*- -;; Bootstrap straight.el (bestehender Code beibehalten) (setq straight-check-for-modifications nil) (defvar bootstrap-version) (let ((bootstrap-file @@ -18,15 +17,10 @@ (eval-print-last-sexp))) (load bootstrap-file nil 'nomessage)) -;; Configure straight.el (straight-use-package '(project :type built-in)) (straight-use-package '(xref :type built-in)) (straight-use-package 'use-package) (setq straight-use-package-by-default t) -;; WICHTIG: Org vor org-babel-load-file laden -(straight-use-package 'org) - -;; Jetzt kann die literate config sicher geladen werden -(org-babel-load-file (expand-file-name "config.org" user-emacs-directory)) +(load (expand-file-name "config.el" user-emacs-directory)) |
