This commit is contained in:
2026-05-26 03:18:34 +02:00
parent 102a3357c3
commit 977e0e7690
19 changed files with 1457 additions and 347 deletions
+91 -320
View File
@@ -1,75 +1,101 @@
;;; config.el -*- lexical-binding: t; -*- ;;; config.el -*- lexical-binding: t; -*-
;; ============================================================ ;; ============================================================
;; Custom ;; Custom & Packages Loading
;; ============================================================ ;; ============================================================
(let ((custom-dir (expand-file-name "custom/" user-emacs-directory))) (let ((custom-dir (expand-file-name "custom/" user-emacs-directory)))
(when (file-directory-p custom-dir) (when (file-directory-p custom-dir)
(mapc #'load (directory-files custom-dir t "\\.el$")))) (mapc #'load (directory-files custom-dir t "\\.el$"))))
;; (let ((pkg-dir (expand-file-name "packages/" user-emacs-directory)))
;; (when (file-directory-p pkg-dir)
;; (mapc #'load (directory-files pkg-dir t "\\.el$"))))
(add-to-list 'load-path (expand-file-name "packages/" user-emacs-directory))
;;(add-to-list 'load-path (expand-file-name "custom/" user-emacs-directory))
(add-to-list 'custom-theme-load-path (expand-file-name "themes/" user-emacs-directory)) (add-to-list 'custom-theme-load-path (expand-file-name "themes/" user-emacs-directory))
;; ============================================================ (require 'visuals-packages) ;;ui, eye candy
;; Keybindings (require 'editing-packages) ;;text editing
;; ============================================================ (require 'system-packages) ;; emacs itself
(require 'tutilities-packages) ;; tertiary utilities
(require 'completion-packages) ;; ui, functional
(use-package general (use-package general
:config :config
(general-def (general-def
:keymaps 'global :keymaps 'global
"C-S-c" #'my/system-copy "C-S-c" #'my/system-copy
"C-S-x" #'my/system-cut "C-S-x" #'my/system-cut
"C-S-v" #'my/system-paste "C-S-v" #'my/system-paste
"C-z" #'undo "C-z" #'undo
"C-S-z" #'undo-redo "C-S-z" #'undo-redo
) "C-k" #'avy-kill-whole-line
"C-r" #'recenter-top-bottom
"C-b" #'scroll-down-command
"C-<backspace>" #'my/delete-word-backward
"M-w" #'clipetty-kill-ring-save
)
(general-def (general-def
:keymaps 'override :keymaps 'override
"C-k" #'avy-kill-whole-line "M-g g" #'avy-goto-line
"C-s C-f" #'avy-goto-char-timer "C-s C-f" #'avy-goto-char-timer
"C-s C-s C-f" #'my/avy-char-region "C-s C-s C-f" #'my/avy-char-region
"C-s C-S-s" #'my/avy-line-region "C-s C-S-s" #'my/avy-line-region
"C-s C-l" #'consult-line "C-s w" #'my/vterm-sync-here
"C-s C-e" #'er/expand-region "C-x C-b" #'buffer-table
"C-x C-b" #'buffer-table "C-s C-l" #'consult-line
"M-g g" #'avy-goto-line "C-s C-e" #'expreg-expand
"C-r" #'recenter-top-bottom )
"C-s w" #'my/vterm-sync-here
"C-b" #'scroll-down-command
"C-<backspace>" #'my/delete-word-backward)
(general-define-key (general-define-key
:keymaps 'global :keymaps 'global
"C-w" nil) "C-w" #'delete-window))
;; If you want certain keys to ONLY work in Meow Normal state, use :states.
)
;; ============================================================ ;; ============================================================
;; Settings, UI ;; Core Settings & UI
;; ============================================================ ;; ============================================================
(setq kill-ring-max 1 (setq kill-ring-max 1
select-enable-clipboard nil select-enable-clipboard nil
select-enable-primary nil select-enable-primary nil
save-interprogram-paste-before-kill nil save-interprogram-paste-before-kill nil
xterm-extra-capabilities '(getSelection setSelection modifyOtherKeys) ;;xterm-extra-capabilities '(getSelection setSelection modifyOtherKeys)
mouse-drag-copy-region nil mouse-drag-copy-region nil
truncate-lines nil
tab-width 4
truncate-lines nil
display-line-numbers-type t display-line-numbers-type t
cursor-type 'bar cursor-type 'bar
savehist-additional-variables '(kill-ring search-ring) savehist-additional-variables '(kill-ring search-ring)
recentf-max-saved-items 75 recentf-max-saved-items 75
global-auto-revert-non-file-buffers t
undo-limit 60000000
undo-strong-limit 90000000
undo-outer-limit 120000000
) )
(setq-default
tab-width 4
js-indent-level 4
typescript-indent-level 4
typescript-ts-mode-indent-offset 4
typescript-ts-mode-indent-offset 4)
;; Modes ;; Modes
(global-hl-line-mode t ) (global-hl-line-mode t )
(global-display-line-numbers-mode 1) (global-display-line-numbers-mode 1)
(hl-line-mode 1) (hl-line-mode 1)
(savehist-mode 1) (savehist-mode 1)
(global-clipetty-mode) (global-clipetty-mode)
(global-auto-revert-mode)
(yas-global-mode t)
;; Fonts ;; Fonts
(set-face-attribute 'default nil :family "Fira Code" :height 120) (set-face-attribute 'default nil :family "Noto Sans Mono" :height 120)
(set-face-attribute 'variable-pitch nil :family "Noto Sans" :height 140) (set-face-attribute 'variable-pitch nil :family "Noto Sans" :height 140)
;; Apply variable pitch to specific modes ;; Apply variable pitch to specific modes
@@ -77,318 +103,63 @@
(add-hook hook (lambda () (buffer-face-set '(:family "Noto Sans" :height 140))))) (add-hook hook (lambda () (buffer-face-set '(:family "Noto Sans" :height 140)))))
(add-to-list 'auto-mode-alist '("\\.qd$" . markdown-mode)) (add-to-list 'auto-mode-alist '("\\.qd$" . markdown-mode))
(add-to-list 'auto-mode-alist '("\\.ino$" . c++-mode))
(add-to-list 'term-file-aliases '("xterm-256" . "xterm")) (add-to-list 'term-file-aliases '("xterm-256" . "xterm"))
;; Recentf cleanup ;; Recentf cleanup
(with-eval-after-load 'recentf (with-eval-after-load 'recentf
(run-at-time nil 600 #'recentf-cleanup) (run-at-time nil 600 #'recentf-cleanup)
(setq recentf-exclude '(".*/$"))) ;; don't include dirs (setq recentf-exclude '(".*/$")))
;; ============================================================ ;; ============================================================
;; packages ;; Native Emacs Configuration
;; ============================================================ ;; ============================================================
(use-package emacs (use-package emacs
:ensure nil :ensure nil
:custom :custom
(mason-setup)
(tab-always-indent 'complete) (tab-always-indent 'complete)
(TEXT-mode-ispell-word-completion nil) (completion-ignore-case t)
(read-extended-command-predicate #'command-completion-default-include-p) (read-file-name-completion-ignore-case t)
(read-buffer-completion-ignore-case t)
(text-mode-ispell-word-completion nil)
(backup-directory-alist '(("." . "~/MyEmacsBackups")))
(backup-by-copying t)
) )
(use-package corfu ;; Tree-sitter & LSP tweaks (Core transformative changes)
:init (with-eval-after-load 'treesit
(global-corfu-mode) (setq treesit-font-lock-level 4))
(corfu-popupinfo-mode) ;; (with-eval-after-load 'typescript-ts-mode
:custom ;; (setq typescript-ts-mode-indent-offset 2)
(corfu-auto t) ;; (defvaralias 'typescript-indent-level 'typescript-ts-mode-indent-offset))
(corfu-auto-delay 0.2)
(corfu-auto-prefix 2)
(corfu-popupinfo-delay '(0.5 . 0.3)))
(use-package vertico
:config
:init
(vertico-mode))
(use-package mason (use-package mason
:config :config
:init (mason-setup))
(mason-ensure))
(use-package marginalia (use-package lsp-mode
:hook ((prog-mode . lsp-deferred) ;try to automatically start lsp-mode when prog-mode
(typescript-ts-mode . lsp-deferred)
(js-ts-mode . lsp-deferred)
(tsx-ts-mode . lsp-deferred)
(arduino-mode . lsp-deferred)
(lsp-mode . lsp-enable-which-key-integration))
:commands lsp
:config :config
:init (add-to-list 'lsp-language-id-configuration '(arduino-mode . "cpp"))
(marginalia-mode)) (lsp-register-client
(make-lsp-client
(use-package orderless :new-connection (lsp-stdio-connection '("clangd" "--header-insertion=never"))
:custom :activation-fn (lsp-activate-on "arduino")
(completion-styles '(orderless basic)) :server-id 'lsp-arduino-clangd
(completion-category-overrides '((file (styles partial-completion)))) )))
(completion-pcm-leading-wildcard t)) ;; Emacs 31: partial-completion behaves like substring
(use-package meow
:init (setq meow--kbd-kill-region "C-S-x")
:config
(setq meow-use-clipboard nil)
(meow-setup)
(meow-global-mode 1)
(setq meow-use-clipboard t))
(use-package avy
:config
(setq avy-timeout-seconds 0.25
avy-style 'at-full
avy-keys (number-sequence ?a ?z)))
(use-package treesit-auto
:custom
(treesit-auto-install 'prompt)
:config
(treesit-auto-add-to-auto-mode-alist 'all)
(global-treesit-auto-mode)
)
(use-package treesit-fold
:commands (treesit-fold-close
treesit-fold-close-all
treesit-fold-open
treesit-fold-toggle
treesit-fold-open-all
treesit-fold-mode
global-treesit-fold-mode
treesit-fold-open-recursively
treesit-fold-line-comment-mode)
:custom
(treesit-fold-line-count-show t)
(treesit-fold-line-count-format "")
:config
(set-face-attribute 'treesit-fold-replacement-face nil
:foreground "#808080"
:box nil
:weight 'bold))
;; Systems and General Purpose
(add-hook 'c-ts-mode-hook #'treesit-fold-mode)
(add-hook 'c++-ts-mode-hook #'treesit-fold-mode)
(add-hook 'java-ts-mode-hook #'treesit-fold-mode)
(add-hook 'rust-ts-mode-hook #'treesit-fold-mode)
(add-hook 'go-ts-mode-hook #'treesit-fold-mode)
(add-hook 'ruby-ts-mode-hook #'treesit-fold-mode)
;; Web and Frontend
(add-hook 'js-ts-mode-hook #'treesit-fold-mode)
(add-hook 'typescript-ts-mode-hook #'treesit-fold-mode)
(add-hook 'tsx-ts-mode-hook #'treesit-fold-mode)
(add-hook 'css-ts-mode-hook #'treesit-fold-mode)
(add-hook 'html-ts-mode-hook #'treesit-fold-mode)
;; Scripting and Infrastructure
(add-hook 'bash-ts-mode-hook #'treesit-fold-mode)
(add-hook 'cmake-ts-mode-hook #'treesit-fold-mode)
(add-hook 'dockerfile-ts-mode-hook #'treesit-fold-mode)
;; Data and Configuration
(add-hook 'json-ts-mode-hook #'treesit-fold-mode)
(add-hook 'toml-ts-mode-hook #'treesit-fold-mode)
(add-hook 'emacs-lisp-mode-hook #'outline-minor-mode)
(add-hook 'lisp-interaction-mode-hook #'hs-minor-mode) ; scratch
(add-hook 'lisp-mode-hook #'outline-minor-mode)
(add-hook 'conf-mode-hook #'outline-minor-mode)
(add-hook 'markdown-mode-hook #'outline-minor-mode)
(add-hook 'diff-mode-hook #'outline-minor-mode)
(use-package highlight-quoted
:hook (emacs-lisp-mode . highlight-quoted-mode))
(use-package highlight-defined
:hook (emacs-lisp-mode . highlight-defined-mode))
(use-package color-identifiers-mode
:hook (emacs-lisp-mode . color-identifiers-mode))
(use-package rainbow-delimiters
:hook
(prog-mode . rainbow-delimiters-mode)
(inferior-ess-mode . rainbow-delimiters-mode))
(use-package nerd-icons-completion
:after marginalia
:config
(nerd-icons-completion-mode)
(add-hook 'marginalia-mode-hook #'nerd-icons-completion-marginalia-setup))
(use-package nerd-icons-corfu)
(use-package nerd-icons-dired
:hook
(dired-mode . nerd-icons-dired-mode))
(use-package smartparens
:init (smartparens-global-mode 1)
:config
(sp-pair "\"" "\"" :wrap "C-c \"")
(sp-pair "'" "'" :wrap "C-c '")
(sp-pair "<<" ">>" :wrap "C-c <"))
(use-package indent-bars
:config
(setq indent-bars-prefer-character ?.
indent-bars-pattern "true"
indent-bars-width-frac 1
indent-bars-pad-frac 0.2
indent-bars-color-by-depth '(:regexp "outline-\\([0-9]+\\)" :blend 0.9)
indent-bars-highlight-current-depth '(:face default :blend 0.4)
)
:init
(add-hook 'prog-mode-hook #'indent-bars-mode))
(use-package kirigami
:commands (kirigami-open-fold kirigami-open-fold-rec kirigami-close-fold
kirigami-toggle-fold kirigami-open-folds
kirigami-close-folds-except-current
kirigami-close-folds))
(use-package clipetty
:hook (after-init . global-clipetty-mode))
(use-package denote
:config
(setq denote-directory (list (expand-file-name "~/lyfi/SOR/Notes/"))
denote-file-type 'markdown-yaml
denote-prompts '(title subdirectory keywords)))
(use-package colorful-mode
:init (setq colorful-allow-mouse-clicks nil))
;; Tree-sitter & LSP tweaks
(with-eval-after-load 'treesit
(setq treesit-font-lock-level 4))
(with-eval-after-load 'typescript-ts-mode
(setq typescript-ts-mode-indent-offset 2)
(defvaralias 'typescript-indent-level 'typescript-ts-mode-indent-offset))
(with-eval-after-load 'lsp-mode
(setq lsp-completion-provider :none))
;; ============================================================ ;; ============================================================
;; Functions ;; Theming
;; ============================================================ ;; ============================================================
(defun my/system-copy (beg end)
"Copy region directly to system clipboard, bypassing Emacs' kill ring.
Uses wl-copy on Wayland GUI, and Clipetty (OSC 52) in TUI/SSH."
(interactive "r")
(unless (region-active-p)
(user-error "No active region to copy"))
(let ((text (buffer-substring-no-properties beg end)))
(if (display-graphic-p)
;; GUI: Pipe text directly to Wayland clipboard
(let ((process-connection-type nil))
(let ((proc (start-process "wl-copy" nil "wl-copy")))
(process-send-string proc text)
(process-send-eof proc)))
;; TUI/SSH: Use clipetty to send OSC 52 sequence to kitty
(if (fboundp 'clipetty-set-selection)
(clipetty-set-selection text)
(error "Clipetty not loaded. Ensure (global-clipetty-mode) is active")))
(deactivate-mark)
(message "Copied to system clipboard")))
(defun my/system-cut (beg end)
"Cut region directly to system clipboard, bypassing the kill ring."
(interactive "r")
(my/system-copy beg end)
;; delete-region deletes without adding to the kill ring
(delete-region beg end))
(defun my/system-paste ()
"Paste from system clipboard directly to point, bypassing the kill ring."
(interactive)
(if (display-graphic-p)
;; GUI: Read directly from Wayland clipboard and insert
(let ((text (shell-command-to-string "wl-paste -n")))
(insert text))
;; TUI/SSH: Warn the user to use the terminal's native paste
(message "In a terminal, use your terminal emulator's native paste shortcut (e.g., Ctrl-Shift-V).")))
(defun dired-follow-symlink ()
"In dired, visit the file or directory at point by its true physical path."
(interactive)
(let ((filename (dired-get-file-for-visit)))
(if filename
(find-file (file-truename filename))
(message "No file at point"))))
(defun my/vterm-sync-here ()
"Switch to vterm and instantly 'cd' to the current buffer's directory."
(interactive)
(let ((cwd default-directory))
(vterm-toggle)
(vterm-send-string (format "cd %s" (shell-quote-argument cwd)))
(vterm-send-return)))
(defun my/delete-word-backward ()
"Delete the word and any preceding whitespace without affecting the kill ring."
(interactive)
(let ((start (point)))
(skip-chars-backward "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")
(skip-chars-backward " \t")
(delete-region (point) start)))
(defun my-modern-delete-word-backward ()
"Delete a block of similar characters backward without using the kill ring.
Similar characters are grouped as:
1. Whitespace (including newlines)
2. Alphanumerics
3. Special characters/symbols"
(interactive)
(let ((end (point))
(start (1- (point))))
(when (>= start 1)
(let* ((first-char (char-before end))
(first-type (my-get-char-type first-char)))
;; Move start point backward as long as the character type matches
(while (and (>= start 1)
(string= first-type (my-get-char-type (char-before start))))
(setq start (1- start)))
;; Delete the range without adding to the kill ring
(delete-region start end)))))
(defun my-get-char-type (char)
"Helper to categorize characters into three groups."
(let ((cat (char-category char)))
(cond
((member cat '("space" "newline")) "whitespace")
((member cat '("letter" "number")) "alphanum")
(t "special"))))
;; Bind it to Ctrl-Backspace
;; Note: In many terminals, C-Backspace is sent as C-h or C-Delete.
;; This binding works in GUI Emacs.
(global-set-key (kbd "C-<backspace>") 'my-modern-delete-word-backward)
;; ============================================================
;; Theming, ui
;; ============================================================
;;
(my/apply-theme (selected-frame)) (my/apply-theme (selected-frame))
;; Apply to all future frames (important for emacsclient users) ;;(add-hook 'window-setup-hook (lambda () (my/apply-theme (selected-frame))))
(add-hook 'after-make-frame-functions 'my/apply-theme) (add-hook 'after-make-frame-functions 'my/apply-theme)
;;fonts
(setq doom-font "Fira Code 12")
(setq doom-variable-pitch-font "Noto Sans 14")
(setq nerd-icons-font-family "Symbols Nerd Font Mono")
(defun my-set-buffer-font ()
"Set a specific font for the current buffer only."
(buffer-face-set '(:family "Noto Sans" :height 140)))
(add-hook 'after-make-frame-functions #'my/apply-theme) (setq nerd-icons-font-family "Symbols Nerd Font Mono")
+2 -1
View File
@@ -12,8 +12,9 @@
garbage-collection-messages t) garbage-collection-messages t)
;; Temporarily raise GC threshold during startup ;; Temporarily raise GC threshold during startup
(setq gc-cons-threshold most-positive-fixnum (setq gc-cons-threshold 8000000000
gc-cons-percentage 0.6) gc-cons-percentage 0.6)
(add-hook 'after-init-hook (lambda () (setq gc-cons-threshold 80000000)))
;; Disable UI chrome ;; Disable UI chrome
(dolist (mode '(menu-bar-mode tool-bar-mode scroll-bar-mode)) (dolist (mode '(menu-bar-mode tool-bar-mode scroll-bar-mode))
+54 -25
View File
@@ -38,44 +38,57 @@
(let ((load-source-file-function nil)) (load "./elpaca-autoloads")))) (let ((load-source-file-function nil)) (load "./elpaca-autoloads"))))
(add-hook 'after-init-hook #'elpaca-process-queues) (add-hook 'after-init-hook #'elpaca-process-queues)
(elpaca `(,@elpaca-order)) (elpaca `(,@elpaca-order))
;;(elpaca-wait)
(elpaca benchmark-init)
(elpaca-wait) (elpaca-wait)
(benchmark-init/activate)
;; emacs 30 fix ;; emacs 30 fix
;;(add-to-list 'elpaca-ignored-dependencies 'compat) ;;(add-to-list 'elpaca-ignored-dependencies 'compat)
;; ============================================================================== ;; ==============================================================================
;; CORE UI & INTERFACE ;; CORE UI & INTERFACE
;; ============================================================================== ;; ==============================================================================
(elpaca compat) (elpaca compat)
(elpaca general) ;; Keybindings (elpaca general) ;Keybindings
(elpaca vertico) ;; Vertical completion (elpaca vertico) ;Vertical completion
(elpaca orderless) ;; Filtering for Consult/Vertico (elpaca orderless) ;Filtering for Consult/Vertico
(elpaca marginalia) ;; Annotations in the minibuffer (elpaca marginalia) ;Annotations in the minibuffer
(elpaca corfu) ;; In-buffer completion (elpaca corfu) ;In-buffer completion
(elpaca corfu-terminal) ;necessary for popup on emacs <31
(elpaca-wait) ;Ensure UI is ready before loading tools
(elpaca nerd-icons) (elpaca nerd-icons)
(elpaca nerd-icons-completion) (elpaca nerd-icons-completion)
(elpaca nerd-icons-dired) (elpaca nerd-icons-dired)
(elpaca nerd-icons-corfu) (elpaca nerd-icons-corfu)
(elpaca-wait) ;; Ensure UI is ready before loading tools (elpaca doom-modeline)
(elpaca base16-theme)
;; ============================================================================== ;; ==============================================================================
;; EDITING & NAVIGATION ;; EDITING & NAVIGATION
;; ============================================================================== ;; ==============================================================================
(elpaca meow) ;; Modal editing
(elpaca avy) ;; Fast jumping (elpaca meow) ; Modal editing
(elpaca avy) ; Fast jumping
(elpaca smartparens) (elpaca smartparens)
(elpaca expand-region) ;;(elpaca expand-region) ; replaced by expreg
(elpaca expreg) ;expand selection
(elpaca undo-fu) (elpaca undo-fu)
(elpaca vundo) ;; Visual undo tree (elpaca vundo) ; Visual undo tree
(elpaca xclip) (elpaca xclip)
(elpaca clipetty) (elpaca clipetty)
(elpaca embark) ;; Contextual actions (elpaca embark) ; Contextual actions
(elpaca kirigami) ;; Selection/Editing (elpaca embark-consult)
(elpaca jinx) ;; Fast duplicate lines (elpaca lsp-embark)
(elpaca kirigami) ; Selection/Editing
(elpaca jinx) ; Fast duplicate lines
;; ============================================================================== ;; ==============================================================================
;; CODE ANALYSIS & VISUALS ;; CODE ANALYSIS & VISUALS
;; ============================================================================== ;; ==============================================================================
(elpaca treesit-auto) (elpaca treesit-auto)
(elpaca treesit-fold) (elpaca treesit-fold)
(elpaca highlight-quoted) (elpaca highlight-quoted)
@@ -88,49 +101,55 @@
;; ============================================================================== ;; ==============================================================================
;; LSP & DEVELOPMENT ;; LSP & DEVELOPMENT
;; ============================================================================== ;; ==============================================================================
(elpaca mason) ;; LSP server manager
(elpaca mason) ; LSP server manager
(elpaca lsp-mode) (elpaca lsp-mode)
(elpaca lsp-ui) (elpaca lsp-ui)
(elpaca consult-lsp) (elpaca consult-lsp)
(elpaca flycheck)
(elpaca yasnippet)
(elpaca yasnippet-snippets)
;; ============================================================================== ;; ==============================================================================
;; LANGUAGE MODES ;; LANGUAGE MODES
;; ============================================================================== ;; ==============================================================================
(elpaca kdl-mode) (elpaca kdl-mode)
(elpaca csv-mode) (elpaca csv-mode)
(elpaca arduino-mode)
(elpaca nix-mode)
;; ============================================================================== ;; ==============================================================================
;; UTILITIES ;; UTILITIES
;; ============================================================================== ;; ==============================================================================
(elpaca consult) ;; Enhanced search/navigation
(elpaca consult) ; Enhanced search/navigation
(elpaca vterm) (elpaca vterm)
(elpaca vterm-toggle) (elpaca vterm-toggle)
(elpaca colorful-mode) (elpaca colorful-mode)
;;(elpaca dirvish) ;;broken on emacs 30 (elpaca (dirvish :repo "latiagertrutis/dirvish"
:host github)) ; broken on emacs 30, fixed by using fork
(elpaca transient) (elpaca transient)
(elpaca magit) (elpaca magit)
(elpaca casual) (elpaca transpose-frame)
;; ============================================================================== ;; ==============================================================================
;; KNOWLEDGE MANAGEMENT (ZK/DENOTE) ;; KNOWLEDGE MANAGEMENT (ZK/DENOTE)
;; ============================================================================== ;; ==============================================================================
(elpaca denote) (elpaca denote)
(elpaca consult-denote) (elpaca consult-denote)
(elpaca denote-menu) (elpaca denote-menu)
(elpaca zk) (elpaca zk)
(elpaca zk-index) (elpaca zk-index)
(elpaca-wait)
;; ============================================================================== ;; ==============================================================================
;; ELPACA CONFIGURATION ;; ELPACA CONFIGURATION
;; ============================================================================== ;; ==============================================================================
(elpaca elpaca-use-package (elpaca elpaca-use-package
;; Automatically adds :ensure t and :defer t to use-package declarations ;; Automatically adds :ensure t and :defer t to use-package declarations
(elpaca-use-package-mode) (elpaca-use-package-mode)
(setq elpaca-use-package-by-default t)) (setq elpaca-use-package-by-default t))
(elpaca-wait)
(load (expand-file-name "config.el" user-emacs-directory)) (load (expand-file-name "config.el" user-emacs-directory))
(custom-set-variables (custom-set-variables
;; custom-set-variables was added by Custom. ;; custom-set-variables was added by Custom.
@@ -138,11 +157,21 @@
;; Your init file should contain only one such instance. ;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right. ;; If there is more than one, they won't work right.
'(custom-safe-themes '(custom-safe-themes
'("faaccacbb368285948d610df3814315fa5f7727358ddb77ad8dd16d15cd58d9f" '("c9afaac8aedf1bb721d21053a79a65969fd8f44314d22ff29c8981709ee4245f"
default))) "0672d7fbe7fa24344bbe98461a8db26cb52a074354f9a4529cea4ba1af456044"
"664111db1521fe3351061dc87aea95fa98b3f244f4b830fbc048d39c3a8bc125"
"df7b90a88131500ce9e5a911c815ce96eb7855d88747830f298c6914d80be48e"
"4fa3b7b09062f707a4770804dda9dda4807aa5c86623076b9741897df2e7acdd"
"5bfc7c010e3ee71396e421c2e8a5a561c305da812eba9e0e48742896d8e45d97"
"48cebeaf733cae05b5265eceafea44c042f2fc65906ccd999f652d230be25b6f"
"1b4f5bebc7f47257997a8d56e797e2e8d85581bbd824a275bb1ebc7aea7c1399"
"a7dab7ccf5c97be13a1d957e8847cfda7cf768554595429a43f6b6393459c45e"
"ca223796522e77b1813111ad2994b8e579df1000d1e3c34b604fe0a18ad45dec"
default)))
(custom-set-faces (custom-set-faces
;; custom-set-faces was added by Custom. ;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful. ;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance. ;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right. ;; If there is more than one, they won't work right.
) '(meow-insert-cursor ((t (:inherit unspecified :background "#c75e10"))))
'(meow-normal-cursor ((t (:foreground "#7cc9f2" :background "#f8f8ff")))))
+29
View File
@@ -0,0 +1,29 @@
;;; completion-packages.el --- Completion stack configuration -*- lexical-binding: t; -*-
(use-package corfu
:config
(global-corfu-mode)
(corfu-popupinfo-mode)
(setq corfu-quit-at-boundary 'seperator
corfu-quit-no-match 'seperator)
:custom
(corfu-auto t)
(corfu-auto-delay 0.2)
(corfu-auto-prefix 2)
(corfu-popupinfo-delay '(0.5 . 0.3)))
(use-package vertico
:init
(vertico-mode))
(use-package marginalia
:init
(marginalia-mode))
(use-package orderless
:custom
(completion-styles '(orderless basic))
(completion-category-overrides '((file (styles partial-completion))))
(completion-pcm-leading-wildcard t))
(provide 'completion-packages)
+27
View File
@@ -0,0 +1,27 @@
;;; editing-packages.el --- Editing and navigation configuration -*- lexical-binding: t; -*-
(use-package meow
:config
(setq meow-use-clipboard nil
meow--kbd-kill-region "C-S-x")
(meow-setup)
(meow-global-mode 1)
)
(use-package avy
:config
(setq avy-timeout-seconds 0.25
avy-style 'at-full
avy-keys (number-sequence ?a ?z)))
(use-package smartparens
:config
(smartparens-global-mode 1))
(use-package kirigami
:commands (kirigami-open-fold kirigami-open-fold-rec kirigami-close-fold
kirigami-toggle-fold kirigami-open-folds
kirigami-close-folds-except-current
kirigami-close-folds))
(provide 'editing-packages)
+32
View File
@@ -0,0 +1,32 @@
;;; system-packages.el --- System and utility package configuration -*- lexical-binding: t; -*-
(use-package clipetty
:hook (after-init . global-clipetty-mode))
(use-package dirvish
:defer t
:config
(dirvish-peek-mode)
(dirvish-side-follow-mode)
(add-hook 'dirvish-directory-view-mode 'diredfl-mode))
(use-package embark
:bind
(("C-." . embark-act)
("C-h B" . embark-bindings)
)
:config
(add-to-list 'display-buffer-alist
'("\\`\\*Embark Collect \\(Live\\|Completions\\)\\*"
nil
(window-parameters (mode-line-format . none))))
)
(use-package benchmark-init
:hook
(after-init . benchmark-init/deactivate))
(provide 'system-packages)
+12
View File
@@ -0,0 +1,12 @@
(use-package denote
:config
(setq denote-directory (list (expand-file-name "~/lyfi/SOR/Notes/"))
denote-file-type 'markdown-yaml
denote-prompts '(title subdirectory keywords)))
(use-package jinx
:hook (emacs-startup . global-jinx-mode)
:custom (jinx-languages "en_US nl_NL"))
(provide 'tutilities-packages)
+99
View File
@@ -0,0 +1,99 @@
;;; visuals-packages.el --- Visual and structural configuration -*- lexical-binding: t; -*-
(use-package treesit-auto
:functions global-treesit-auto-mode
:config
(treesit-auto-add-to-auto-mode-alist 'all)
:hook (after-init . global-treesit-auto-mode)
:custom
(treesit-auto-install 'prompt)
)
(use-package treesit-fold
:commands (treesit-fold-close
treesit-fold-close-all
treesit-fold-open
treesit-fold-toggle
treesit-fold-open-all
treesit-fold-mode
global-treesit-fold-mode
treesit-fold-open-recursively
treesit-fold-line-comment-mode)
:custom
(treesit-fold-line-count-show t)
(treesit-fold-line-count-format "--▼--")
:config
(set-face-attribute 'treesit-fold-replacement-face nil
:foreground "#808080"
:box nil
:weight 'bold))
;; Tree-sitter hooks
(dolist (hook '(c-ts-mode-hook c++-ts-mode-hook java-ts-mode-hook rust-ts-mode-hook
go-ts-mode-hook ruby-ts-mode-hook js-ts-mode-hook typescript-ts-mode-hook
tsx-ts-mode-hook css-ts-mode-hook html-ts-mode-hook bash-ts-mode-hook
cmake-ts-mode-hook dockerfile-ts-mode-hook json-ts-mode-hook toml-ts-mode-hook))
(add-hook hook #'treesit-fold-mode))
(use-package highlight-quoted
:hook (emacs-lisp-mode . highlight-quoted-mode))
(use-package highlight-defined
:hook (emacs-lisp-mode . highlight-defined-mode))
(use-package color-identifiers-mode
:hook (emacs-lisp-mode . color-identifiers-mode))
(use-package rainbow-delimiters
:hook
(prog-mode . rainbow-delimiters-mode)
(inferior-ess-mode . rainbow-delimiters-mode))
(use-package indent-bars
:config
(setq indent-bars-prefer-character ?.
indent-bars-pattern "true"
indent-bars-width-frac 1
indent-bars-pad-frac 0.2
indent-bars-color-by-depth '(:regexp "outline-\\([0-9]+\\)" :blend 0.9)
indent-bars-highlight-current-depth '(:face default :blend 0.4))
(add-hook 'prog-mode-hook #'indent-bars-mode)
:hook (prog-mode . indent-bars-mode))
(use-package colorful-mode
:config (setq colorful-allow-mouse-clicks nil))
(use-package doom-modeline
:defer t
:hook
(window-setup . doom-modeline-mode)
:config
(setq
doom-modeline-minor-modes t
doom-modeline-indent-info t)
)
;;---
;; icons
;;---
(use-package nerd-icons-completion
:after marginalia
:config
(nerd-icons-completion-mode)
(add-hook 'marginalia-mode-hook #'nerd-icons-completion-marginalia-setup))
(use-package nerd-icons-corfu
:after corfu
:config
(add-to-list 'corfu-margin-formatters #'nerd-icons-corfu-formatter))
(use-package nerd-icons-dired
:config
(nerd-icons-dired-mode)
(add-hook 'dired-mode-hook #'nerd-icons-dired-mode))
(provide 'visuals-packages)
+31
View File
@@ -0,0 +1,31 @@
(require 'base16-theme)
(defvar base16-my-custom-theme-colors
'(:base00 "#f8f8ff" ;; bg
:base01 "#7cc9f2" ;; light-blue
:base02 "#aaafff" ;; selection
:base03 "#cca0ff" ;; light-purple
:base04 "#666666" ;; font-lock-comment-face
:base05 "#010101" ;; fg
:base06 "#007cbf" ;; dark-blue
:base07 "#b05197" ;; magenta
:base08 "#cf3f29" ;; red
:base09 "#c75e10" ;; orange
:base0A "#f0b94a" ;; yellow
:base0B "#429e66" ;; green
:base0C "#129cc9" ;; cyan
:base0D "#2374de" ;; medium-blue
:base0E "#EF89DF" ;; accent-pink
:base0F "#a64dd6" ;; purple
))
(deftheme base16-my-custom-theme)
(use-package base16-theme
:config
;; Define the theme and its faces in one shot
(base16-theme-define 'base16-my-custom-theme base16-my-custom-theme-colors)
;; Explicitly enable it since we aren't using load-theme
(enable-theme 'base16-my-custom-theme))
+149
View File
@@ -0,0 +1,149 @@
;;; cutarv41-theme.el --- A high-contrast light theme with blue/pink accents -*- lexical-binding: t; no-byte-compile: t; -*-
(deftheme cutarv41
"A high-contrast light theme with blue/pink accents, optimized for clarity and syntax highlighting.")
(let ((class '((class color) (min-colors 256)))
;; --- Palette ---
;; Base UI
(bg "#f8f8ff") ;; Default background
(fg "#010101") ;; Default foreground
(cursor "#f8f8ff") ;; Cursor bg
(selection "#aaafff") ;; Region/selected text background
;; ANSI Normal
(dark-blue "#007cbf") ;; Fringe, minibuffer prompts, function names, line numbers
(red "#cf3f29") ;; Errors, negation chars
(medium-blue "#2374de") ;; Keywords, active hyperlinks
(orange "#c75e10") ;; Constants, debug indicators
(magenta "#b05197") ;; Strings, variables, UI dividers
(green "#429e66") ;; Docstrings, comment delimiters
(cyan "#129cc9") ;; Types/Classes
(purple "#a64dd6") ;; Built-ins, visited links
;; ANSI Bright
(light-blue "#7cc9f2") ;; Inactive mode-line/tabs background
(light-red "#f07b69") ;; Warnings, regex constructs
(accent-blue "#6f9ff2") ;; Accents
(yellow "#f0b94a") ;; Active search, warnings
(accent-pink "#EF89DF") ;; Active mode-line/tabs
(bright-green "#2cd45c") ;; Status indicators
(bright-cyan "#11ddee") ;; hl-line hl-tab
(light-purple "#cca0ff")) ;; Accents
(custom-theme-set-faces
'cutarv41
;; --- Core UI ---
`(default ((,class (:background ,bg :foreground ,fg))))
`(cursor ((,class (:background ,bg :foreground ,bg))))
`(fringe ((,class (:background ,bg :foreground ,dark-blue))))
`(region ((,class (:background ,selection))))
`(highlight ((,class (:background ,light-blue :foreground ,bg))))
`(hl-line ((,class (:background ,light-purple :extend t))))
`(link ((,class (:foreground ,medium-blue :underline t))))
`(link-visited ((,class (:foreground ,purple :underline t))))
`(minibuffer-prompt ((,class (:foreground ,dark-blue :weight bold))))
`(vertical-border ((,class (:foreground ,magenta))))
;; --- Syntax Highlighting (Font Lock) ---
`(font-lock-comment-face ((,class (:foreground ,"#666666" :slant italic))))
`(font-lock-comment-delimiter-face ((,class (:foreground ,bright-green :slant italic))))
`(font-lock-keyword-face ((,class (:foreground ,medium-blue :weight bold))))
`(font-lock-string-face ((,class (:foreground ,green))))
`(font-lock-regexp-grouping-backslash ((,class (:foreground ,yellow))))
`(font-lock-regexp-grouping-construct ((,class (:foreground ,light-red))))
`(font-lock-function-name-face ((,class (:foreground ,cyan :weight bold))))
`(font-lock-variable-name-face ((,class (:foreground ,medium-blue))))
`(font-lock-type-face ((,class (:foreground ,purple))))
`(font-lock-constant-face ((,class (:foreground ,light-red))))
`(font-lock-builtin-face ((,class (:foreground ,orange))))
`(font-lock-doc-face ((,class (:inherit font-lock-comment-face :foreground ,green))))
`(font-lock-warning-face ((,class (:foreground ,light-red :weight bold))))
`(font-lock-negation-char-face ((,class (:foreground ,red))))
;; --- Mode-line ---
`(mode-line ((,class (:background ,accent-pink :foreground ,bg))))
`(mode-line-inactive ((,class (:background ,light-blue :foreground ,fg :box (:line-width 1 :color ,accent-blue)))))
`(mode-line-buffer-id ((,class (:weight bold))))
`(mode-line-highlight ((,class (:box (:line-width 2 :color ,fg)))))
;; --- Search & Isearch ---
`(isearch ((,class (:background ,yellow :foreground ,bg :weight bold))))
`(isearch-fail ((,class (:background ,red :foreground ,fg))))
`(lazy-highlight ((,class (:background ,orange :foreground ,bg))))
;; --- Line Numbers ---
`(line-number ((,class (:foreground ,light-blue :background ,fg))))
`(line-number-current-line ((,class (:foreground ,bg :background ,accent-pink :weight bold))))
;; --- Package Specifics ---
;; Doom Modeline
`(doom-modeline-bar ((,class (:background ,accent-pink :foreground ,fg))))
`(doom-modeline-buffer-file ((,class (:foreground ,fg :weight bold))))
`(doom-modeline-buffer-path ((,class (:foreground ,fg :weight bold))))
`(doom-modeline-buffer-modified ((,class (:foreground ,yellow :weight bold))))
`(doom-modeline-debug ((,class (:foreground ,orange))))
`(doom-modeline-info ((,class (:foreground ,green))))
`(doom-modeline-warning ((,class (:foreground ,yellow))))
`(doom-modeline-error ((,class (:foreground ,red))))
;; Org Mode
`(org-level-1 ((,class (:foreground ,accent-pink :weight bold :height 1.2))))
`(org-level-2 ((,class (:foreground ,accent-blue :weight bold :height 1.1))))
`(org-level-3 ((,class (:foreground ,bright-green :weight bold))))
`(org-level-4 ((,class (:foreground ,bright-cyan :weight bold))))
`(org-level-5 ((,class (:foreground ,light-purple :weight bold))))
`(org-todo ((,class (:foreground ,light-red :weight bold :box t))))
`(org-done ((,class (:foreground ,bright-green :weight bold :box t))))
`(org-date ((,class (:foreground ,medium-blue))))
`(org-link ((,class (:foreground ,light-purple :underline t))))
`(org-code ((,class (:foreground ,orange :background ,bg))))
`(org-block ((,class (:background ,bg :foreground ,fg :extend t))))
`(org-block-begin-line ((,class (:foreground ,dark-blue :background ,bg :extend t))))
;; Magit
`(magit-branch-local ((,class (:foreground ,cyan :weight bold))))
`(magit-branch-remote ((,class (:foreground ,green :weight bold))))
`(magit-hash ((,class (:foreground ,dark-blue))))
`(magit-item-highlight ((,class (:background ,selection))))
`(magit-diff-added ((,class (:foreground ,bright-green :background unspecified))))
`(magit-diff-removed ((,class (:foreground ,light-red :background unspecified))))
`(magit-diff-context-highlight ((,class (:background ,dark-blue :foreground ,fg))))
`(magit-section-heading ((,class (:foreground ,bright-cyan :weight bold :underline t))))
;; Tree-sitter
`(tree-sitter-hl-face:function.call ((,class (:foreground ,accent-pink))))
`(tree-sitter-hl-face:method.call ((,class (:foreground ,accent-pink))))
`(tree-sitter-hl-face:type ((,class (:foreground ,cyan))))
`(tree-sitter-hl-face:property ((,class (:foreground ,light-blue))))
`(tree-sitter-hl-face:parameter ((,class (:foreground ,orange))))
`(tree-sitter-hl-face:escape ((,class (:foreground ,light-red))))
;; Flycheck / LSP
`(flycheck-error ((,class (:underline (:style wave :color ,red)))))
`(flycheck-warning ((,class (:underline (:style wave :color ,orange)))))
`(flycheck-info ((,class (:underline (:style wave :color ,medium-blue)))))
`(lsp-face-highlight-textual ((,class (:background ,selection))))
;; Dashboard
`(doom-dashboard-menu-desc ((,class (:foreground ,accent-blue))))
`(doom-dashboard-banner ((,class (:foreground ,accent-pink))))
;; Misc
`(show-paren-match ((,class (:background ,accent-blue :foreground ,bg :weight bold))))
`(show-paren-mismatch ((,class (:background ,red :foreground ,fg :weight bold))))
`(success ((,class (:foreground ,green))))
`(error ((,class (:foreground ,red :weight bold))))
`(warning ((,class (:foreground ,orange))))
`(header-line ((,class (:background ,dark-blue :foreground ,fg))))))
;;;###autoload
(and load-file-name
(boundp 'custom-theme-load-path)
(add-to-list 'custom-theme-load-path
(file-name-as-directory (file-name-directory load-file-name))))
(provide-theme 'cutarv41)
;;; cutarv41-theme.el ends here
@@ -16,7 +16,7 @@ Optimized for syntax highlighting and UI clarity based on the Custom Terminal pa
(dark_blue "#007cbf" ) ;; Fringe, minibuffer prompts, function names, line numbers, inactive tab borders (dark_blue "#007cbf" ) ;; Fringe, minibuffer prompts, function names, line numbers, inactive tab borders
(red "#cf3f29" ) ;; Errors, negation chars, failed search (`isearch-fail`) (red "#cf3f29" ) ;; Errors, negation chars, failed search (`isearch-fail`)
(medium_blue "#2374de" ) ;; Keywords, active hyperlinks (medium_blue "#2374de" ) ;; Keywords, active hyperlinks
(orange "#c76e2a" ) ;; Constants, lazy search highlights, debug indicators (orange "#c75e10" ) ;; Constants, lazy search highlights, debug indicators
(magenta "#b05197" ) ;; Strings, variables, UI dividers (`vertical-border`) (magenta "#b05197" ) ;; Strings, variables, UI dividers (`vertical-border`)
(green "#429e66" ) ;; Docstrings, comment delimiters, info/status indicators (green "#429e66" ) ;; Docstrings, comment delimiters, info/status indicators
(cyan "#129cc9" ) ;; Types/Classes (cyan "#129cc9" ) ;; Types/Classes
+167
View File
@@ -0,0 +1,167 @@
;;; cutarv33-theme.el --- A high-contrast dark theme with blue/pink accents -*- lexical-binding: t; no-byte-compile: t; -*-
(deftheme cutarv33
"High-contrast dark theme with blue/pink accents.
Optimized for syntax highlighting and UI clarity based on the Custom Terminal palette.")
(let ((class '((class color) (min-colors 89)))
;; --- BASE UI ---
(bg "#f8f8ff") ;; Default background
(fg "#000000") ;; Default foreground
(cursor "#f8f8ff") ;; Cursor bg (matches `bg`; visibility depends on `cursor-type`)
(selection "#aaafff") ;; Region/selected text background
;;(selection-fg "#000000") ;; Region/selected text foreground
;; --- ANSI NORMAL ---
(dark_blue "#007cbf" ) ;; Fringe, minibuffer prompts, function names, line numbers, inactive tab borders
(red "#cf3f29" ) ;; Errors, negation chars, failed search (`isearch-fail`)
(medium_blue "#2374de" ) ;; Keywords, active hyperlinks
(orange "#c75e10" ) ;; Constants, lazy search highlights, debug indicators
(magenta "#b05197" ) ;; Strings, variables, UI dividers (`vertical-border`)
(green "#429e66" ) ;; Docstrings, comment delimiters, info/status indicators
(cyan "#129cc9" ) ;; Types/Classes
(purple "#a64dd6" ) ;; Built-ins, visited links
;; --- ANSI BRIGHT ---
(light_blue "#7cc9f2") ;; Inactive mode-line/tabs background (shares hex with `selection`)
(light_red "#f07b69") ;; Warnings, builtin, regex constructs
(accent_blue "#6f9ff2") ;; (Currently unused in faces)
(yellow "#f0b94a") ;; Active search (`isearch`), regex backslashes, modified buffer status, warnings
(accent_pink "#EF89DF") ;; Active mode-line/tabs, modeline accent bar
(bright_green "#2cd45c") ;; (Currently unused in faces)
(bright_cyan "#11ddee") ;; hl-line hl-tab
(light_purple "#c8a0f2")) ;; (Currently unused in faces)
(custom-theme-set-faces
'cutarv33
;; --- CORE UI ---
`(default ((,class (:background ,bg :foreground ,fg))))
`(cursor ((,class (:background ,bg :foreground ,bg))))
`(fringe ((,class (:background ,bg :foreground ,dark_blue))))
`(region ((,class (:background ,selection))))
`(highlight ((,class (:background ,light_blue :foreground ,bg))))
`(hl-line ((,class (:background ,light_purple :extend t)))) ;; Using dark_blue for line highlight dimness
`(link ((,class (:foreground ,medium_blue :underline t))))
`(link-visited ((,class (:foreground ,purple :underline t))))
`(minibuffer-prompt ((,class (:foreground ,dark_blue :weight bold))))
`(vertical-border ((,class (:foreground ,magenta)))) ;; "UI dividers"
;; --- SYNTAX HIGHLIGHTING (Font Lock) ---
;; Comments: ansi_0 (Dark Blue)
`(font-lock-comment-face ((,class (:foreground ,green :slant italic))))
`(font-lock-comment-delimiter-face ((,class (:foreground ,bright_green :slant italic))))
;; Keywords: ansi_7 (Purple)
`(font-lock-keyword-face ((,class (:foreground ,medium_blue :weight bold))))
;; Strings: ansi_4 (Magenta)
`(font-lock-string-face ((,class (:foreground ,magenta))))
`(font-lock-regexp-grouping-backslash ((,class (:foreground ,yellow))))
`(font-lock-regexp-grouping-construct ((,class (:foreground ,light_red))))
;; Functions: Using Accent Pink (ansi_12) for better visibility as "Primary Accent"
`(font-lock-function-name-face ((,class (:foreground ,cyan :weight bold))))
;; Variables: Default foreground or slightly dimmed
`(font-lock-variable-name-face ((,class (:foreground ,medium_blue))))
;; Types: ansi_6 (Cyan)
`(font-lock-type-face ((,class (:foreground ,purple))))
;; Constants: ansi_3 (Orange)
`(font-lock-constant-face ((,class (:foreground ,light_red))))
`(font-lock-builtin-face ((,class (:foreground ,orange)))) ;; Same as keywords usually
;; Doc & Warnings
`(font-lock-doc-face ((,class (:inherit font-lock-comment-face :foreground ,green))))
`(font-lock-warning-face ((,class (:foreground ,light_red :weight bold))))
`(font-lock-negation-char-face ((,class (:foreground ,red))))
;; --- MODELINE (Tabs UI Mapping) ---
;; Active Tab: Accent Pink
`(mode-line ((,class (:background ,accent_pink :foreground ,bg))))
;; Inactive Tab: Light Blue
`(mode-line-inactive ((,class (:background ,light_blue :foreground ,fg :box (:line-width 1 :color ,accent_blue)))))
`(mode-line-buffer-id ((,class (:weight bold))))
`(mode-line-highlight ((,class (:box (:line-width 2 :color ,fg)))))
;; --- SEARCH & ISEARCH ---
;; Search Matches: Yellow (ansi_11)
`(isearch ((,class (:background ,yellow :foreground ,bg :weight bold))))
`(isearch-fail ((,class (:background ,red :foreground ,fg))))
`(lazy-highlight ((,class (:background ,orange :foreground ,bg))))
;; --- LINE NUMBERS ---
`(line-number ((,class (:foreground ,light_blue :background ,fg))))
`(line-number-current-line ((,class (:foreground ,bg :background ,accent_pink :weight bold))))
;; --- DIY (Doom Emacs Specifics) ---
`(doom-modeline-bar ((,class (:background ,accent_pink :foreground ,fg))))
`(doom-modeline-buffer-file ((,class (:foreground ,fg :weight bold))))
`(doom-modeline-buffer-path ((,class (:foreground ,fg :weight bold))))
`(doom-modeline-buffer-modified ((,class (:foreground ,yellow :weight bold))))
`(doom-modeline-debug ((,class (:foreground ,orange))))
`(doom-modeline-info ((,class (:foreground ,green))))
`(doom-modeline-warning ((,class (:foreground ,yellow))))
`(doom-modeline-error ((,class (:foreground ,red))))
;; --- ORG MODE ---
`(org-level-1 ((,class (:foreground ,accent_pink :weight bold :height 1.2))))
`(org-level-2 ((,class (:foreground ,accent_blue :weight bold :height 1.1))))
`(org-level-3 ((,class (:foreground ,bright_green :weight bold))))
`(org-level-4 ((,class (:foreground ,bright_cyan :weight bold))))
`(org-level-5 ((,class (:foreground ,light_purple :weight bold))))
`(org-todo ((,class (:foreground ,light_red :weight bold :box t))))
`(org-done ((,class (:foreground ,bright_green :weight bold :box t))))
`(org-date ((,class (:foreground ,medium_blue))))
`(org-link ((,class (:foreground ,light_purple :underline t)))) ;; "markdown links" -> light_purple
`(org-code ((,class (:foreground ,orange :background ,bg))))
`(org-block ((,class (:background ,bg :foreground ,fg :extend t))))
`(org-block-begin-line ((,class (:foreground ,dark_blue :background ,bg :extend t))))
;; --- MAGIT / GIT ---
`(magit-branch-local ((,class (:foreground ,cyan :weight bold))))
`(magit-branch-remote ((,class (:foreground ,green :weight bold))))
`(magit-hash ((,class (:foreground ,dark_blue))))
`(magit-item-highlight ((,class (:background ,selection))))
`(magit-diff-added ((,class (:foreground ,bright_green :background unspecified))))
`(magit-diff-removed ((,class (:foreground ,light_red :background unspecified))))
`(magit-diff-context-highlight ((,class (:background ,dark_blue :foreground ,fg))))
`(magit-section-heading ((,class (:foreground ,bright_cyan :weight bold :underline t))))
;; --- TREE-SITTER ---
`(tree-sitter-hl-face:function.call ((,class (:foreground ,accent_pink))))
`(tree-sitter-hl-face:method.call ((,class (:foreground ,accent_pink))))
`(tree-sitter-hl-face:type ((,class (:foreground ,cyan))))
`(tree-sitter-hl-face:property ((,class (:foreground ,light_blue))))
`(tree-sitter-hl-face:parameter ((,class (:foreground ,orange))))
`(tree-sitter-hl-face:escape ((,class (:foreground ,light_red))))
;; --- FLYCHECK / LSP ---
`(flycheck-error ((,class (:underline (:style wave :color ,red)))))
`(flycheck-warning ((,class (:underline (:style wave :color ,orange)))))
`(flycheck-info ((,class (:underline (:style wave :color ,medium_blue)))))
`(lsp-face-highlight-textual ((,class (:background ,selection))))
;; --- DASHBOARD ---
`(doom-dashboard-menu-desc ((,class (:foreground ,accent_blue))))
`(doom-dashboard-banner ((,class (:foreground ,accent_pink))))
;; --- MISC ---
`(show-paren-match ((,class (:background ,accent_blue :foreground ,bg :weight bold))))
`(show-paren-mismatch ((,class (:background ,red :foreground ,fg :weight bold))))
`(success ((,class (:foreground ,green))))
`(error ((,class (:foreground ,red :weight bold))))
`(warning ((,class (:foreground ,orange))))
`(header-line ((,class (:background ,dark_blue :foreground ,fg))))))
;;;###autoload
(and load-file-name
(boundp 'custom-theme-load-path)
(add-to-list 'custom-theme-load-path
(file-name-as-directory (file-name-directory load-file-name))))
(provide-theme 'cutarv33)
;;; cutarv33-theme.el ends here
+167
View File
@@ -0,0 +1,167 @@
;;; cutarv33-theme.el --- A high-contrast dark theme with blue/pink accents -*- lexical-binding: t; no-byte-compile: t; -*-
(deftheme cutarv33
"High-contrast dark theme with blue/pink accents.
Optimized for syntax highlighting and UI clarity based on the Custom Terminal palette.")
(let ((class '((class color) (min-colors 89)))
;; --- BASE UI ---
(bg "#f8f8ff") ;; Default background
(fg "#000000") ;; Default foreground
(cursor "#f8f8ff") ;; Cursor bg (matches `bg`; visibility depends on `cursor-type`)
(selection "#f0b94a") ;; Region/selected text background
;;(selection-fg "#000000") ;; Region/selected text foreground
;; --- ANSI NORMAL ---
(dark_blue "#007cbf" ) ;; Fringe, minibuffer prompts, function names, line numbers, inactive tab borders
(red "#cf3f29" ) ;; Errors, negation chars, failed search (`isearch-fail`)
(medium_blue "#2374de" ) ;; Keywords, active hyperlinks
(orange "#c75e10" ) ;; Constants, lazy search highlights, debug indicators
(magenta "#b05197" ) ;; Strings, variables, UI dividers (`vertical-border`)
(green "#429e66" ) ;; Docstrings, comment delimiters, info/status indicators
(cyan "#129cc9" ) ;; Types/Classes
(purple "#a64dd6" ) ;; Built-ins, visited links
;; --- ANSI BRIGHT ---
(light_blue "#7cc9f2") ;; Inactive mode-line/tabs background (shares hex with `selection`)
(light_red "#f07b69") ;; Warnings, builtin, regex constructs
(accent_blue "#6f9ff2") ;; (Currently unused in faces)
(yellow "#f0b94a") ;; Active search (`isearch`), regex backslashes, modified buffer status, warnings
(accent_pink "#EF89DF") ;; Active mode-line/tabs, modeline accent bar
(bright_green "#2cd45c") ;; (Currently unused in faces)
(bright_cyan "#17dbe6") ;; hl-line hl-tab
(light_purple "#c8a0f2")) ;; (Currently unused in faces)
(custom-theme-set-faces
'cutarv33
;; --- CORE UI ---
`(default ((,class (:background ,bg :foreground ,fg))))
`(cursor ((,class (:background ,bg :foreground ,bg))))
`(fringe ((,class (:background ,bg :foreground ,dark_blue))))
`(region ((,class (:background ,selection))))
`(highlight ((,class (:background ,light_blue :foreground ,bg))))
`(hl-line ((,class (:background ,light_purple :extend t)))) ;; Using dark_blue for line highlight dimness
`(link ((,class (:foreground ,medium_blue :underline t))))
`(link-visited ((,class (:foreground ,purple :underline t))))
`(minibuffer-prompt ((,class (:foreground ,dark_blue :weight bold))))
`(vertical-border ((,class (:foreground ,magenta)))) ;; "UI dividers"
;; --- SYNTAX HIGHLIGHTING (Font Lock) ---
;; Comments: ansi_0 (Dark Blue)
`(font-lock-comment-face ((,class (:foreground ,green :slant italic))))
`(font-lock-comment-delimiter-face ((,class (:foreground ,bright_green :slant italic))))
;; Keywords: ansi_7 (Purple)
`(font-lock-keyword-face ((,class (:foreground ,medium_blue :weight bold))))
;; Strings: ansi_4 (Magenta)
`(font-lock-string-face ((,class (:foreground ,magenta))))
`(font-lock-regexp-grouping-backslash ((,class (:foreground ,yellow))))
`(font-lock-regexp-grouping-construct ((,class (:foreground ,light_red))))
;; Functions: Using Accent Pink (ansi_12) for better visibility as "Primary Accent"
`(font-lock-function-name-face ((,class (:foreground ,dark_blue :weight bold))))
;; Variables: Default foreground or slightly dimmed
`(font-lock-variable-name-face ((,class (:foreground ,medium_blue))))
;; Types: ansi_6 (Cyan)
`(font-lock-type-face ((,class (:foreground ,purple))))
;; Constants: ansi_3 (Orange)
`(font-lock-constant-face ((,class (:foreground ,light_red))))
`(font-lock-builtin-face ((,class (:foreground ,medium_blue)))) ;; Same as keywords usually
;; Doc & Warnings
`(font-lock-doc-face ((,class (:inherit font-lock-comment-face :foreground ,green))))
`(font-lock-warning-face ((,class (:foreground ,light_red :weight bold))))
`(font-lock-negation-char-face ((,class (:foreground ,red))))
;; --- MODELINE (Tabs UI Mapping) ---
;; Active Tab: Accent Pink
`(mode-line ((,class (:background ,accent_pink :foreground ,bg))))
;; Inactive Tab: Light Blue
`(mode-line-inactive ((,class (:background ,light_blue :foreground ,fg :box (:line-width 1 :color ,accent_blue)))))
`(mode-line-buffer-id ((,class (:weight bold))))
`(mode-line-highlight ((,class (:box (:line-width 2 :color ,fg)))))
;; --- SEARCH & ISEARCH ---
;; Search Matches: Yellow (ansi_11)
`(isearch ((,class (:background ,yellow :foreground ,bg :weight bold))))
`(isearch-fail ((,class (:background ,red :foreground ,fg))))
`(lazy-highlight ((,class (:background ,orange :foreground ,bg))))
;; --- LINE NUMBERS ---
`(line-number ((,class (:foreground ,light_blue :background ,fg))))
`(line-number-current-line ((,class (:foreground ,bg :background ,accent_pink :weight bold))))
;; --- DIY (Doom Emacs Specifics) ---
`(doom-modeline-bar ((,class (:background ,accent_pink :foreground ,fg))))
`(doom-modeline-buffer-file ((,class (:foreground ,fg :weight bold))))
`(doom-modeline-buffer-path ((,class (:foreground ,fg :weight bold))))
`(doom-modeline-buffer-modified ((,class (:foreground ,yellow :weight bold))))
`(doom-modeline-debug ((,class (:foreground ,orange))))
`(doom-modeline-info ((,class (:foreground ,green))))
`(doom-modeline-warning ((,class (:foreground ,yellow))))
`(doom-modeline-error ((,class (:foreground ,red))))
;; --- ORG MODE ---
`(org-level-1 ((,class (:foreground ,accent_pink :weight bold :height 1.2))))
`(org-level-2 ((,class (:foreground ,accent_blue :weight bold :height 1.1))))
`(org-level-3 ((,class (:foreground ,bright_green :weight bold))))
`(org-level-4 ((,class (:foreground ,bright_cyan :weight bold))))
`(org-level-5 ((,class (:foreground ,light_purple :weight bold))))
`(org-todo ((,class (:foreground ,light_red :weight bold :box t))))
`(org-done ((,class (:foreground ,bright_green :weight bold :box t))))
`(org-date ((,class (:foreground ,medium_blue))))
`(org-link ((,class (:foreground ,light_purple :underline t)))) ;; "markdown links" -> light_purple
`(org-code ((,class (:foreground ,orange :background ,bg))))
`(org-block ((,class (:background ,bg :foreground ,fg :extend t))))
`(org-block-begin-line ((,class (:foreground ,dark_blue :background ,bg :extend t))))
;; --- MAGIT / GIT ---
`(magit-branch-local ((,class (:foreground ,cyan :weight bold))))
`(magit-branch-remote ((,class (:foreground ,green :weight bold))))
`(magit-hash ((,class (:foreground ,dark_blue))))
`(magit-item-highlight ((,class (:background ,selection))))
`(magit-diff-added ((,class (:foreground ,bright_green :background unspecified))))
`(magit-diff-removed ((,class (:foreground ,light_red :background unspecified))))
`(magit-diff-context-highlight ((,class (:background ,dark_blue :foreground ,fg))))
`(magit-section-heading ((,class (:foreground ,bright_cyan :weight bold :underline t))))
;; --- TREE-SITTER ---
`(tree-sitter-hl-face:function.call ((,class (:foreground ,accent_pink))))
`(tree-sitter-hl-face:method.call ((,class (:foreground ,accent_pink))))
`(tree-sitter-hl-face:type ((,class (:foreground ,cyan))))
`(tree-sitter-hl-face:property ((,class (:foreground ,light_blue))))
`(tree-sitter-hl-face:parameter ((,class (:foreground ,orange))))
`(tree-sitter-hl-face:escape ((,class (:foreground ,light_red))))
;; --- FLYCHECK / LSP ---
`(flycheck-error ((,class (:underline (:style wave :color ,red)))))
`(flycheck-warning ((,class (:underline (:style wave :color ,orange)))))
`(flycheck-info ((,class (:underline (:style wave :color ,medium_blue)))))
`(lsp-face-highlight-textual ((,class (:background ,selection))))
;; --- DASHBOARD ---
`(doom-dashboard-menu-desc ((,class (:foreground ,accent_blue))))
`(doom-dashboard-banner ((,class (:foreground ,accent_pink))))
;; --- MISC ---
`(show-paren-match ((,class (:background ,accent_blue :foreground ,bg :weight bold))))
`(show-paren-mismatch ((,class (:background ,red :foreground ,fg :weight bold))))
`(success ((,class (:foreground ,green))))
`(error ((,class (:foreground ,red :weight bold))))
`(warning ((,class (:foreground ,orange))))
`(header-line ((,class (:background ,dark_blue :foreground ,fg))))))
;;;###autoload
(and load-file-name
(boundp 'custom-theme-load-path)
(add-to-list 'custom-theme-load-path
(file-name-as-directory (file-name-directory load-file-name))))
(provide-theme 'cutarv33)
;;; cutarv33-theme.el ends here
+149
View File
@@ -0,0 +1,149 @@
;;; cutarv41-dark-theme.el --- A high-contrast dark theme for TUI Emacs -*- lexical-binding: t; no-byte-compile: t; -*-
(deftheme cutarv41-dark
"Inverted high-contrast dark theme optimized for TUI/Terminal Emacs.")
(let ((class '((class color) (min-colors 89)))
;; --- Palette (Inverted from cutarv41) ---
;; Base UI
(bg "#000000") ;; Deep dark background (Inverted from #f8f8ff)
(fg "#ffffff") ;; Ghost white foreground (Inverted from #000000)
(cursor "#ffffff") ;; Cursor bg
(selection "#3e4481") ;; Muted blue selection (Adjusted from #aaafff for dark contrast)
;; ANSI Normal (Lightened for visibility on dark bg)
(dark-blue "#4da6ff") ;; Lighter blue (Adjusted from #007cbf)
(red "#ff6b6b") ;; Lighter red (Adjusted from #cf3f29)
(medium-blue "#6da6ff") ;; Lighter blue (Adjusted from #2374de)
(orange "#ffb347") ;; Lighter orange (Adjusted from #c75e10)
(magenta "#d18ecb") ;; Lighter magenta (Adjusted from #b05197)
(green "#8fbc8f") ;; Lighter green (Adjusted from #429e66)
(cyan "#80daeb") ;; Lighter cyan (Adjusted from #129cc9)
(purple "#c8a0f2") ;; Lighter purple (Adjusted from #a64dd6)
;; ANSI Bright (Retained from base as they are already light)
(light-blue "#7cc9f2")
(light-red "#f07b69")
(accent-blue "#6f9ff2")
(yellow "#f0b94a")
(accent-pink "#EF89DF")
(bright-green "#2cd45c")
(bright-cyan "#11ddee")
(light-purple "#c8a0f2"))
(custom-theme-set-faces
'cutarv41-dark
;; --- Core UI ---
`(default ((,class (:background ,bg :foreground ,fg))))
`(cursor ((,class (:background ,bg :foreground ,bg))))
`(fringe ((,class (:background ,bg :foreground ,dark-blue))))
`(region ((,class (:background ,selection))))
`(highlight ((,class (:background ,light-blue :foreground ,bg))))
`(hl-line ((,class (:background ,dark-blue :extend t))))
`(link ((,class (:foreground ,medium-blue :underline t))))
`(link-visited ((,class (:foreground ,purple :underline t))))
`(minibuffer-prompt ((,class (:foreground ,dark-blue :weight bold))))
`(vertical-border ((,class (:foreground ,magenta))))
;; --- Syntax Highlighting (Font Lock) ---
`(font-lock-comment-face ((,class (:foreground ,"#eef" :slant italic))))
`(font-lock-comment-delimiter-face ((,class (:foreground ,bright-green :slant italic))))
`(font-lock-keyword-face ((,class (:foreground ,medium-blue :weight bold))))
`(font-lock-string-face ((,class (:foreground ,green))))
`(font-lock-regexp-grouping-backslash ((,class (:foreground ,yellow))))
`(font-lock-regexp-grouping-construct ((,class (:foreground ,light-red))))
`(font-lock-function-name-face ((,class (:foreground ,cyan :weight bold))))
`(font-lock-variable-name-face ((,class (:foreground ,medium-blue))))
`(font-lock-type-face ((,class (:foreground ,purple))))
`(font-lock-constant-face ((,class (:foreground ,light-red))))
`(font-lock-builtin-face ((,class (:foreground ,orange))))
`(font-lock-doc-face ((,class (:inherit font-lock-comment-face :foreground ,green))))
`(font-lock-warning-face ((,class (:foreground ,light-red :weight bold))))
`(font-lock-negation-char-face ((,class (:foreground ,red))))
;; --- Mode-line ---
`(mode-line ((,class (:background ,accent-pink :foreground ,bg))))
`(mode-line-inactive ((,class (:background ,light-blue :foreground ,fg :box (:line-width 1 :color ,accent-blue)))))
`(mode-line-buffer-id ((,class (:weight bold))))
`(mode-line-highlight ((,class (:box (:line-width 2 :color ,fg)))))
;; --- Search & Isearch ---
`(isearch ((,class (:background ,yellow :foreground ,bg :weight bold))))
`(isearch-fail ((,class (:background ,red :foreground ,fg))))
`(lazy-highlight ((,class (:background ,orange :foreground ,bg))))
;; --- Line Numbers ---
`(line-number ((,class (:foreground ,light-blue :background ,fg))))
`(line-number-current-line ((,class (:foreground ,bg :background ,accent-pink :weight bold))))
;; --- Package Specifics ---
;; Doom Modeline
`(doom-modeline-bar ((,class (:background ,accent-pink :foreground ,fg))))
`(doom-modeline-buffer-file ((,class (:foreground ,fg :weight bold))))
`(doom-modeline-buffer-path ((,class (:foreground ,fg :weight bold))))
`(doom-modeline-buffer-modified ((,class (:foreground ,yellow :weight bold))))
`(doom-modeline-debug ((,class (:foreground ,orange))))
`(doom-modeline-info ((,class (:foreground ,green))))
`(doom-modeline-warning ((,class (:foreground ,yellow))))
`(doom-modeline-error ((,class (:foreground ,red))))
;; Org Mode
`(org-level-1 ((,class (:foreground ,accent-pink :weight bold :height 1.2))))
`(org-level-2 ((,class (:foreground ,accent-blue :weight bold :height 1.1))))
`(org-level-3 ((,class (:foreground ,bright-green :weight bold))))
`(org-level-4 ((,class (:foreground ,bright-cyan :weight bold))))
`(org-level-5 ((,class (:foreground ,light-purple :weight bold))))
`(org-todo ((,class (:foreground ,light-red :weight bold :box t))))
`(org-done ((,class (:foreground ,bright-green :weight bold :box t))))
`(org-date ((,class (:foreground ,medium-blue))))
`(org-link ((,class (:foreground ,light-purple :underline t))))
`(org-code ((,class (:foreground ,orange :background ,bg))))
`(org-block ((,class (:background ,bg :foreground ,fg :extend t))))
`(org-block-begin-line ((,class (:foreground ,dark-blue :background ,bg :extend t))))
;; Magit
`(magit-branch-local ((,class (:foreground ,cyan :weight bold))))
`(magit-branch-remote ((,class (:foreground ,green :weight bold))))
`(magit-hash ((,class (:foreground ,dark-blue))))
`(magit-item-highlight ((,class (:background ,selection))))
`(magit-diff-added ((,class (:foreground ,bright-green :background unspecified))))
`(magit-diff-removed ((,class (:foreground ,light-red :background unspecified))))
`(magit-diff-context-highlight ((,class (:background ,dark-blue :foreground ,fg))))
`(magit-section-heading ((,class (:foreground ,bright-cyan :weight bold :underline t))))
;; Tree-sitter
`(tree-sitter-hl-face:function.call ((,class (:foreground ,accent-pink))))
`(tree-sitter-hl-face:method.call ((,class (:foreground ,accent-pink))))
`(tree-sitter-hl-face:type ((,class (:foreground ,cyan))))
`(tree-sitter-hl-face:property ((,class (:foreground ,light-blue))))
`(tree-sitter-hl-face:parameter ((,class (:foreground ,orange))))
`(tree-sitter-hl-face:escape ((,class (:foreground ,light-red))))
;; Flycheck / LSP
`(flycheck-error ((,class (:underline (:style wave :color ,red)))))
`(flycheck-warning ((,class (:underline (:style wave :color ,orange)))))
`(flycheck-info ((,class (:underline (:style wave :color ,medium-blue)))))
`(lsp-face-highlight-textual ((,class (:background ,selection))))
;; Dashboard
`(doom-dashboard-menu-desc ((,class (:foreground ,accent-blue))))
`(doom-dashboard-banner ((,class (:foreground ,accent-pink))))
;; Misc
`(show-paren-match ((,class (:background ,accent-blue :foreground ,bg :weight bold))))
`(show-paren-mismatch ((,class (:background ,red :foreground ,fg :weight bold))))
`(success ((,class (:foreground ,green))))
`(error ((,class (:foreground ,red :weight bold))))
`(warning ((,class (:foreground ,orange))))
`(header-line ((,class (:background ,dark-blue :foreground ,fg))))))
;;;###autoload
(and load-file-name
(boundp 'custom-theme-load-path)
(add-to-list 'custom-theme-load-path
(file-name-as-directory (file-name-directory load-file-name))))
(provide-theme 'cutarv41-dark)
;;; cutarv41-dark-theme.el ends here
+149
View File
@@ -0,0 +1,149 @@
;;; cutarv41-dark-theme.el --- A high-contrast dark theme for TUI Emacs -*- lexical-binding: t; no-byte-compile: t; -*-
(deftheme cutarv41-dark
"Inverted high-contrast dark theme optimized for TUI/Terminal Emacs.")
(let ((class '((class color) (min-colors 89)))
;; --- Palette (Inverted from cutarv41) ---
;; Base UI
(bg "#0d0d0d") ;; Deep dark background (Inverted from #f8f8ff)
(fg "#f8f8ff") ;; Ghost white foreground (Inverted from #000000)
(cursor "#0d0d0d") ;; Cursor bg
(selection "#3e4481") ;; Muted blue selection (Adjusted from #aaafff for dark contrast)
;; ANSI Normal (Lightened for visibility on dark bg)
(dark-blue "#4da6ff") ;; Lighter blue (Adjusted from #007cbf)
(red "#ff6b6b") ;; Lighter red (Adjusted from #cf3f29)
(medium-blue "#6da6ff") ;; Lighter blue (Adjusted from #2374de)
(orange "#ffb347") ;; Lighter orange (Adjusted from #c75e10)
(magenta "#d18ecb") ;; Lighter magenta (Adjusted from #b05197)
(green "#8fbc8f") ;; Lighter green (Adjusted from #429e66)
(cyan "#80daeb") ;; Lighter cyan (Adjusted from #129cc9)
(purple "#c8a0f2") ;; Lighter purple (Adjusted from #a64dd6)
;; ANSI Bright (Retained from base as they are already light)
(light-blue "#7cc9f2")
(light-red "#f07b69")
(accent-blue "#6f9ff2")
(yellow "#f0b94a")
(accent-pink "#EF89DF")
(bright-green "#2cd45c")
(bright-cyan "#11ddee")
(light-purple "#c8a0f2"))
(custom-theme-set-faces
'cutarv41-dark
;; --- Core UI ---
`(default ((,class (:background ,bg :foreground ,fg))))
`(cursor ((,class (:background ,bg :foreground ,bg))))
`(fringe ((,class (:background ,bg :foreground ,dark-blue))))
`(region ((,class (:background ,selection))))
`(highlight ((,class (:background ,light-blue :foreground ,bg))))
`(hl-line ((,class (:background ,dark-blue :extend t))))
`(link ((,class (:foreground ,medium-blue :underline t))))
`(link-visited ((,class (:foreground ,purple :underline t))))
`(minibuffer-prompt ((,class (:foreground ,dark-blue :weight bold))))
`(vertical-border ((,class (:foreground ,magenta))))
;; --- Syntax Highlighting (Font Lock) ---
`(font-lock-comment-face ((,class (:foreground ,"#eef" :slant italic))))
`(font-lock-comment-delimiter-face ((,class (:foreground ,bright-green :slant italic))))
`(font-lock-keyword-face ((,class (:foreground ,medium-blue :weight bold))))
`(font-lock-string-face ((,class (:foreground ,green))))
`(font-lock-regexp-grouping-backslash ((,class (:foreground ,yellow))))
`(font-lock-regexp-grouping-construct ((,class (:foreground ,light-red))))
`(font-lock-function-name-face ((,class (:foreground ,cyan :weight bold))))
`(font-lock-variable-name-face ((,class (:foreground ,medium-blue))))
`(font-lock-type-face ((,class (:foreground ,purple))))
`(font-lock-constant-face ((,class (:foreground ,light-red))))
`(font-lock-builtin-face ((,class (:foreground ,orange))))
`(font-lock-doc-face ((,class (:inherit font-lock-comment-face :foreground ,green))))
`(font-lock-warning-face ((,class (:foreground ,light-red :weight bold))))
`(font-lock-negation-char-face ((,class (:foreground ,red))))
;; --- Mode-line ---
`(mode-line ((,class (:background ,accent-pink :foreground ,bg))))
`(mode-line-inactive ((,class (:background ,light-blue :foreground ,fg :box (:line-width 1 :color ,accent-blue)))))
`(mode-line-buffer-id ((,class (:weight bold))))
`(mode-line-highlight ((,class (:box (:line-width 2 :color ,fg)))))
;; --- Search & Isearch ---
`(isearch ((,class (:background ,yellow :foreground ,bg :weight bold))))
`(isearch-fail ((,class (:background ,red :foreground ,fg))))
`(lazy-highlight ((,class (:background ,orange :foreground ,bg))))
;; --- Line Numbers ---
`(line-number ((,class (:foreground ,light-blue :background ,fg))))
`(line-number-current-line ((,class (:foreground ,bg :background ,accent-pink :weight bold))))
;; --- Package Specifics ---
;; Doom Modeline
`(doom-modeline-bar ((,class (:background ,accent-pink :foreground ,fg))))
`(doom-modeline-buffer-file ((,class (:foreground ,fg :weight bold))))
`(doom-modeline-buffer-path ((,class (:foreground ,fg :weight bold))))
`(doom-modeline-buffer-modified ((,class (:foreground ,yellow :weight bold))))
`(doom-modeline-debug ((,class (:foreground ,orange))))
`(doom-modeline-info ((,class (:foreground ,green))))
`(doom-modeline-warning ((,class (:foreground ,yellow))))
`(doom-modeline-error ((,class (:foreground ,red))))
;; Org Mode
`(org-level-1 ((,class (:foreground ,accent-pink :weight bold :height 1.2))))
`(org-level-2 ((,class (:foreground ,accent-blue :weight bold :height 1.1))))
`(org-level-3 ((,class (:foreground ,bright-green :weight bold))))
`(org-level-4 ((,class (:foreground ,bright-cyan :weight bold))))
`(org-level-5 ((,class (:foreground ,light-purple :weight bold))))
`(org-todo ((,class (:foreground ,light-red :weight bold :box t))))
`(org-done ((,class (:foreground ,bright-green :weight bold :box t))))
`(org-date ((,class (:foreground ,medium-blue))))
`(org-link ((,class (:foreground ,light-purple :underline t))))
`(org-code ((,class (:foreground ,orange :background ,bg))))
`(org-block ((,class (:background ,bg :foreground ,fg :extend t))))
`(org-block-begin-line ((,class (:foreground ,dark-blue :background ,bg :extend t))))
;; Magit
`(magit-branch-local ((,class (:foreground ,cyan :weight bold))))
`(magit-branch-remote ((,class (:foreground ,green :weight bold))))
`(magit-hash ((,class (:foreground ,dark-blue))))
`(magit-item-highlight ((,class (:background ,selection))))
`(magit-diff-added ((,class (:foreground ,bright-green :background unspecified))))
`(magit-diff-removed ((,class (:foreground ,light-red :background unspecified))))
`(magit-diff-context-highlight ((,class (:background ,dark-blue :foreground ,fg))))
`(magit-section-heading ((,class (:foreground ,bright-cyan :weight bold :underline t))))
;; Tree-sitter
`(tree-sitter-hl-face:function.call ((,class (:foreground ,accent-pink))))
`(tree-sitter-hl-face:method.call ((,class (:foreground ,accent-pink))))
`(tree-sitter-hl-face:type ((,class (:foreground ,cyan))))
`(tree-sitter-hl-face:property ((,class (:foreground ,light-blue))))
`(tree-sitter-hl-face:parameter ((,class (:foreground ,orange))))
`(tree-sitter-hl-face:escape ((,class (:foreground ,light-red))))
;; Flycheck / LSP
`(flycheck-error ((,class (:underline (:style wave :color ,red)))))
`(flycheck-warning ((,class (:underline (:style wave :color ,orange)))))
`(flycheck-info ((,class (:underline (:style wave :color ,medium-blue)))))
`(lsp-face-highlight-textual ((,class (:background ,selection))))
;; Dashboard
`(doom-dashboard-menu-desc ((,class (:foreground ,accent-blue))))
`(doom-dashboard-banner ((,class (:foreground ,accent-pink))))
;; Misc
`(show-paren-match ((,class (:background ,accent-blue :foreground ,bg :weight bold))))
`(show-paren-mismatch ((,class (:background ,red :foreground ,fg :weight bold))))
`(success ((,class (:foreground ,green))))
`(error ((,class (:foreground ,red :weight bold))))
`(warning ((,class (:foreground ,orange))))
`(header-line ((,class (:background ,dark-blue :foreground ,fg))))))
;;;###autoload
(and load-file-name
(boundp 'custom-theme-load-path)
(add-to-list 'custom-theme-load-path
(file-name-as-directory (file-name-directory load-file-name))))
(provide-theme 'cutarv41-dark)
;;; cutarv41-dark-theme.el ends here
+149
View File
@@ -0,0 +1,149 @@
;;; cutarv41-theme.el --- A high-contrast light theme with blue/pink accents -*- lexical-binding: t; no-byte-compile: t; -*-
(deftheme cutarv41
"A high-contrast light theme with blue/pink accents, optimized for clarity and syntax highlighting.")
(let ((class '((class color) (min-colors 89)))
;; --- Palette ---
;; Base UI
(bg "#f8f8ff") ;; Default background
(fg "#000000") ;; Default foreground
(cursor "#f8f8ff") ;; Cursor bg
(selection "#aaafff") ;; Region/selected text background
;; ANSI Normal
(dark-blue "#007cbf") ;; Fringe, minibuffer prompts, function names, line numbers
(red "#cf3f29") ;; Errors, negation chars
(medium-blue "#2374de") ;; Keywords, active hyperlinks
(orange "#c75e10") ;; Constants, debug indicators
(magenta "#b05197") ;; Strings, variables, UI dividers
(green "#429e66") ;; Docstrings, comment delimiters
(cyan "#129cc9") ;; Types/Classes
(purple "#a64dd6") ;; Built-ins, visited links
;; ANSI Bright
(light-blue "#7cc9f2") ;; Inactive mode-line/tabs background
(light-red "#f07b69") ;; Warnings, regex constructs
(accent-blue "#6f9ff2") ;; Accents
(yellow "#f0b94a") ;; Active search, warnings
(accent-pink "#EF89DF") ;; Active mode-line/tabs
(bright-green "#2cd45c") ;; Status indicators
(bright-cyan "#11ddee") ;; hl-line hl-tab
(light-purple "#cca0ff")) ;; Accents
(custom-theme-set-faces
'cutarv41
;; --- Core UI ---
`(default ((,class (:background ,bg :foreground ,fg))))
`(cursor ((,class (:background ,bg :foreground ,bg))))
`(fringe ((,class (:background ,bg :foreground ,dark-blue))))
`(region ((,class (:background ,selection))))
`(highlight ((,class (:background ,light-blue :foreground ,bg))))
`(hl-line ((,class (:background ,light-purple :extend t))))
`(link ((,class (:foreground ,medium-blue :underline t))))
`(link-visited ((,class (:foreground ,purple :underline t))))
`(minibuffer-prompt ((,class (:foreground ,dark-blue :weight bold))))
`(vertical-border ((,class (:foreground ,magenta))))
;; --- Syntax Highlighting (Font Lock) ---
`(font-lock-comment-face ((,class (:foreground ,"#666666" :slant italic))))
`(font-lock-comment-delimiter-face ((,class (:foreground ,bright-green :slant italic))))
`(font-lock-keyword-face ((,class (:foreground ,medium-blue :weight bold))))
`(font-lock-string-face ((,class (:foreground ,green))))
`(font-lock-regexp-grouping-backslash ((,class (:foreground ,yellow))))
`(font-lock-regexp-grouping-construct ((,class (:foreground ,light-red))))
`(font-lock-function-name-face ((,class (:foreground ,cyan :weight bold))))
`(font-lock-variable-name-face ((,class (:foreground ,medium-blue))))
`(font-lock-type-face ((,class (:foreground ,purple))))
`(font-lock-constant-face ((,class (:foreground ,light-red))))
`(font-lock-builtin-face ((,class (:foreground ,orange))))
`(font-lock-doc-face ((,class (:inherit font-lock-comment-face :foreground ,green))))
`(font-lock-warning-face ((,class (:foreground ,light-red :weight bold))))
`(font-lock-negation-char-face ((,class (:foreground ,red))))
;; --- Mode-line ---
`(mode-line ((,class (:background ,accent-pink :foreground ,bg))))
`(mode-line-inactive ((,class (:background ,light-blue :foreground ,fg :box (:line-width 1 :color ,accent-blue)))))
`(mode-line-buffer-id ((,class (:weight bold))))
`(mode-line-highlight ((,class (:box (:line-width 2 :color ,fg)))))
;; --- Search & Isearch ---
`(isearch ((,class (:background ,yellow :foreground ,bg :weight bold))))
`(isearch-fail ((,class (:background ,red :foreground ,fg))))
`(lazy-highlight ((,class (:background ,orange :foreground ,bg))))
;; --- Line Numbers ---
`(line-number ((,class (:foreground ,light-blue :background ,fg))))
`(line-number-current-line ((,class (:foreground ,bg :background ,accent-pink :weight bold))))
;; --- Package Specifics ---
;; Doom Modeline
`(doom-modeline-bar ((,class (:background ,accent-pink :foreground ,fg))))
`(doom-modeline-buffer-file ((,class (:foreground ,fg :weight bold))))
`(doom-modeline-buffer-path ((,class (:foreground ,fg :weight bold))))
`(doom-modeline-buffer-modified ((,class (:foreground ,yellow :weight bold))))
`(doom-modeline-debug ((,class (:foreground ,orange))))
`(doom-modeline-info ((,class (:foreground ,green))))
`(doom-modeline-warning ((,class (:foreground ,yellow))))
`(doom-modeline-error ((,class (:foreground ,red))))
;; Org Mode
`(org-level-1 ((,class (:foreground ,accent-pink :weight bold :height 1.2))))
`(org-level-2 ((,class (:foreground ,accent-blue :weight bold :height 1.1))))
`(org-level-3 ((,class (:foreground ,bright-green :weight bold))))
`(org-level-4 ((,class (:foreground ,bright-cyan :weight bold))))
`(org-level-5 ((,class (:foreground ,light-purple :weight bold))))
`(org-todo ((,class (:foreground ,light-red :weight bold :box t))))
`(org-done ((,class (:foreground ,bright-green :weight bold :box t))))
`(org-date ((,class (:foreground ,medium-blue))))
`(org-link ((,class (:foreground ,light-purple :underline t))))
`(org-code ((,class (:foreground ,orange :background ,bg))))
`(org-block ((,class (:background ,bg :foreground ,fg :extend t))))
`(org-block-begin-line ((,class (:foreground ,dark-blue :background ,bg :extend t))))
;; Magit
`(magit-branch-local ((,class (:foreground ,cyan :weight bold))))
`(magit-branch-remote ((,class (:foreground ,green :weight bold))))
`(magit-hash ((,class (:foreground ,dark-blue))))
`(magit-item-highlight ((,class (:background ,selection))))
`(magit-diff-added ((,class (:foreground ,bright-green :background unspecified))))
`(magit-diff-removed ((,class (:foreground ,light-red :background unspecified))))
`(magit-diff-context-highlight ((,class (:background ,dark-blue :foreground ,fg))))
`(magit-section-heading ((,class (:foreground ,bright-cyan :weight bold :underline t))))
;; Tree-sitter
`(tree-sitter-hl-face:function.call ((,class (:foreground ,accent-pink))))
`(tree-sitter-hl-face:method.call ((,class (:foreground ,accent-pink))))
`(tree-sitter-hl-face:type ((,class (:foreground ,cyan))))
`(tree-sitter-hl-face:property ((,class (:foreground ,light-blue))))
`(tree-sitter-hl-face:parameter ((,class (:foreground ,orange))))
`(tree-sitter-hl-face:escape ((,class (:foreground ,light-red))))
;; Flycheck / LSP
`(flycheck-error ((,class (:underline (:style wave :color ,red)))))
`(flycheck-warning ((,class (:underline (:style wave :color ,orange)))))
`(flycheck-info ((,class (:underline (:style wave :color ,medium-blue)))))
`(lsp-face-highlight-textual ((,class (:background ,selection))))
;; Dashboard
`(doom-dashboard-menu-desc ((,class (:foreground ,accent-blue))))
`(doom-dashboard-banner ((,class (:foreground ,accent-pink))))
;; Misc
`(show-paren-match ((,class (:background ,accent-blue :foreground ,bg :weight bold))))
`(show-paren-mismatch ((,class (:background ,red :foreground ,fg :weight bold))))
`(success ((,class (:foreground ,green))))
`(error ((,class (:foreground ,red :weight bold))))
`(warning ((,class (:foreground ,orange))))
`(header-line ((,class (:background ,dark-blue :foreground ,fg))))))
;;;###autoload
(and load-file-name
(boundp 'custom-theme-load-path)
(add-to-list 'custom-theme-load-path
(file-name-as-directory (file-name-directory load-file-name))))
(provide-theme 'cutarv41)
;;; cutarv41-theme.el ends here
+149
View File
@@ -0,0 +1,149 @@
;;; cutarv41-theme.el --- A high-contrast light theme with blue/pink accents -*- lexical-binding: t; no-byte-compile: t; -*-
(deftheme cutarv41
"A high-contrast light theme with blue/pink accents, optimized for clarity and syntax highlighting.")
(let ((class '((class color) (min-colors 256)))
;; --- Palette ---
;; Base UI
(bg "#f8f8ff") ;; Default background
(fg "#010101") ;; Default foreground
(cursor "#ef89df") ;; Cursor bg
(selection "#aaafff") ;; Region/selected text background
;; ANSI Normal
(dark-blue "#007cbf") ;; Fringe, minibuffer prompts, function names, line numbers
(red "#cf3f29") ;; Errors, negation chars
(medium-blue "#2374de") ;; Keywords, active hyperlinks
(orange "#c75e10") ;; Constants, debug indicators
(magenta "#b05197") ;; Strings, variables, UI dividers
(green "#429e66") ;; Docstrings, comment delimiters
(cyan "#129cc9") ;; Types/Classes
(purple "#a64dd6") ;; Built-ins, visited links
;; ANSI Bright
(light-blue "#7cc9f2") ;; Inactive mode-line/tabs background
(light-red "#f07b69") ;; Warnings, regex constructs
(accent-blue "#6f9ff2") ;; Accents
(yellow "#f0b94a") ;; Active search, warnings
(accent-pink "#EF89DF") ;; Active mode-line/tabs
(bright-green "#2cd45c") ;; Status indicators
(bright-cyan "#11ddee") ;; hl-line hl-tab
(light-purple "#cca0ff")) ;; Accents
(custom-theme-set-faces
'cutarv41
;; --- Core UI ---
`(default ((,class (:background ,bg :foreground ,fg))))
`(cursor ((,class (:background ,bg :foreground ,bg))))
`(fringe ((,class (:background ,bg :foreground ,dark-blue))))
`(region ((,class (:background ,selection))))
`(highlight ((,class (:background ,light-blue :foreground ,bg))))
`(hl-line ((,class (:background ,light-purple :extend t))))
`(link ((,class (:foreground ,medium-blue :underline t))))
`(link-visited ((,class (:foreground ,purple :underline t))))
`(minibuffer-prompt ((,class (:foreground ,dark-blue :weight bold))))
`(vertical-border ((,class (:foreground ,magenta))))
;; --- Syntax Highlighting (Font Lock) ---
`(font-lock-comment-face ((,class (:foreground ,"#666666" :slant italic))))
`(font-lock-comment-delimiter-face ((,class (:foreground ,bright-green :slant italic))))
`(font-lock-keyword-face ((,class (:foreground ,medium-blue :weight bold))))
`(font-lock-string-face ((,class (:foreground ,green))))
`(font-lock-regexp-grouping-backslash ((,class (:foreground ,yellow))))
`(font-lock-regexp-grouping-construct ((,class (:foreground ,light-red))))
`(font-lock-function-name-face ((,class (:foreground ,cyan :weight bold))))
`(font-lock-variable-name-face ((,class (:foreground ,medium-blue))))
`(font-lock-type-face ((,class (:foreground ,purple))))
`(font-lock-constant-face ((,class (:foreground ,light-red))))
`(font-lock-builtin-face ((,class (:foreground ,orange))))
`(font-lock-doc-face ((,class (:inherit font-lock-comment-face :foreground ,green))))
`(font-lock-warning-face ((,class (:foreground ,light-red :weight bold))))
`(font-lock-negation-char-face ((,class (:foreground ,red))))
;; --- Mode-line ---
`(mode-line ((,class (:background ,accent-pink :foreground ,bg))))
`(mode-line-inactive ((,class (:background ,light-blue :foreground ,fg :box (:line-width 1 :color ,accent-blue)))))
`(mode-line-buffer-id ((,class (:weight bold))))
`(mode-line-highlight ((,class (:box (:line-width 2 :color ,fg)))))
;; --- Search & Isearch ---
`(isearch ((,class (:background ,yellow :foreground ,bg :weight bold))))
`(isearch-fail ((,class (:background ,red :foreground ,fg))))
`(lazy-highlight ((,class (:background ,orange :foreground ,bg))))
;; --- Line Numbers ---
`(line-number ((,class (:foreground ,light-blue :background ,fg))))
`(line-number-current-line ((,class (:foreground ,bg :background ,accent-pink :weight bold))))
;; --- Package Specifics ---
;; Doom Modeline
`(doom-modeline-bar ((,class (:background ,accent-pink :foreground ,fg))))
`(doom-modeline-buffer-file ((,class (:foreground ,fg :weight bold))))
`(doom-modeline-buffer-path ((,class (:foreground ,fg :weight bold))))
`(doom-modeline-buffer-modified ((,class (:foreground ,yellow :weight bold))))
`(doom-modeline-debug ((,class (:foreground ,orange))))
`(doom-modeline-info ((,class (:foreground ,green))))
`(doom-modeline-warning ((,class (:foreground ,yellow))))
`(doom-modeline-error ((,class (:foreground ,red))))
;; Org Mode
`(org-level-1 ((,class (:foreground ,accent-pink :weight bold :height 1.2))))
`(org-level-2 ((,class (:foreground ,accent-blue :weight bold :height 1.1))))
`(org-level-3 ((,class (:foreground ,bright-green :weight bold))))
`(org-level-4 ((,class (:foreground ,bright-cyan :weight bold))))
`(org-level-5 ((,class (:foreground ,light-purple :weight bold))))
`(org-todo ((,class (:foreground ,light-red :weight bold :box t))))
`(org-done ((,class (:foreground ,bright-green :weight bold :box t))))
`(org-date ((,class (:foreground ,medium-blue))))
`(org-link ((,class (:foreground ,light-purple :underline t))))
`(org-code ((,class (:foreground ,orange :background ,bg))))
`(org-block ((,class (:background ,bg :foreground ,fg :extend t))))
`(org-block-begin-line ((,class (:foreground ,dark-blue :background ,bg :extend t))))
;; Magit
`(magit-branch-local ((,class (:foreground ,cyan :weight bold))))
`(magit-branch-remote ((,class (:foreground ,green :weight bold))))
`(magit-hash ((,class (:foreground ,dark-blue))))
`(magit-item-highlight ((,class (:background ,selection))))
`(magit-diff-added ((,class (:foreground ,bright-green :background unspecified))))
`(magit-diff-removed ((,class (:foreground ,light-red :background unspecified))))
`(magit-diff-context-highlight ((,class (:background ,dark-blue :foreground ,fg))))
`(magit-section-heading ((,class (:foreground ,bright-cyan :weight bold :underline t))))
;; Tree-sitter
`(tree-sitter-hl-face:function.call ((,class (:foreground ,accent-pink))))
`(tree-sitter-hl-face:method.call ((,class (:foreground ,accent-pink))))
`(tree-sitter-hl-face:type ((,class (:foreground ,cyan))))
`(tree-sitter-hl-face:property ((,class (:foreground ,light-blue))))
`(tree-sitter-hl-face:parameter ((,class (:foreground ,orange))))
`(tree-sitter-hl-face:escape ((,class (:foreground ,light-red))))
;; Flycheck / LSP
`(flycheck-error ((,class (:underline (:style wave :color ,red)))))
`(flycheck-warning ((,class (:underline (:style wave :color ,orange)))))
`(flycheck-info ((,class (:underline (:style wave :color ,medium-blue)))))
`(lsp-face-highlight-textual ((,class (:background ,selection))))
;; Dashboard
`(doom-dashboard-menu-desc ((,class (:foreground ,accent-blue))))
`(doom-dashboard-banner ((,class (:foreground ,accent-pink))))
;; Misc
`(show-paren-match ((,class (:background ,accent-blue :foreground ,bg :weight bold))))
`(show-paren-mismatch ((,class (:background ,red :foreground ,fg :weight bold))))
`(success ((,class (:foreground ,green))))
`(error ((,class (:foreground ,red :weight bold))))
`(warning ((,class (:foreground ,orange))))
`(header-line ((,class (:background ,dark-blue :foreground ,fg))))))
;;;###autoload
(and load-file-name
(boundp 'custom-theme-load-path)
(add-to-list 'custom-theme-load-path
(file-name-as-directory (file-name-directory load-file-name))))
(provide-theme 'cutarv41)
;;; cutarv41-theme.el ends here