summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config.el45
-rw-r--r--config.org45
-rw-r--r--themes/tinty-theme.el142
3 files changed, 155 insertions, 77 deletions
diff --git a/config.el b/config.el
index 3772e57..580039a 100644
--- a/config.el
+++ b/config.el
@@ -2778,6 +2778,39 @@ BODY is the xonsh script. PARAMS may include :dir and :cmdline."
:after evil
:config
(global-evil-mc-mode 1)
+
+ (defvar my/evil-mc-visual-map nil)
+ (setq my/evil-mc-visual-map (make-sparse-keymap))
+ (keymap-set my/evil-mc-visual-map "a" #'evil-mc-make-all-cursors)
+ (keymap-set my/evil-mc-visual-map "q" #'my/evil-mc-quit)
+ (keymap-set my/evil-mc-visual-map "n" #'evil-mc-make-and-goto-next-match)
+ (keymap-set my/evil-mc-visual-map "p" #'evil-mc-make-and-goto-prev-match)
+ (keymap-set my/evil-mc-visual-map "C-n" #'my/evil-mc-skip-next-match)
+ (keymap-set my/evil-mc-visual-map "C-p" #'my/evil-mc-skip-prev-match)
+
+ (evil-define-command my/evil-mc-visual-block ()
+ :keep-visual t
+ (interactive)
+ (call-interactively #'evil-visual-block)
+ (when (evil-visual-state-p)
+ (set-transient-map my/evil-mc-visual-map #'evil-visual-state-p)))
+
+ (defun my/evil-mc-quit ()
+ (interactive)
+ (evil-mc-undo-all-cursors)
+ (evil-exit-visual-state))
+
+ (evil-define-command my/evil-mc-skip-next-match ()
+ :repeat ignore
+ :evil-mc t
+ (evil-mc-make-and-goto-next-match)
+ (evil-mc-skip-and-goto-next-match))
+
+ (evil-define-command my/evil-mc-skip-prev-match ()
+ :repeat ignore
+ :evil-mc t
+ (evil-mc-make-and-goto-prev-match)
+ (evil-mc-skip-and-goto-prev-match))
(defun my/evil-visual-block-p ()
(and (bound-and-true-p evil-visual-selection)
@@ -2801,7 +2834,7 @@ BODY is the xonsh script. PARAMS may include :dir and :cmdline."
(with-eval-after-load 'evil-mc
(defun my/evil-mc-keep-visual-selection (original &rest args)
- (if (and (evil-visual-state-p) (eq evil-visual-selection 'char))
+ (if (evil-visual-state-p)
(let* ((range (evil-visual-range))
(length (if (evil-mc-has-pattern-p) (evil-mc-get-pattern-length) (- (cadr range) (car range)))))
(prog1 (apply original args)
@@ -2815,7 +2848,8 @@ BODY is the xonsh script. PARAMS may include :dir and :cmdline."
(evil-visual-char (- (1+ (point)) length) (point))))
(apply original args)))
- (advice-add 'evil-mc-find-and-goto-match :around #'my/evil-mc-keep-visual-selection))
+ (advice-add 'evil-mc-find-and-goto-match :around #'my/evil-mc-keep-visual-selection)
+ (advice-add 'evil-mc-make-all-cursors :around #'my/evil-mc-keep-visual-selection))
(use-package flash
:ensure (:host github :repo "Prgebish/flash")
@@ -3893,6 +3927,7 @@ place. `C-c C-c' commits, `C-c C-k' aborts."
(kbd "g S") #'evil-Surround-edit))
(evil-define-key 'insert 'global (kbd "C-w") evil-window-map)
+(evil-define-key 'motion 'global (kbd "C-v") #'my/evil-mc-visual-block)
(keymap-global-set "M-b" #'my/quick-access)
(evil-define-key '(normal visual motion insert emacs) 'global
@@ -5059,8 +5094,12 @@ opening another file in same project does not re-notify."
(use-package justl
:ensure t
:commands (justl justl-exec-recipe-in-dir justl-exec-default-recipe)
+ :hook ((justl-mode . my/envrc-project-buffer)
+ (justl-module-mode . my/envrc-project-buffer))
:custom
(justl-recipe-width 20)
- (justl-per-recipe-buffer nil))
+ (justl-per-recipe-buffer nil)
+ :config
+ (inheritenv-add-advice 'justl--make-process))
(provide 'init)
diff --git a/config.org b/config.org
index 2b08d83..682fdf6 100644
--- a/config.org
+++ b/config.org
@@ -3342,6 +3342,39 @@ BODY is the xonsh script. PARAMS may include :dir and :cmdline."
:after evil
:config
(global-evil-mc-mode 1)
+
+ (defvar my/evil-mc-visual-map nil)
+ (setq my/evil-mc-visual-map (make-sparse-keymap))
+ (keymap-set my/evil-mc-visual-map "a" #'evil-mc-make-all-cursors)
+ (keymap-set my/evil-mc-visual-map "q" #'my/evil-mc-quit)
+ (keymap-set my/evil-mc-visual-map "n" #'evil-mc-make-and-goto-next-match)
+ (keymap-set my/evil-mc-visual-map "p" #'evil-mc-make-and-goto-prev-match)
+ (keymap-set my/evil-mc-visual-map "C-n" #'my/evil-mc-skip-next-match)
+ (keymap-set my/evil-mc-visual-map "C-p" #'my/evil-mc-skip-prev-match)
+
+ (evil-define-command my/evil-mc-visual-block ()
+ :keep-visual t
+ (interactive)
+ (call-interactively #'evil-visual-block)
+ (when (evil-visual-state-p)
+ (set-transient-map my/evil-mc-visual-map #'evil-visual-state-p)))
+
+ (defun my/evil-mc-quit ()
+ (interactive)
+ (evil-mc-undo-all-cursors)
+ (evil-exit-visual-state))
+
+ (evil-define-command my/evil-mc-skip-next-match ()
+ :repeat ignore
+ :evil-mc t
+ (evil-mc-make-and-goto-next-match)
+ (evil-mc-skip-and-goto-next-match))
+
+ (evil-define-command my/evil-mc-skip-prev-match ()
+ :repeat ignore
+ :evil-mc t
+ (evil-mc-make-and-goto-prev-match)
+ (evil-mc-skip-and-goto-prev-match))
(defun my/evil-visual-block-p ()
(and (bound-and-true-p evil-visual-selection)
@@ -3369,7 +3402,7 @@ BODY is the xonsh script. PARAMS may include :dir and :cmdline."
#+begin_src emacs-lisp
(with-eval-after-load 'evil-mc
(defun my/evil-mc-keep-visual-selection (original &rest args)
- (if (and (evil-visual-state-p) (eq evil-visual-selection 'char))
+ (if (evil-visual-state-p)
(let* ((range (evil-visual-range))
(length (if (evil-mc-has-pattern-p) (evil-mc-get-pattern-length) (- (cadr range) (car range)))))
(prog1 (apply original args)
@@ -3383,7 +3416,8 @@ BODY is the xonsh script. PARAMS may include :dir and :cmdline."
(evil-visual-char (- (1+ (point)) length) (point))))
(apply original args)))
- (advice-add 'evil-mc-find-and-goto-match :around #'my/evil-mc-keep-visual-selection))
+ (advice-add 'evil-mc-find-and-goto-match :around #'my/evil-mc-keep-visual-selection)
+ (advice-add 'evil-mc-make-all-cursors :around #'my/evil-mc-keep-visual-selection))
#+end_src
* flash
@@ -4657,6 +4691,7 @@ place. `C-c C-c' commits, `C-c C-k' aborts."
(kbd "g S") #'evil-Surround-edit))
(evil-define-key 'insert 'global (kbd "C-w") evil-window-map)
+(evil-define-key 'motion 'global (kbd "C-v") #'my/evil-mc-visual-block)
(keymap-global-set "M-b" #'my/quick-access)
(evil-define-key '(normal visual motion insert emacs) 'global
@@ -6056,9 +6091,13 @@ Privileged ZFS operations stay non-interactive by default. Unlocking runs authen
(use-package justl
:ensure t
:commands (justl justl-exec-recipe-in-dir justl-exec-default-recipe)
+ :hook ((justl-mode . my/envrc-project-buffer)
+ (justl-module-mode . my/envrc-project-buffer))
:custom
(justl-recipe-width 20)
- (justl-per-recipe-buffer nil))
+ (justl-per-recipe-buffer nil)
+ :config
+ (inheritenv-add-advice 'justl--make-process))
#+end_src
* provide init
diff --git a/themes/tinty-theme.el b/themes/tinty-theme.el
index 78929ca..1586d15 100644
--- a/themes/tinty-theme.el
+++ b/themes/tinty-theme.el
@@ -64,71 +64,71 @@
(deftheme tinty
"tinty theme with proper color contrast."
- :background-mode 'light
+ :background-mode 'dark
:kind 'color-scheme)
(let* (;; Tinted8 UI surface colors
- (ui-bg "#f5f5f5")
- (ui-fg "#1f1f1f")
- (ui-fg-dim "#4f4f4f")
+ (ui-bg "#22212c")
+ (ui-fg "#f8f8f2")
+ (ui-fg-dim "#babaab")
;; Use dim foreground for borders/muted chrome so they stay visible in
;; light variants (the raw border color is nearly white on latte).
- (ui-border "#4f4f4f")
- (ui-line-highlight "#cfcfde")
- (ui-bg-dark "#e5e5e5")
- (ui-bg-light "#c5c5c5")
+ (ui-border "#babaab")
+ (ui-line-highlight "#454158")
+ (ui-bg-dark "#201f2e")
+ (ui-bg-light "#36334c")
;; Tinted8 UI accent/status colors
- (ui-accent "#686e93")
- (ui-link "#036a96")
- (ui-info "#336699")
- (ui-error "#cb3a2a")
- (ui-success "#14710a")
- (ui-warning "#a34d14")
+ (ui-accent "#b4befe")
+ (ui-link "#80ffea")
+ (ui-info "#8c78f0")
+ (ui-error "#ff9580")
+ (ui-success "#8aff80")
+ (ui-warning "#ffca80")
;; Tinted8 UI container colors (for BACKGROUNDS only)
- (ui-selection-bg "#cfcfde")
- (ui-selection-fg "#1f1f1f")
- (ui-button-bg "#d5d5d5")
- (ui-button-fg "#1f1f1f")
- (ui-tooltip-bg "#e5e5e5")
- (ui-tooltip-fg "#1f1f1f")
- (ui-active-text-bg "#cfcfde")
- (ui-active-text-fg "#2f2f2f")
- (ui-search-bg "#e5e5e5")
- (ui-search-fg "#2f2f2f")
+ (ui-selection-bg "#454158")
+ (ui-selection-fg "#f8f8f2")
+ (ui-button-bg "#2b293d")
+ (ui-button-fg "#f8f8f2")
+ (ui-tooltip-bg "#201f2e")
+ (ui-tooltip-fg "#f8f8f2")
+ (ui-active-text-bg "#454158")
+ (ui-active-text-fg "#ededde")
+ (ui-search-bg "#201f2e")
+ (ui-search-fg "#ededde")
;; Tinted8 syntax colors
;; The builder already corrects syntax colors for text contrast, including light variants.
- (syntax-comment "#635d97")
- (syntax-documentation "#635d97")
- (syntax-constant "#a34d14")
- (syntax-function "#14710a")
- (syntax-keyword "#a3144d")
- (syntax-string "#846e15")
- (syntax-type "#036a96")
+ (syntax-comment "#8a83b4")
+ (syntax-documentation "#8a83b4")
+ (syntax-constant "#ffca80")
+ (syntax-function "#8aff80")
+ (syntax-keyword "#ff80bf")
+ (syntax-string "#ffff80")
+ (syntax-type "#80ffea")
;; Give variables/imported names a distinct hue instead of blending into
;; the default foreground.
- (syntax-variable "#1f1f1f")
- (syntax-warning "#cb3a2a")
- (syntax-preprocessor "#336699")
- (syntax-annotation "#846e15")
- (syntax-attribute "#036a96")
- (syntax-number "#a34d14")
- (syntax-operator "#036a96")
+ (syntax-variable "#f8f8f2")
+ (syntax-warning "#ff9580")
+ (syntax-preprocessor "#8c78f0")
+ (syntax-annotation "#ffff80")
+ (syntax-attribute "#80ffea")
+ (syntax-number "#ffca80")
+ (syntax-operator "#80ffea")
;; Raw palette colors for rainbow headings, delimiters, terminal faces,
;; and anywhere else we need a predictable hue cycle.
- (pal-red "#cb3a2a")
- (pal-orange "#a34d14")
- (pal-yellow "#846e15")
- (pal-green "#14710a")
- (pal-cyan "#036a96")
- (pal-blue "#644ac9")
- (pal-magenta "#a3144d")
- (pal-gray "#635d97")
- (pal-white "#6e6e6e")
- (pal-black "#1f1f1f")
+ (pal-red "#ff9580")
+ (pal-orange "#ffca80")
+ (pal-yellow "#ffff80")
+ (pal-green "#8aff80")
+ (pal-cyan "#80ffea")
+ (pal-blue "#9580ff")
+ (pal-magenta "#ff80bf")
+ (pal-gray "#8a83b4")
+ (pal-white "#f8f8f2")
+ (pal-black "#8a898f")
(h1 (if tinty-scale-headings tinty-height-1 1.0))
(h2 (if tinty-scale-headings tinty-height-2 1.0))
(h3 (if tinty-scale-headings tinty-height-3 1.0))
@@ -347,13 +347,13 @@
;; === Terminal colors - mapped to the palette so they stay correct in both variants ===
`(term-color-black ((t (:foreground ,ui-bg-dark :background ,ui-bg-dark))))
- `(term-color-red ((t (:foreground "#cb3a2a" :background "#cb3a2a"))))
- `(term-color-green ((t (:foreground "#14710a" :background "#14710a"))))
- `(term-color-yellow ((t (:foreground "#846e15" :background "#846e15"))))
- `(term-color-blue ((t (:foreground "#644ac9" :background "#644ac9"))))
- `(term-color-magenta ((t (:foreground "#a3144d" :background "#a3144d"))))
- `(term-color-cyan ((t (:foreground "#036a96" :background "#036a96"))))
- `(term-color-white ((t (:foreground "#6e6e6e" :background "#6e6e6e"))))
+ `(term-color-red ((t (:foreground "#ff9580" :background "#ff9580"))))
+ `(term-color-green ((t (:foreground "#8aff80" :background "#8aff80"))))
+ `(term-color-yellow ((t (:foreground "#ffff80" :background "#ffff80"))))
+ `(term-color-blue ((t (:foreground "#9580ff" :background "#9580ff"))))
+ `(term-color-magenta ((t (:foreground "#ff80bf" :background "#ff80bf"))))
+ `(term-color-cyan ((t (:foreground "#80ffea" :background "#80ffea"))))
+ `(term-color-white ((t (:foreground "#f8f8f2" :background "#f8f8f2"))))
;; === EShell ===
`(eshell-prompt ((t (:foreground ,ui-accent :weight bold))))
@@ -559,14 +559,14 @@
`(ansi-color-magenta ((t (:foreground ,pal-magenta :background ,pal-magenta))))
`(ansi-color-cyan ((t (:foreground ,pal-cyan :background ,pal-cyan))))
`(ansi-color-white ((t (:foreground ,pal-white :background ,pal-white))))
- `(ansi-color-bright-black ((t (:foreground "#4f4f4f" :background "#4f4f4f"))))
- `(ansi-color-bright-red ((t (:foreground "#cb3a2a" :background "#cb3a2a"))))
- `(ansi-color-bright-green ((t (:foreground "#14710a" :background "#14710a"))))
- `(ansi-color-bright-yellow ((t (:foreground "#846e15" :background "#846e15"))))
- `(ansi-color-bright-blue ((t (:foreground "#644ac9" :background "#644ac9"))))
- `(ansi-color-bright-magenta ((t (:foreground "#a3144d" :background "#a3144d"))))
- `(ansi-color-bright-cyan ((t (:foreground "#036a96" :background "#036a96"))))
- `(ansi-color-bright-white ((t (:foreground "#707070" :background "#707070"))))
+ `(ansi-color-bright-black ((t (:foreground "#8a8997" :background "#8a8997"))))
+ `(ansi-color-bright-red ((t (:foreground "#ff9580" :background "#ff9580"))))
+ `(ansi-color-bright-green ((t (:foreground "#8aff80" :background "#8aff80"))))
+ `(ansi-color-bright-yellow ((t (:foreground "#ffff80" :background "#ffff80"))))
+ `(ansi-color-bright-blue ((t (:foreground "#9580ff" :background "#9580ff"))))
+ `(ansi-color-bright-magenta ((t (:foreground "#ff80bf" :background "#ff80bf"))))
+ `(ansi-color-bright-cyan ((t (:foreground "#80ffea" :background "#80ffea"))))
+ `(ansi-color-bright-white ((t (:foreground "#ededde" :background "#ededde"))))
;; === Anzu ===
`(anzu-replace-highlight ((t (:background ,ui-line-highlight :foreground ,ui-error :weight bold :strike-through t))))
@@ -1368,14 +1368,14 @@
;; === Term (extended) ===
`(term ((t (:foreground ,ui-fg :background ,ui-bg))))
`(term-bold ((t (:weight bold))))
- `(term-color-bright-black ((t (:foreground "#4f4f4f" :background "#4f4f4f"))))
- `(term-color-bright-red ((t (:foreground "#cb3a2a" :background "#cb3a2a"))))
- `(term-color-bright-green ((t (:foreground "#14710a" :background "#14710a"))))
- `(term-color-bright-yellow ((t (:foreground "#846e15" :background "#846e15"))))
- `(term-color-bright-blue ((t (:foreground "#644ac9" :background "#644ac9"))))
- `(term-color-bright-magenta ((t (:foreground "#a3144d" :background "#a3144d"))))
- `(term-color-bright-cyan ((t (:foreground "#036a96" :background "#036a96"))))
- `(term-color-bright-white ((t (:foreground "#707070" :background "#707070"))))
+ `(term-color-bright-black ((t (:foreground "#8a8997" :background "#8a8997"))))
+ `(term-color-bright-red ((t (:foreground "#ff9580" :background "#ff9580"))))
+ `(term-color-bright-green ((t (:foreground "#8aff80" :background "#8aff80"))))
+ `(term-color-bright-yellow ((t (:foreground "#ffff80" :background "#ffff80"))))
+ `(term-color-bright-blue ((t (:foreground "#9580ff" :background "#9580ff"))))
+ `(term-color-bright-magenta ((t (:foreground "#ff80bf" :background "#ff80bf"))))
+ `(term-color-bright-cyan ((t (:foreground "#80ffea" :background "#80ffea"))))
+ `(term-color-bright-white ((t (:foreground "#ededde" :background "#ededde"))))
;; === Transient ===
`(transient-heading ((t (:foreground ,ui-accent :weight bold))))