10 Commits

Author SHA1 Message Date
Joe Frikker b7912eef52 Redbook 2026-06-19 18:38:22 -04:00
Joe Frikker ed88afe698 wip 2026-06-19 18:33:43 -04:00
Joe Frikker e52adbbc4b Splitting out shibumi deps 2026-06-17 15:42:52 -04:00
Joe Frikker db1b86cbd7 evil 2026-06-12 22:44:14 -04:00
Joe Frikker 74dc6fd742 wip 2026-06-05 21:09:53 -04:00
Joe Frikker 591f00e2f9 wip 2026-06-02 16:44:33 -04:00
Joe Frikker 9e653100f2 wip 2026-05-28 23:19:00 -04:00
Joe Frikker 96e6fc7706 Bumping nixpkgs and removing unused treesitter parsers 2026-05-19 15:55:45 -04:00
Joe Frikker 7770c44924 wip 2026-04-29 23:03:42 -04:00
Joe Frikker 4bec74fd5f wip 2026-04-29 23:02:53 -04:00
3 changed files with 299 additions and 197 deletions
Generated
+9 -9
View File
@@ -25,11 +25,11 @@
]
},
"locked": {
"lastModified": 1775762219,
"narHash": "sha256-e7BhggoWhg3Ok7dDI5kY1XZzORBQc0Rclcs3IWzux3w=",
"lastModified": 1779969295,
"narHash": "sha256-HwIJ3tOcwSMiV75L7KqJXciXR9UfT+d7rwOZMX7cTnA=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "c975a66a56306b38eaa3108f54bbc11e213f42f6",
"rev": "61e2c9659324181e0f0ed911958c536333b1d4f6",
"type": "github"
},
"original": {
@@ -65,11 +65,11 @@
]
},
"locked": {
"lastModified": 1775365369,
"narHash": "sha256-DgH5mveLoau20CuTnaU5RXZWgFQWn56onQ4Du2CqYoI=",
"lastModified": 1779604987,
"narHash": "sha256-ZQ5z+fVhxYKtIFwtqGp5O0PD84BM1riASvqDaN5Xs+s=",
"owner": "nix-community",
"repo": "nix-index-database",
"rev": "cef5cf82671e749ac87d69aadecbb75967e6f6c3",
"rev": "8fba98c80b48fa013820e0163c5096922fea4ddd",
"type": "github"
},
"original": {
@@ -80,11 +80,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1775423009,
"narHash": "sha256-vPKLpjhIVWdDrfiUM8atW6YkIggCEKdSAlJPzzhkQlw=",
"lastModified": 1779560665,
"narHash": "sha256-tpyBcxPpcQb8ukyNF7DoCwfSY3VPsxHoYwj00Cayv5o=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "68d8aa3d661f0e6bd5862291b5bb263b2a6595c9",
"rev": "64c08a7ca051951c8eae34e3e3cb1e202fe36786",
"type": "github"
},
"original": {
+4 -6
View File
@@ -50,13 +50,11 @@
modules =
[
nix-index-database.homeModules.default
"${modules}/base.nix"
"${modules}/desktop.nix"
"${modules}/shibumi.nix"
"${modules}/shibumi-desktop.nix"
] ++
(pkgs.lib.filter
(n: pkgs.lib.strings.hasSuffix ".nix" n)
(pkgs.lib.filesystem.listFilesRecursive "${modules}/base")) ++
(pkgs.lib.filter
(n: pkgs.lib.strings.hasSuffix ".nix" n)
(pkgs.lib.filesystem.listFilesRecursive "${modules}/desktop")) ++
[{
home.stateVersion = "22.05";
home.username = "jfrikker";
+216 -112
View File
@@ -1,5 +1,38 @@
#+PROPERTY: header-args :mkdirp yes
#+PROPERTY: header-args:elisp :lexical t
* Categories
#+BEGIN_SRC nix :tangle target/base.nix
{lib, ...}: {
imports = lib.filter
(n: lib.strings.hasSuffix ".nix" n)
(lib.filesystem.listFilesRecursive ./base);
}
#+END_SRC
#+BEGIN_SRC nix :tangle target/desktop.nix
{lib, ...}: {
imports = lib.filter
(n: lib.strings.hasSuffix ".nix" n)
(lib.filesystem.listFilesRecursive ./desktop);
}
#+END_SRC
#+BEGIN_SRC nix :tangle target/redbook.nix
{lib, ...}: {
imports = lib.filter
(n: lib.strings.hasSuffix ".nix" n)
(lib.filesystem.listFilesRecursive ./redbook);
}
#+END_SRC
#+BEGIN_SRC nix :tangle target/redbook-desktop.nix
{lib, ...}: {
imports = lib.filter
(n: lib.strings.hasSuffix ".nix" n)
(lib.filesystem.listFilesRecursive ./redbook-desktop);
}
#+END_SRC
* Packages
Home-manager "packages" are simply binaries that are placed on the path, without any attached
@@ -90,6 +123,7 @@ tools. They boost better speed, or simply more streamlined features.
dust
fd
ripgrep
tokei
xh
];
}
@@ -131,9 +165,9 @@ between them. Once installed, the actual command is ~wormhole~.
#+end_src
These are the other programs I have installed globally. A few (like ~awscli~, ~mysql-client~, etc.)
are still Shibumi-specific; ideally I'd find another way to install them.
are still Redbook-specific; ideally I'd find another way to install them.
#+BEGIN_SRC nix :tangle target/base/other-packages.nix
#+BEGIN_SRC nix :tangle target/redbook/other-packages.nix
{pkgs, kube, ...}:
{
home.packages = with pkgs; [
@@ -142,9 +176,7 @@ are still Shibumi-specific; ideally I'd find another way to install them.
kube
kubectl
mariadb.client
nerd-fonts.jetbrains-mono
openssh
tokei
];
fonts.fontconfig.enable = true;
@@ -158,17 +190,26 @@ These programs require a full desktop environment:
{
home.packages = with pkgs; [
google-chrome
nerd-fonts.jetbrains-mono
(iosevka-bin.override { variant = "Aile"; })
(iosevka-bin.override { variant = "Etoile"; })
(iosevka-bin.override { variant = "SGr-IosevkaTerm"; })
keymapp
proton-pass
slack
wireshark
];
}
#+END_SRC
#+BEGIN_SRC nix :tangle target/redbook-desktop/desktop-packages.nix
{pkgs, ...}:
{
home.packages = with pkgs; [
slack
];
}
#+END_SRC
* Program Configurations
This section contains applications whose config files will be generated by Home Manager. Home
Manager calls these "programs" (as opposed to "packages", which are just binaries to put on the
@@ -272,7 +313,7 @@ We all know what ~git~ does.
programs.git = {
enable = true;
settings.user.name = "Joe Frikker";
settings.user.email = "joe.frikker@shibumi.com";
settings.user.email = "joe@redbookcattle.com";
};
programs.delta = {
@@ -752,19 +793,19 @@ These are just some general settings that apply everywhere. First, a few package
Turn off some default settings that I don't find useful.
#+BEGIN_SRC elisp
(setq inhibit-startup-screen t)
(setq initial-scratch-message nil)
(setopt inhibit-startup-screen t)
(setopt initial-scratch-message nil)
(menu-bar-mode -1)
(scroll-bar-mode -1)
(tool-bar-mode -1)
(setq make-backup-files nil)
(setq split-width-threshold 200)
(setq split-height-threshold nil)
(setopt make-backup-files nil)
(setopt split-width-threshold 200)
(setopt split-height-threshold nil)
(setopt display-buffer-base-action
'((display-buffer-reuse-window display-buffer-same-window
display-buffer-in-previous-window
display-buffer-use-some-window)))
(setq view-read-only t)
(setopt view-read-only t)
#+END_SRC
Make sure which-key mode is always on. The on-the-fly keymap help it gives is indespensable.
@@ -791,7 +832,7 @@ From the docs: "If ‘complete’, TAB first tries to indent the current line, a
already indented, then try to complete the thing at point." Recommended by [[https://github.com/minad/corfu][the ~corfu~ readme]].
#+BEGIN_SRC elisp
(setq tab-always-indent 'complete)
(setopt tab-always-indent 'complete)
#+END_SRC
Set the cursor to be a bar. I'm not sure what the benefit would be of a block cursor, since the
@@ -845,7 +886,6 @@ cool, so I'm turning it on in prog mode. The enabled ligatures are font-specific
ligature wiki]].
#+BEGIN_SRC elisp
(require 'ligature)
(ligature-set-ligatures 'prog-mode
'("--" "---" "==" "===" "!=" "!==" "=!="
"=:=" "=/=" "<=" ">=" "&&" "&&&" "&=" "++" "+++" "***" ";;" "!!"
@@ -873,14 +913,15 @@ Use variable-width fonts in text buffers. ~mixed-pitch-mode~ keeps most code blo
(add-hook 'yaml-ts-mode-hook 'no-mixed-pitch)
(add-hook 'mhtml-mode 'no-mixed-pitch)
(add-hook 'nxml-mode 'no-mixed-pitch)
#+END_SRC
A basic ace-window setup. Allows switching between windows quickly (although avy can do the same...).
#+BEGIN_SRC elisp
(require 'ace-window)
(bind-keys ("M-o" . ace-window)
("s-o" . ace-window))
("s-o" . ace-window)
("C-c o" . ace-window))
(setopt aw-keys '(?a ?s ?d ?f ?g ?h ?j ?k ?l))
(setopt aw-dispatch-always t)
#+END_SRC
@@ -890,8 +931,10 @@ Set up a few project- / workspace-related key bindings.
#+BEGIN_SRC elisp
(bind-keys ("s-f" . project-find-file)
("s-F" . project-switch-project))
(with-eval-after-load 'tab-bar
(bind-keys :map tab-bar-mode-map
("s-s" . tab-bar-switch-to-tab))
("s-s" . tab-bar-switch-to-tab)))
#+END_SRC
Don't run a server. I'm not using this, I can always turn it back on if I need to.
@@ -904,13 +947,13 @@ All the beeping is annoying. This flashes a huge icon over the screen, which is
less so?
#+BEGIN_SRC elisp
(setq visible-bell t)
(setopt visible-bell t)
#+END_SRC
I'm trying this out. This disables visual selections. It's bold, which is why I like it :)
#+BEGIN_SRC elisp
(transient-mark-mode -1)
;; (transient-mark-mode -1)
#+END_SRC
I use tabs to manage multiple "workspaces". I don't tie a project to a tab or anything; often fixing
@@ -922,14 +965,19 @@ change when drilling into a help page or something. I've set up repeat mode to m
move backward / forward through history.
#+BEGIN_SRC elisp
(require 'tab-bar)
(bind-keys :repeat-map tab-bar-repeat-map
("<left>" . tab-bar-history-back)
("<right>" . tab-bar-history-forward))
(tab-bar-history-mode)
#+END_SRC
Make compilation mode buffers auto-scroll to the first error:
#+BEGIN_SRC elisp
(setopt compilation-scroll-output 'first-error)
#+END_SRC
*** Window Placement
This section contains rules about where ~display-buffer~ should place windows. I guess I'm currently
going for an IDE-style layout, with one main editor window, and auxiliary bottom and right side
@@ -987,6 +1035,7 @@ content to be.
window-persistent-parameters))
#+END_SRC
** Editing
:PROPERTIES:
:header-args:elisp: :tangle target/desktop/emacs-editing.el
@@ -1002,7 +1051,9 @@ This configuration affects general text editing, across all modes. First, some p
avy
edit-indirect
embark
god-mode
evil
evil-collection
evil-org
string-inflection
];
extraConfig = builtins.readFile ./emacs-editing.el;
@@ -1021,40 +1072,18 @@ but I'm worried that having too many repeat maps will also be annoying (I'll hav
cancel them more frequently). In the end, I opted for Devil mode. It avoids modifier keys, and has
its own devil-mode-only repeat maps that don't interfere when using normal modifier key sequences.
#+BEGIN_SRC elisp :tangle nil
(use-package devil
:disable t
:config
(global-devil-mode)
(setq devil-repeatable-keys
'(("%k /")
("%k d")
("%k k")
("%k m ^")
("%k m b" "%k m f" "%k m a" "% k m e")
("%k m @" "%k m h")
("%k m y")
("%k p" "%k n" "%k b" "%k f" "%k a" "%k e")
("%k s")
("%k m d" "%k m <backspace>"))))
#+END_SRC
#+BEGIN_SRC elisp
(require 'god-mode)
(require 'which-key)
(setopt evil-want-keybinding nil)
(require 'evil)
(evil-mode 1)
(require 'evil-collection)
(evil-collection-init)
(bind-keys :map god-local-mode-map
("i" . (lambda () (interactive) (god-mode-all -1)))
("z" . repeat))
(bind-keys ("<escape>" . (lambda () (interactive) (god-mode-all 1))))
(defun my-god-mode-update-cursor-type ()
(setq cursor-type (cond
(org-present-mode nil)
((or god-local-mode buffer-read-only) 'box)
(t 'bar))))
(add-hook 'post-command-hook 'my-god-mode-update-cursor-type)
(which-key-enable-god-mode-support)
(require 'evil-org)
(add-hook 'org-mode-hook 'evil-org-mode)
(evil-org-set-key-theme '(navigation insert textobjects additional calendar))
(require 'evil-org-agenda)
(evil-org-agenda-set-keys)
#+END_SRC
Avy allows jumping to any place on the screen with just a few keystrokes. I've stolen most of these
@@ -1062,11 +1091,9 @@ ideas from Karthinks' article [[https://karthinks.com/software/avy-can-do-anythi
his article.
#+BEGIN_SRC elisp
(require 'avy)
(require 'embark)
(defun avy-goto-char-timer-embark ()
(interactive)
(require 'avy)
(let ((avy-action-oneshot
(lambda (pt)
(unwind-protect
@@ -1079,6 +1106,7 @@ his article.
(bind-keys
("M-j" . avy-goto-char-timer)
("C-c j" . avy-goto-char-timer)
("M-J" . avy-goto-char-timer-embark)
("C-." . embark-act))
#+END_SRC
@@ -1090,7 +1118,6 @@ Just "silently" wrap when searching at the bottom of a document.
#+END_SRC
#+BEGIN_SRC elisp
(require 'string-inflection)
(defun string-inflection-rust-style-cycle-function (str)
(cond
((string-inflection-snake-case-p str)
@@ -1102,6 +1129,7 @@ Just "silently" wrap when searching at the bottom of a document.
(defun string-inflection-rust-style-cycle ()
(interactive)
(require 'string-inflection)
(string-inflection--symbol-or-region #'string-inflection-rust-style-cycle-function))
(bind-keys :repeat-map string-inflection-java-map
@@ -1126,7 +1154,14 @@ Just "silently" wrap when searching at the bottom of a document.
consult-eglot
haskell-ts-mode
jenkinsfile-mode
lispy
jq-mode
(lispy.overrideAttrs {
packageRequires = [
ace-window iedit swiper zoutline
];
ignoreCompilationError = true;
})
lispyville
lua-mode
nix-mode
rust-mode
@@ -1134,7 +1169,42 @@ Just "silently" wrap when searching at the bottom of a document.
sly-macrostep
sql-indent
tree-sitter
treesit-grammars.with-all-grammars
(treesit-grammars.with-grammars (g: [
g.tree-sitter-bash
g.tree-sitter-commonlisp
g.tree-sitter-css
g.tree-sitter-dockerfile
g.tree-sitter-dot
g.tree-sitter-elisp
g.tree-sitter-graphql
g.tree-sitter-gitcommit
g.tree-sitter-gitignore
g.tree-sitter-haskell
g.tree-sitter-html
g.tree-sitter-java
g.tree-sitter-javascript
g.tree-sitter-jq
g.tree-sitter-json
g.tree-sitter-json5
g.tree-sitter-just
g.tree-sitter-ledger
g.tree-sitter-llvm
g.tree-sitter-make
g.tree-sitter-nginx
g.tree-sitter-nix
g.tree-sitter-org
g.tree-sitter-php
g.tree-sitter-python
g.tree-sitter-rust
g.tree-sitter-rust-format-args
g.tree-sitter-scss
g.tree-sitter-sql
g.tree-sitter-toml
g.tree-sitter-tsx
g.tree-sitter-typescript
g.tree-sitter-xml
g.tree-sitter-yaml
]))
yaml-pro
];
extraConfig = builtins.readFile ./emacs-languages.el;
@@ -1142,14 +1212,38 @@ Just "silently" wrap when searching at the bottom of a document.
}
#+END_SRC
#+BEGIN_SRC elisp
(electric-pair-mode 1)
(setq-default indent-tabs-mode nil)
(setq-default tab-width 4)
(global-tree-sitter-mode 1)
(setopt ediff-split-window-function 'split-window-horizontally)
(defun project-nix-flake ()
(interactive)
(nix-flake (project-root (project-current t))))
(bind-keys ("C-x p n" . project-nix-flake))
#+END_SRC
Show a vertical bar 100 characters out; ideally I don't want lines longer than this. 100 characters
is about the max you can have and still fit two files side-by-side on the screen.
#+begin_src elisp
(setq-default fill-column 100)
(defun jf-init-fill-column ()
(display-fill-column-indicator-mode 1))
(add-hook 'prog-mode-hook 'jf-init-fill-column)
#+end_src
I had some weird problems with jsx code where the default M-q would just do a text fill rather than
a re-indent. The solution seems to be to only do the ~syntax-ppss~ stuff if tree-sitter isn't
available? It seems to work for now anyway...
#+BEGIN_SRC elisp
(electric-pair-mode 1)
(require 'prog-mode)
#+begin_src elisp
(with-eval-after-load 'prog-mode
(defun my-prog-fill-reindent-defun (&optional argument)
"Refill or reindent the paragraph or defun that contains point.
@@ -1174,44 +1268,52 @@ available? It seems to work for now anyway...
(end-of-defun)
(indent-region start (point) nil))))))
(advice-add 'prog-fill-reindent-defun :override #'my-prog-fill-reindent-defun)
(advice-add 'prog-fill-reindent-defun :override #'my-prog-fill-reindent-defun))
#+end_src
(require 'flymake)
*** Flymake
#+begin_src elisp
(autoload 'flymake-show-project-diagnostics "flymake")
(autoload 'flymake-goto-next-error "flymake")
(autoload 'flymake-goto-prev-error "flymake")
(with-eval-after-load 'prog-mode
(bind-keys :map prog-mode-map
("C-c D" . flymake-show-project-diagnostics)
("M-n" . flymake-goto-next-error)
("M-p" . flymake-goto-prev-error))
("M-p" . flymake-goto-prev-error)))
(setq-default indent-tabs-mode nil)
(setq-default tab-width 4)
(global-tree-sitter-mode 1)
(setq-default fill-column 100)
(with-eval-after-load 'flymake
(bind-keys :map flymake-project-diagnostics-mode-map
("q" . quit-window)))
#+end_src
(defun jf-init-fill-column ()
(display-fill-column-indicator-mode 1))
(add-hook 'prog-mode-hook 'jf-init-fill-column)
*** Eglot
I don't like UI elements that insert fake text into the file. They mess up the spacing in the file, and can make everything too wide.
#+BEGIN_SRC elisp
(setopt eglot-ignored-server-capabilities '(:inlayHintProvider :semanticTokensProvider))
(add-hook 'eglot-managed-mode-hook (lambda () (eglot-inlay-hints-mode -1)) nil t)
(require 'eglot)
(setopt eglot-code-action-indications nil)
#+END_SRC
Set up a few useful eglot keys.
#+begin_src elisp
(with-eval-after-load 'eglot
(bind-keys :map eglot-mode-map
("C-c a" . eglot-code-actions)
("C-c r" . eglot-rename)
("C-c i" . eglot-find-implementation))
(add-to-list 'eglot-stay-out-of 'yasnippet)
("C-c i" . eglot-find-implementation)))
#+end_src
(setopt ediff-split-window-function 'split-window-horizontally)
Eglot's yasnippet support uses the tab key, but I *also* use the tab key both for indentation, and
for completion. That makes it really annoying to use; don't use yasnippet with eglot.
(defun project-nix-flake ()
(interactive)
(nix-flake (project-root (project-current t))))
(bind-keys ("C-x p n" . project-nix-flake))
(require 'flymake)
(bind-keys :map flymake-project-diagnostics-mode-map
("q" . quit-window))
#+END_SRC
#+begin_src elisp
(with-eval-after-load 'eglot
(add-to-list 'eglot-stay-out-of 'yasnippet))
#+end_src
*** Rust
#+BEGIN_SRC elisp
@@ -1219,15 +1321,13 @@ available? It seems to work for now anyway...
(setopt rust-mode-treesitter-derive t)
(require 'rust-ts-mode)
(bind-keys :map rust-ts-mode-map
("C-c u" . string-inflection-rust-style-cycle))
(with-eval-after-load 'rust-prog-mode
(bind-keys :map rust-mode-map
("C-c u" . string-inflection-rust-style-cycle)))
#+END_SRC
*** YAML
#+BEGIN_SRC elisp
(require 'yaml-ts-mode)
(defun yaml-validate ()
(interactive)
(compile (concat "yamllint -d '{extends: default, rules: {indentation: {indent-sequences: false}, braces: {max-spaces-inside: 1}}}' " (buffer-file-name)) t))
@@ -1242,19 +1342,25 @@ available? It seems to work for now anyway...
(setopt lispy-compat '(god-mode edebug))
(add-hook 'emacs-lisp-mode-hook (lambda () (lispy-mode 1)))
(add-hook 'lisp-mode-hook (lambda () (lispy-mode 1)))
(require 'lispy)
(with-eval-after-load 'lispy
(require 'lispyville)
(add-hook 'lispy-mode-hook #'lispyville-mode)
(bind-keys :map lispy-mode-map
("i" . (lambda ()
(interactive)
(if god-global-mode
(if (and (featurep 'god-mode) god-global-mode)
(god-mode-all -1)
(special-lispy-tab)))))
(special-lispy-tab))))))
#+END_SRC
*** Typescript
#+BEGIN_SRC elisp
(push '("\\.ts\\'" . typescript-mode) auto-mode-alist)
(push '(typescript-mode . typescript-ts-mode) major-mode-remap-alist)
(push '("\\.tsx\\'" . tsx-mode) auto-mode-alist)
(push '(tsx-mode . tsx-ts-mode) major-mode-remap-alist)
(setopt typescript-ts-mode-indent-offset 4)
(require 'typescript-ts-mode)
(with-eval-after-load 'typescript-ts-mode
(defun my-tsx-ts-mode--indent-compatibility-b893426 ()
"Indent rules helper, to handle different releases of tree-sitter-tsx.
Check if a node type is available, then return the right indent rules."
@@ -1266,12 +1372,13 @@ available? It seems to work for now anyway...
(treesit-query-error
`(((match "<" "jsx_text") parent 0)
((parent-is "jsx_text") grand-parent typescript-ts-mode-indent-offset)))))
(advice-add 'tsx-ts-mode--indent-compatibility-b893426 :override #'my-tsx-ts-mode--indent-compatibility-b893426)
(advice-add 'tsx-ts-mode--indent-compatibility-b893426 :override #'my-tsx-ts-mode--indent-compatibility-b893426))
#+END_SRC
*** Java
#+BEGIN_SRC elisp
(require 'java-ts-mode)
(push '(java-mode . java-ts-mode) major-mode-remap-alist)
(with-eval-after-load 'java-ts-mode
(bind-keys :map java-ts-mode-map
("C-c u" . string-inflection-java-style-cycle))
(push `((n-p-gp nil "block" "lambda_expression") parent-bol java-ts-mode-indent-offset)
@@ -1294,7 +1401,7 @@ available? It seems to work for now anyway...
(setq result path)))))))
(defun jf/compile-class-to-file ()
(jf/class-name-to-file (concat (match-string 1) (match-string 2))))
(jf/class-name-to-file (concat (match-string 1) (match-string 2)))))
;(add-to-list 'compilation-error-regexp-alist-alist
; '(java-stack-trace .
@@ -1357,7 +1464,8 @@ available? It seems to work for now anyway...
#+END_SRC
#+BEGIN_SRC elisp
(setq magit-define-global-key-bindings 'recommended)
(setopt magit-define-global-key-bindings 'recommended)
(bind-keys ("s-g" . magit))
(setopt magit-save-repository-buffers 'dontask)
(setopt magit-commit-show-diff nil)
@@ -1445,15 +1553,16 @@ available? It seems to work for now anyway...
("M-s" . consult-history)
("M-r" . consult-history))
(add-hook 'completion-list-mode-hook 'consult-preview-at-point-mode)
(advice-add 'register-preview :override #'consult-register-window)
(setopt register-preview-delay 0.5)
(setopt xref-show-xrefs-function 'consult-xref)
(setopt xref-show-definitions-function 'consult-xref)
(require 'consult)
(eval-when-compile
(require 'consult))
(with-eval-after-load 'consult
(consult-customize
consult-theme :preview-key '(:debounce 0.2 any)
consult-ripgrep consult-git-grep consult-grep consult-man
@@ -1461,7 +1570,7 @@ available? It seems to work for now anyway...
consult-source-bookmark consult-source-file-register
consult-source-recent-file consult-source-project-recent-file
;; :preview-key "M-."
:preview-key '(:debounce 0.4 any))
:preview-key '(:debounce 0.4 any)))
(setopt consult-narrow-key "<") ;; "C-+"
@@ -1476,11 +1585,8 @@ available? It seems to work for now anyway...
(setopt corfu-popupinfo-mode nil)
(setopt corfu-quit-at-boundary nil)
(setopt corfu-on-exact-match 'show)
;; (global-corfu-mode)
(setq completion-in-region-function #'consult-completion-in-region)
;; Consult users will also want the embark-consult package.
(add-hook 'embark-collect-mode-hook 'consult-preview-at-point-mode)
(global-corfu-mode)
;; (setq completion-in-region-function #'consult-completion-in-region)
(add-hook 'completion-at-point-functions 'cape-file)
#+END_SRC
@@ -1754,9 +1860,7 @@ available? It seems to work for now anyway...
#+BEGIN_SRC elisp
(require 'claude-code)
(global-set-key (kbd "C-c c") claude-code-command-map)
(claude-code-mode)
(keymap-global-set "C-c c" claude-code-command-map)
#+END_SRC
* Theme
I like Catppuccin Frappe as my theme. Let's use it in as many places as we can.