summaryrefslogtreecommitdiff
path: root/config.org
diff options
context:
space:
mode:
authorcashmere <cashmere@autistici.org>2026-08-08 11:46:18 +0200
committercashmere <cashmere@autistici.org>2026-08-08 11:46:18 +0200
commita92ab5a43ad9d44599ed27cf4354ed5673a3763a (patch)
tree0d8a60d09c96e0bde4102f647859d7903280c5ec /config.org
parentf637df6f11ac28fab15c5edad20d92396b736530 (diff)
downloademacs-a92ab5a43ad9d44599ed27cf4354ed5673a3763a.tar.gz
md: 2026-08-08T11:46:23+02:00
Diffstat (limited to 'config.org')
-rw-r--r--config.org194
1 files changed, 133 insertions, 61 deletions
diff --git a/config.org b/config.org
index 698fa26..09b0447 100644
--- a/config.org
+++ b/config.org
@@ -2414,6 +2414,22 @@ Auto switch silos (different workspaces/folders) based on preconfigured director
(advice-add 'denote-solo-switch :after #'my/denote-solo-sync-directory))
#+end_src
+* company-mode
+
+#+begin_src emacs-lisp :tangle yes
+(use-package company
+ :ensure t
+ :hook (after-init . global-company-mode)
+ :custom
+ (company-idle-delay 0)
+ (company-tooltip-idle-delay 0)
+ (company-minimum-prefix-length 2)
+ (company-require-match nil)
+ (company-frontends
+ '(company-pseudo-tooltip-unless-just-one-frontend
+ company-echo-metadata-frontend))
+ (company-backends '(company-capf)))
+#+end_src
* which-key
@@ -2427,22 +2443,6 @@ Auto switch silos (different workspaces/folders) based on preconfigured director
(which-key-idle-delay 0.3))
#+end_src
-** corfu
-
-#+begin_src emacs-lisp
-(use-package corfu
- :ensure t
- :custom
- (corfu-cycle t)
- (corfu-auto t)
- (corfu-auto-delay 0.2)
- (corfu-auto-prefix 2)
- :init
- (global-corfu-mode)
- (corfu-history-mode)
- (corfu-popupinfo-mode))
-#+end_src
-
*** cape
#+begin_src emacs-lisp
@@ -2488,19 +2488,6 @@ Auto switch silos (different workspaces/folders) based on preconfigured director
(setq prefix-help-command #'embark-prefix-help-command))
#+end_src
-** orderless
-
-#+begin_src emacs-lisp
-(use-package orderless
- :ensure t
- :defer t ;; Load Orderless on demand.
- :after vertico ;; Ensure Vertico is loaded before Orderless.
- :init
- (setq completion-styles '(orderless basic) ;; Set the completion styles.
-completion-category-defaults nil ;; Clear default category settings.
-completion-category-overrides '((file (styles partial-completion))))) ;; Customize file completion styles.
-#+end_src
-
* helm-mode
#+begin_src emacs-lisp
@@ -2514,6 +2501,7 @@ completion-category-overrides '((file (styles partial-completion))))) ;; Customi
(helm-recentf-fuzzy-match t)
(helm-move-to-line-cycle-in-source nil)
(helm-split-window-inside-p t)
+ (helm-autoresize-mode 1)
(helm-boring-buffer-regexp-list
'("\\` "
"\\`\\*helm"
@@ -2539,14 +2527,28 @@ completion-category-overrides '((file (styles partial-completion))))) ;; Customi
(global-set-key (kbd "M-x") 'helm-M-x)
#+end_src
-** helm-flx
+* helm-xref
#+begin_src emacs-lisp
-(use-package helm-flx
+(use-package helm-xref
:ensure t
- :after helm
- :config
- (helm-flx-mode +1))
+ :after helm)
+#+end_src
+
+* tags (citre)
+
+#+begin_src emacs-lisp
+(use-package citre
+ :ensure t
+ :defer t
+ :init
+ (require 'citre-config)
+ :custom
+ (citre-default-create-tags-file-location 'in-dir)
+ (citre-edit-ctags-options-manually nil)
+ (citre-auto-enable-citre-mode-modes '(prog-mode))
+ :bind (("C-c e" . citre-jump)
+ ("C-c u" . citre-update-this-tags-file)))
#+end_src
* programming
@@ -2610,8 +2612,8 @@ completion-category-overrides '((file (styles partial-completion))))) ;; Customi
(use-package nix-ts-mode
:ensure t
:mode "\\.nix\\'"
- :hook (nix-ts-mode . eglot-ensure)
:config
+ (modify-syntax-entry ?. "_" nix-ts-mode--syntax-table)
(with-eval-after-load 'eglot
(add-to-list 'eglot-server-programs
'(nix-ts-mode . ("nixd")))))
@@ -2623,6 +2625,36 @@ completion-category-overrides '((file (styles partial-completion))))) ;; Customi
(put 'eglot-workspace-configuration 'safe-local-variable #'listp)
#+end_src
+*** compilation enhancements
+
+#+begin_src emacs-lisp :tangle yes
+(with-eval-after-load 'compile
+ (dolist (rule '((nix-def "^\\s-*- In [`']\\(/[^'\n]+\\)'" 1)
+ (nix-eval "^\\s-+at \\(/[^:\n]+\\):\\([0-9]+\\):\\([0-9]+\\):" 1 2 3)
+ (nix-trace "^\\s-+at \\(/nix/store/[^:\n]+\\):\\([0-9]+\\):\\([0-9]+\\):" 1 2 3 0)))
+ (add-to-list 'compilation-error-regexp-alist (car rule))
+ (add-to-list 'compilation-error-regexp-alist-alist rule)))
+
+(defun nix-compile-goto-option ()
+ (interactive)
+ (let (option path)
+ (save-excursion
+ (goto-char (point-min))
+ (unless (re-search-forward "option `\\([^'\n]+\\)'" nil t)
+ (user-error "No nix option error found"))
+ (setq option (match-string 1))
+ (unless (re-search-forward "- In `\\(/[^'\n]+\\)'" nil t)
+ (user-error "No definition file found"))
+ (setq path (match-string 1)))
+ (when (file-directory-p path)
+ (setq path (expand-file-name "default.nix" path)))
+ (find-file path)
+ (goto-char (point-min))
+ (search-forward (car (last (split-string option "\\." t))))))
+
+(keymap-set compilation-mode-map "C-c o" #'nix-compile-goto-option)
+#+end_src
+
** c-ts-mode
Built-in tree-sitter mode (Emacs 29+) driven by =clangd=. The =c= grammar ships via =treesit-grammars.with-all-grammars= in =emacs.nix=, so no on-the-fly compilation is needed. =clangd= picks up include paths and flags from a =compile_commands.json= in the project root (generate it with =bear -- make=, =cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON=, or =meson=); without one it falls back to sane defaults but cross-file navigation is limited.
@@ -3411,17 +3443,6 @@ Native =undo-redo= (via =evil-undo-system='undo-redo=); just raise the undo limi
(dirvish-directory-view-mode . diredfl-mode)))
#+end_src
-** nerd-icons-completion
-
-#+begin_src emacs-lisp
-(use-package nerd-icons-completion
- :if ek-use-nerd-fonts ;; Load the package only if the user has configured to use nerd fonts.
- :ensure t ;; Ensure the package is installed.
- :after nerd-icons
- :config
- (nerd-icons-completion-mode))
-#+end_src
-
* TODO efs install fn
#+begin_src emacs-lisp
@@ -3559,6 +3580,33 @@ moved to local.el
#+end_src
+** batppuccin
+
+#+begin_src emacs-lisp
+(use-package batppuccin
+ :ensure t
+ :config
+ (load-theme 'batppuccin-mocha t))
+#+end_src
+
+** solarized-theme
+
+#+begin_src emacs-lisp :tangle yes
+;; (use-package solarized-theme
+;; :ensure t
+;; :config
+;; (load-theme 'solarized-gruvbox-dark t))
+#+end_src
+
+** tokyo-night
+
+#+begin_src emacs-lisp
+;; (use-package tokyo-night
+;; :ensure t
+;; :config
+;; (load-theme 'tokyo-night t))
+#+end_src
+
* dirvish
#+begin_src emacs-lisp
@@ -3737,14 +3785,15 @@ still require a restart since elpaca queues run at init time."
:after (wgrep helm))
(defun my/project-replace ()
- "Project-wide search via `helm-do-grep-ag-project'.
+ "Project-wide search via ripgrep (`helm-projectile-rg').
Press `C-x C-s' in the helm session to save results to a *hgrep*
buffer, then `C-c C-p' (wgrep-change-to-wgrep-mode) to edit in
place. `C-c C-c' commits, `C-c C-k' aborts."
(interactive)
- (call-interactively #'helm-do-grep-ag-project))
+ (call-interactively #'helm-projectile-rg))
#+end_src
+
** search in arbitrary directories
#+begin_src emacs-lisp
@@ -3752,17 +3801,20 @@ place. `C-c C-c' commits, `C-c C-k' aborts."
(interactive "DFind files in: ")
(helm-find-1 dir))
-(defun my/helm-grep-in (dir)
- (interactive "DGrep in: ")
- (let ((default-directory (file-name-as-directory dir)))
- (helm-do-grep-ag nil)))
+(defun my/helm-rg-in (dir)
+ "Search DIR recursively with ripgrep via Helm."
+ (interactive "DRipgrep in: ")
+ (helm-grep-ag (expand-file-name dir) nil))
-(defun my/denote-grep ()
+(defun my/denote-rg ()
+ "Search `denote-directory' recursively with ripgrep via Helm."
(interactive)
- (let ((default-directory (expand-file-name denote-directory)))
- (helm-do-grep-ag nil)))
+ (helm-grep-ag (expand-file-name denote-directory) nil))
#+end_src
+#+RESULTS:
+: my/denote-rg
+
* workspaces
#+begin_src emacs-lisp
@@ -4157,8 +4209,7 @@ place. `C-c C-c' commits, `C-c C-k' aborts."
(defun my/format-buffer ()
(interactive)
(cond
- ((eq major-mode 'rust-ts-mode) (eglot-format-buffer))
- ((eq major-mode 'nix-ts-mode) (eglot-format-buffer))
+ ((eq major-mode 'rust-ts-mode) (eglot-format-buffer))
((eq major-mode 'python-ts-mode) (eglot-format-buffer))
((eq major-mode 'c-mode) (eglot-format-buffer))
((bound-and-true-p eglot--managed-mode) (eglot-format-buffer))
@@ -4179,9 +4230,9 @@ workspace (e.g. *scratch*)."
"SPC" '(my/find-file-or-switch-project :wk "find file/switch project")
"sp" '(helm-projectile :wk "search project")
"ss" '(helm-occur :wk "search line")
- "sg" '(my/helm-grep-in :wk "grep in dir")
+ "sg" '(my/helm-rg-in :wk "rg in dir")
"sf" '(my/helm-find-in :wk "find file in dir")
- "/" '(helm-do-grep-ag-project :wk "search project")
+ "/" '(helm-projectile-rg :wk "search project")
"." '(helm-find-files :wk "find file")
"," '(helm-mini :wk "switch buffer")
":" (lambda () (interactive) (execute-extended-command nil))
@@ -4194,7 +4245,7 @@ workspace (e.g. *scratch*)."
"dm" '(:ignore t :wk "Merge Notes")
"dmr" '(denote-merge-region :wk "Merge Region")
"dmf" '(denote-merge-file :wk "Merge File")
- "dg" '(my/denote-grep :wk "Search")
+ "dg" '(my/denote-rg :wk "grep denotes")
"dl" '(denote-link-or-create t :wk "Link Note")
"dn" '(denote t :wk "Create a new note")
"dr" '(denote-rename-file t :wk "Rename Note")
@@ -4313,9 +4364,9 @@ workspace (e.g. *scratch*)."
"e b" '(eww-list-bookmarks :wk "bookmarks")
"e h" '(eww-list-histories :wk "history")
"e f" '(elfeed :wk "elfeed (rss)")
- "e s" '(engine/search-duckduckgo :wk "search duckduckgo")
"e L" '(link-hint-open-link :wk "hint open link")
"e C" '(link-hint-copy-link :wk "hint copy link")
+ "e x" '(xwidget-webkit-browse-url :wk "webkit browser")
)
(defun my/flash-enabled-p ()
@@ -5009,6 +5060,7 @@ opening another file in same project does not re-notify."
(format "%s-freebsd" arch)))))
(advice-add 'ghostel--module-platform-tag :around #'my/ghostel-module-platform-tag)
(require 'ghostel-compile)
+ (ghostel-compile-global-mode 1)
(setq-default window-adjust-process-window-size-function
#'window-adjust-process-window-size-largest)
(evil-define-key 'normal ghostel-mode-map
@@ -5185,6 +5237,26 @@ opening another file in same project does not re-notify."
:commands (zfs))
#+end_src
+* org-tree-slide
+
+#+begin_src emacs-lisp
+(use-package org-tree-slide
+ :ensure t)
+(when (require 'org-tree-slide nil t)
+ (global-set-key (kbd "<f8>") 'org-tree-slide-mode)
+ (global-set-key (kbd "S-<f8>") 'org-tree-slide-skip-done-toggle)
+ (define-key org-tree-slide-mode-map (kbd "<f9>")
+ 'org-tree-slide-move-previous-tree)
+ (define-key org-tree-slide-mode-map (kbd "<f10>")
+ 'org-tree-slide-move-next-tree)
+ (define-key org-tree-slide-mode-map (kbd "<f11>")
+ 'org-tree-slide-content)
+ (setq org-tree-slide-skip-outline-level 4)
+ (org-tree-slide-narrowing-control-profile)
+ (setq org-tree-slide-skip-comments 'inherit)
+ (setq org-tree-slide-skip-done nil))
+#+end_src
+
* provide init
#+begin_src emacs-lisp