Merge branch 'master' into arch-laptop
This commit is contained in:
commit
352e5e81fc
12
.gitignore
vendored
12
.gitignore
vendored
@ -30,3 +30,15 @@ config/.scripts/mlvwm-powerdown
|
|||||||
config/.scripts/mlvwm-restart
|
config/.scripts/mlvwm-restart
|
||||||
config/.scripts/mlvwm-screenshot
|
config/.scripts/mlvwm-screenshot
|
||||||
config/.scripts/pipewire-launch
|
config/.scripts/pipewire-launch
|
||||||
|
/config/.emacs.d/undo-fu-session/
|
||||||
|
/config/.emacs.d/tree-sitter/
|
||||||
|
/config/.emacs.d/tramp
|
||||||
|
/config/.emacs.d/straight/
|
||||||
|
/config/.emacs.d/recentf
|
||||||
|
/config/.emacs.d/places
|
||||||
|
/config/.emacs.d/parinfer-rust/
|
||||||
|
/config/.emacs.d/history
|
||||||
|
/config/.emacs.d/eshell/
|
||||||
|
/config/.emacs.d/elpa/
|
||||||
|
/config/.emacs.d/eln-cache/
|
||||||
|
/config/.emacs.d/auto-save-list/
|
||||||
|
|||||||
@ -225,3 +225,5 @@ export DCONF_PROFILE
|
|||||||
# --color=border:#403d52,header:#31748f,gutter:#191724
|
# --color=border:#403d52,header:#31748f,gutter:#191724
|
||||||
# --color=spinner:#f6c177,info:#9ccfd8
|
# --color=spinner:#f6c177,info:#9ccfd8
|
||||||
# --color=pointer:#c4a7e7,marker:#eb6f92,prompt:#908caa"
|
# --color=pointer:#c4a7e7,marker:#eb6f92,prompt:#908caa"
|
||||||
|
[ -n "$EAT_SHELL_INTEGRATION_DIR" ] && \
|
||||||
|
source "$EAT_SHELL_INTEGRATION_DIR/bash"
|
||||||
|
|||||||
@ -54,7 +54,7 @@
|
|||||||
;;zen ; distraction-free coding or writing
|
;;zen ; distraction-free coding or writing
|
||||||
|
|
||||||
:editor
|
:editor
|
||||||
(evil +everywhere); come to the dark side, we have cookies
|
;; (evil +everywhere); come to the dark side, we have cookies
|
||||||
file-templates ; auto-snippets for empty files
|
file-templates ; auto-snippets for empty files
|
||||||
fold ; (nigh) universal code folding
|
fold ; (nigh) universal code folding
|
||||||
(format +onsave) ; automated prettiness
|
(format +onsave) ; automated prettiness
|
||||||
@ -179,7 +179,7 @@
|
|||||||
;;terra ; Earth and Moon in alignment for performance.
|
;;terra ; Earth and Moon in alignment for performance.
|
||||||
;;web ; the tubes
|
;;web ; the tubes
|
||||||
;;yaml ; JSON, but readable
|
;;yaml ; JSON, but readable
|
||||||
;;zig ; C, but simpler
|
(zig +lsp +tree-sitter) ; C, but simpler
|
||||||
|
|
||||||
:email
|
:email
|
||||||
;;(mu4e +org +gmail)
|
;;(mu4e +org +gmail)
|
||||||
|
|||||||
19
config/.emacs.d/config/custom.el
Normal file
19
config/.emacs.d/config/custom.el
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
;;; -*- lexical-binding: t -*-
|
||||||
|
(custom-set-variables
|
||||||
|
;; custom-set-variables was added by Custom.
|
||||||
|
;; If you edit it by hand, you could mess it up, so be careful.
|
||||||
|
;; Your init file should contain only one such instance.
|
||||||
|
;; If there is more than one, they won't work right.
|
||||||
|
'(custom-safe-themes
|
||||||
|
'("720838034f1dd3b3da66f6bd4d053ee67c93a747b219d1c546c41c4e425daf93"
|
||||||
|
"d481904809c509641a1a1f1b1eb80b94c58c210145effc2631c1a7f2e4a2fdf4"
|
||||||
|
"aec7b55f2a13307a55517fdf08438863d694550565dee23181d2ebd973ebd6b8"
|
||||||
|
"3613617b9953c22fe46ef2b593a2e5bc79ef3cc88770602e7e569bbd71de113b"
|
||||||
|
"0325a6b5eea7e5febae709dab35ec8648908af12cf2d2b569bedc8da0a3a81c1"
|
||||||
|
default)))
|
||||||
|
(custom-set-faces
|
||||||
|
;; custom-set-faces was added by Custom.
|
||||||
|
;; If you edit it by hand, you could mess it up, so be careful.
|
||||||
|
;; Your init file should contain only one such instance.
|
||||||
|
;; If there is more than one, they won't work right.
|
||||||
|
)
|
||||||
56
config/.emacs.d/config/emacs.el
Normal file
56
config/.emacs.d/config/emacs.el
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
;;; emacs.el --- Description -*- lexical-binding: t; -*-
|
||||||
|
;;
|
||||||
|
;; Copyright (C) 2026 Michael Chalupiak
|
||||||
|
;;
|
||||||
|
;; Author: Michael Chalupiak <mikec@archbox>
|
||||||
|
;; Maintainer: Michael Chalupiak <mikec@archbox>
|
||||||
|
;; Created: January 15, 2026
|
||||||
|
;; Modified: January 15, 2026
|
||||||
|
;; Version: 0.0.1
|
||||||
|
;; Keywords: abbrev bib c calendar comm convenience data docs emulations extensions faces files frames games hardware help hypermedia i18n internal languages lisp local maint mail matching mouse multimedia news outlines processes terminals tex text tools unix vc wp
|
||||||
|
;; Homepage: https://github.com/mikec/emacs
|
||||||
|
;; Package-Requires: ((emacs "30.1"))
|
||||||
|
;;
|
||||||
|
;; This file is not part of GNU Emacs.
|
||||||
|
;;
|
||||||
|
;;; Commentary:
|
||||||
|
;;
|
||||||
|
;; Description
|
||||||
|
;;
|
||||||
|
;;; Code:
|
||||||
|
|
||||||
|
(setq history-length 100
|
||||||
|
global-auto-revert-non-file-buffers t
|
||||||
|
use-dialog-box nil
|
||||||
|
custom-safe-themes t
|
||||||
|
read-file-name-completion-ignore-case t
|
||||||
|
tab-always-indent nil)
|
||||||
|
(setq-default
|
||||||
|
indent-tabs-mode nil
|
||||||
|
tab-width 4
|
||||||
|
tab-stop-list (number-sequence 4 400 4))
|
||||||
|
(customize-set-variable 'treesit-font-lock-level 4)
|
||||||
|
(column-number-mode t)
|
||||||
|
(global-display-line-numbers-mode t)
|
||||||
|
;(global-display-fill-column-indicator-mode t)
|
||||||
|
(recentf-mode 1)
|
||||||
|
(savehist-mode 1)
|
||||||
|
(save-place-mode 1)
|
||||||
|
(global-auto-revert-mode 1)
|
||||||
|
(context-menu-mode 1)
|
||||||
|
(electric-pair-mode 1)
|
||||||
|
(electric-indent-mode 1)
|
||||||
|
;; (enable-recursive-minibuffers t)
|
||||||
|
;; (read-extended-command-predicate #'command-completion-default-include-p)
|
||||||
|
|
||||||
|
|
||||||
|
;; Disable line numbers for some modes
|
||||||
|
;; (dolist (mode '(org-mode-hook
|
||||||
|
;; eshell-mode-hook))
|
||||||
|
;; (add-hook mode (lambda ()
|
||||||
|
;; (display-line-numbers-mode 0)
|
||||||
|
;; (display-fill-column-indicator-mode 0)
|
||||||
|
;; ())))
|
||||||
|
|
||||||
|
(provide 'emacs)
|
||||||
|
;;; emacs.el ends here
|
||||||
38
config/.emacs.d/config/keymap.el
Normal file
38
config/.emacs.d/config/keymap.el
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
;;; -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
|
(global-set-key (kbd "C-c f") #'consult-fd)
|
||||||
|
(global-set-key (kbd "C-c r") #'recentf)
|
||||||
|
(global-set-key (kbd "C-c g") #'consult-ripgrep)
|
||||||
|
(global-set-key (kbd "C-c i") #'consult-info)
|
||||||
|
(global-set-key (kbd "C-c s") #'ispell-word)
|
||||||
|
(global-set-key (kbd "C-c f") #'apheleia-format-buffer)
|
||||||
|
(global-set-key (kbd "C-c t") #'load-theme)
|
||||||
|
(global-set-key (kbd "C-c C-c") #'compile)
|
||||||
|
(global-set-key (kbd "C-c d") #'dictionary-define-word)
|
||||||
|
(global-set-key (kbd "C-c D") #'dictionary)
|
||||||
|
(global-set-key (kbd "C-c l a") #'eglot-code-actions)
|
||||||
|
(global-set-key (kbd "C-c l n") #'eglot-rename)
|
||||||
|
(global-set-key (kbd "C-c l s") #'consult-eglot-symbols)
|
||||||
|
(global-set-key (kbd "C-c l r") #'xref-find-references)
|
||||||
|
(global-set-key (kbd "C-c l d") #'xref-find-definitions)
|
||||||
|
(global-set-key (kbd "C-c l D") #'eglot-find-declaration)
|
||||||
|
(global-set-key (kbd "C-c l i") #'eglot-find-implementation)
|
||||||
|
(global-set-key (kbd "C-c l t") #'eglot-find-typeDefinition)
|
||||||
|
(global-set-key (kbd "C-x C-;") (lambda () (interactive) (if (region-active-p) (comment-region) (comment-line))))
|
||||||
|
|
||||||
|
(global-set-key (kbd "C-c b") #'ibuffer)
|
||||||
|
(global-set-key (kbd "C-c x") #'kill-current-buffer)
|
||||||
|
|
||||||
|
(global-set-key (kbd "C-c k") #'eldoc)
|
||||||
|
(global-set-key (kbd "C-c m") #'man)
|
||||||
|
(global-set-key (kbd "C-c o c") (lambda () (interactive) (dired user-init-dir)))
|
||||||
|
(global-set-key (kbd "C-c o t") #'eshell)
|
||||||
|
(global-set-key (kbd "C-c o m") #'magit)
|
||||||
|
|
||||||
|
;; multi-cursor
|
||||||
|
(global-set-key (kbd "C-c c w") #'mc/mark-next-like-this-word)
|
||||||
|
(global-set-key (kbd "C-c c W") #'mc/mark-previous-like-this-word)
|
||||||
|
(global-set-key (kbd "C-c c s") #'mc/mark-next-like-this-symbol)
|
||||||
|
(global-set-key (kbd "C-c c S") #'mc/mark-previous-next-like-this-symbol)
|
||||||
|
(global-set-key (kbd "C-c c a") #'mc/mark-all-like-this-dwim)
|
||||||
|
(global-set-key (kbd "C-c c f") #'mc/mark-all-symbols-like-this-in-defun)
|
||||||
30
config/.emacs.d/config/util.el
Normal file
30
config/.emacs.d/config/util.el
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
;;; util.el --- Description -*- lexical-binding: t; -*-
|
||||||
|
;;
|
||||||
|
;; Copyright (C) 2026 Michael Chalupiak
|
||||||
|
;;
|
||||||
|
;; Author: Michael Chalupiak <mikec@archbox>
|
||||||
|
;; Maintainer: Michael Chalupiak <mikec@archbox>
|
||||||
|
;; Created: January 16, 2026
|
||||||
|
;; Modified: January 16, 2026
|
||||||
|
;; Version: 0.0.1
|
||||||
|
;; Keywords: abbrev bib c calendar comm convenience data docs emulations extensions faces files frames games hardware help hypermedia i18n internal languages lisp local maint mail matching mouse multimedia news outlines processes terminals tex text tools unix vc wp
|
||||||
|
;; Homepage: https://github.com/mikec/util
|
||||||
|
;; Package-Requires: ((emacs "30.1"))
|
||||||
|
;;
|
||||||
|
;; This file is not part of GNU Emacs.
|
||||||
|
;;
|
||||||
|
;;; Commentary:
|
||||||
|
;;
|
||||||
|
;; Description
|
||||||
|
;;
|
||||||
|
;;; Code:
|
||||||
|
|
||||||
|
;; which-key
|
||||||
|
(which-key-mode)
|
||||||
|
|
||||||
|
;; eglot
|
||||||
|
|
||||||
|
;; treesit
|
||||||
|
|
||||||
|
(provide 'util)
|
||||||
|
;;; util.el ends here
|
||||||
77
config/.emacs.d/early-init.el
Normal file
77
config/.emacs.d/early-init.el
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
;;; early-init.el --- Description -*- lexical-binding: t; -*-
|
||||||
|
;;
|
||||||
|
;; Copyright (C) 2026 Michael Chalupiak
|
||||||
|
;;
|
||||||
|
;; Author: Michael Chalupiak <mikec@archbox>
|
||||||
|
;; Maintainer: Michael Chalupiak <mikec@archbox>
|
||||||
|
;; Created: January 15, 2026
|
||||||
|
;; Modified: January 15, 2026
|
||||||
|
;; Version: 0.0.1
|
||||||
|
;; Keywords: abbrev bib c calendar comm convenience data docs emulations extensions faces files frames games hardware help hypermedia i18n internal languages lisp local maint mail matching mouse multimedia news outlines processes terminals tex text tools unix vc wp
|
||||||
|
;; Homepage: https://github.com/mikec/early-init
|
||||||
|
;; Package-Requires: ((emacs "24.3"))
|
||||||
|
;;
|
||||||
|
;; This file is not part of GNU Emacs.
|
||||||
|
;;
|
||||||
|
;;; Commentary:
|
||||||
|
;;
|
||||||
|
;; Description
|
||||||
|
;;
|
||||||
|
;;; Code:
|
||||||
|
|
||||||
|
(setq gc-cons-threshold (* 50 1000 1000)
|
||||||
|
inhibit-startup-message t
|
||||||
|
ring-bell-function 'ignore
|
||||||
|
package-enable-at-startup nil
|
||||||
|
auto-save-default nil
|
||||||
|
custom-file (locate-user-emacs-file "config/custom.el"))
|
||||||
|
;; (load custom-file 'noerror 'nomessage)
|
||||||
|
(menu-bar-mode -1)
|
||||||
|
(tool-bar-mode -1)
|
||||||
|
(scroll-bar-mode -1)
|
||||||
|
;; (defconst fonts '("Iosevka Term SS12" "Cascadia Code" "CaskaydiaCove Nerd Font"))
|
||||||
|
;; (defconst default-font-size 16)
|
||||||
|
|
||||||
|
;; (defun font-size (font)
|
||||||
|
;; (let ((size (plist-get font :size)))
|
||||||
|
;; (if size size default-font-size)))
|
||||||
|
;; (defun font-name (font)
|
||||||
|
;; (let ((name (plist-get font :name)))
|
||||||
|
;; (if name name font)))
|
||||||
|
|
||||||
|
;; (defun font-string (font)
|
||||||
|
;; (let ((name (font-name font))
|
||||||
|
;; (size (font-size font)))
|
||||||
|
;; (concat name " " (number-to-string size))))
|
||||||
|
|
||||||
|
;; (defun set-fonts ()
|
||||||
|
;; (let ((default-font (car fonts))
|
||||||
|
;; (fallback-fonts (cdr fonts)))
|
||||||
|
;; ;; (when (window-system)
|
||||||
|
;; (progn
|
||||||
|
;; (set-face-attribute 'default nil :font (font-string default-font))
|
||||||
|
;; (mapc (lambda (font)
|
||||||
|
;; (let ((face (font-string font))
|
||||||
|
;; (script (plist-get font :script)))
|
||||||
|
;; (if script
|
||||||
|
;; (progn
|
||||||
|
;; (set-fontset-font t script face)
|
||||||
|
;; (set-fontset-font t script (font-spec :script script) nil 'prepend))
|
||||||
|
;; (set-fontset-font t nil face nil 'prepend)))) fallback-fonts))))
|
||||||
|
|
||||||
|
;; (set-fonts)
|
||||||
|
|
||||||
|
;; (set-face-attribute 'default nil :font "Iosevka Term
|
||||||
|
;;(set-frame-font "Iosevka Term SS12-16")
|
||||||
|
(add-to-list 'default-frame-alist
|
||||||
|
'(font . "Iosevka Term SS12-14"))
|
||||||
|
(defun efs/display-startup-time ()
|
||||||
|
(message "Emacs loaded in %s with %d garbage collections."
|
||||||
|
(format "%.2f seconds"
|
||||||
|
(float-time
|
||||||
|
(time-subtract after-init-time before-init-time)))
|
||||||
|
gcs-done))
|
||||||
|
|
||||||
|
(add-hook 'emacs-startup-hook #'efs/display-startup-time)
|
||||||
|
(provide 'early-init)
|
||||||
|
;;; early-init.el ends here
|
||||||
45
config/.emacs.d/init.el
Normal file
45
config/.emacs.d/init.el
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
;;; init.el --- Description -*- lexical-binding: t; -*-
|
||||||
|
;;
|
||||||
|
;; Copyright (C) 2026 Michael Chalupiak
|
||||||
|
;;
|
||||||
|
;; Author: Michael Chalupiak <mikec@mchalupiak.com>
|
||||||
|
;; Maintainer: Michael Chalupiak <mikec@mchalupiak.com>
|
||||||
|
;; Created: January 15, 2026
|
||||||
|
;; Modified: January 15, 2026
|
||||||
|
;; Version: 0.0.1
|
||||||
|
;; Keywords: abbrev bib c calendar comm convenience data docs emulations extensions faces files frames games hardware help hypermedia i18n internal languages lisp local maint mail matching mouse multimedia news outlines processes terminals tex text tools unix vc wp
|
||||||
|
;; Homepage: https://github.com/mikec/init
|
||||||
|
;; Package-Requires: ((emacs "24.3"))
|
||||||
|
;;
|
||||||
|
;; This file is not part of GNU Emacs.
|
||||||
|
;;
|
||||||
|
;;; Commentary:
|
||||||
|
;;
|
||||||
|
;; Description
|
||||||
|
;;
|
||||||
|
;;; Code:
|
||||||
|
|
||||||
|
(defconst user-init-dir
|
||||||
|
(cond ((boundp 'user-emacs-directory)
|
||||||
|
user-emacs-directory)
|
||||||
|
((boundp 'user-init-directory)
|
||||||
|
user-init-directory)
|
||||||
|
(t "~/.emacs.d/")))
|
||||||
|
|
||||||
|
(defconst config-dirs '("config" "plugins"))
|
||||||
|
|
||||||
|
(defun load-user-config ()
|
||||||
|
(let*
|
||||||
|
((expanded-dirs (mapcar
|
||||||
|
(lambda (dir) (concat (expand-file-name dir user-init-dir) "/*.el"))
|
||||||
|
config-dirs))
|
||||||
|
(config-files (seq-filter (lambda (file) (not (string= file (expand-file-name "plugins/straight.el" user-init-dir)))) (mapcan (lambda (expanded-dir) (file-expand-wildcards expanded-dir)) expanded-dirs))))
|
||||||
|
(progn
|
||||||
|
(load-file (expand-file-name "plugins/straight.el" user-init-dir))
|
||||||
|
(mapc (lambda (file) (load-file file)) config-files))))
|
||||||
|
|
||||||
|
(load-user-config)
|
||||||
|
(setq gc-cons-threshold (* 2 1000 1000))
|
||||||
|
|
||||||
|
(provide 'init)
|
||||||
|
;;; init.el ends here
|
||||||
44
config/.emacs.d/plugins/apps.el
Normal file
44
config/.emacs.d/plugins/apps.el
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
;;; apps.el --- Description -*- lexical-binding: t; -*-
|
||||||
|
;;
|
||||||
|
;; Copyright (C) 2026 Michael Chalupiak
|
||||||
|
;;
|
||||||
|
;; Author: Michael Chalupiak <mikec@archbox>
|
||||||
|
;; Maintainer: Michael Chalupiak <mikec@archbox>
|
||||||
|
;; Created: January 16, 2026
|
||||||
|
;; Modified: January 16, 2026
|
||||||
|
;; Version: 0.0.1
|
||||||
|
;; Keywords: Symbol’s value as variable is void: finder-known-keywords
|
||||||
|
;; Homepage: https://github.com/mikec/apps
|
||||||
|
;; Package-Requires: ((emacs "24.3"))
|
||||||
|
;;
|
||||||
|
;; This file is not part of GNU Emacs.
|
||||||
|
;;
|
||||||
|
;;; Commentary:
|
||||||
|
;;
|
||||||
|
;; Description
|
||||||
|
;;
|
||||||
|
;;; Code:
|
||||||
|
|
||||||
|
(straight-use-package
|
||||||
|
'(eat :type git
|
||||||
|
:host codeberg
|
||||||
|
:repo "akib/emacs-eat"
|
||||||
|
:files ("*.el" ("term" "term/*.el") "*.texi"
|
||||||
|
"*.ti" ("terminfo/e" "terminfo/e/*")
|
||||||
|
("terminfo/65" "terminfo/65/*")
|
||||||
|
("integration" "integration/*")
|
||||||
|
(:exclude ".dir-locals.el" "*-tests.el"))
|
||||||
|
:defer t))
|
||||||
|
|
||||||
|
(add-hook 'eshell-load-hook #'eat-eshell-mode)
|
||||||
|
|
||||||
|
(use-package magit
|
||||||
|
:ensure t
|
||||||
|
:defer t)
|
||||||
|
|
||||||
|
(use-package org
|
||||||
|
:ensure t
|
||||||
|
:defer t)
|
||||||
|
|
||||||
|
(provide 'apps)
|
||||||
|
;;; apps.el ends here
|
||||||
75
config/.emacs.d/plugins/lang.el
Normal file
75
config/.emacs.d/plugins/lang.el
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
;;; lang.el --- Description -*- lexical-binding: t; -*-
|
||||||
|
;;
|
||||||
|
;; Copyright (C) 2026 Michael Chalupiak
|
||||||
|
;;
|
||||||
|
;; Author: Michael Chalupiak <mikec@archbox>
|
||||||
|
;; Maintainer: Michael Chalupiak <mikec@archbox>
|
||||||
|
;; Created: January 16, 2026
|
||||||
|
;; Modified: January 16, 2026
|
||||||
|
;; Version: 0.0.1
|
||||||
|
;; Keywords: abbrev bib c calendar comm convenience data docs emulations extensions faces files frames games hardware help hypermedia i18n internal languages lisp local maint mail matching mouse multimedia news outlines processes terminals tex text tools unix vc wp
|
||||||
|
;; Homepage: https://github.com/mikec/lang
|
||||||
|
;; Package-Requires: ((emacs "29.1"))
|
||||||
|
;;
|
||||||
|
;; This file is not part of GNU Emacs.
|
||||||
|
;;
|
||||||
|
;;; Commentary:
|
||||||
|
;;
|
||||||
|
;; Description
|
||||||
|
;;
|
||||||
|
;;; Code:
|
||||||
|
|
||||||
|
(use-package treesit-auto
|
||||||
|
:ensure t
|
||||||
|
;; :defer t
|
||||||
|
:custom
|
||||||
|
(treesit-auto-install t)
|
||||||
|
:config
|
||||||
|
(treesit-auto-add-to-auto-mode-alist 'all)
|
||||||
|
(global-treesit-auto-mode))
|
||||||
|
|
||||||
|
;; (use-package gitconfig-mode
|
||||||
|
;; :ensure t
|
||||||
|
;; :defer t)
|
||||||
|
;; (use-package gitignore-mode
|
||||||
|
;; :ensure t
|
||||||
|
;; :defer t)
|
||||||
|
|
||||||
|
(use-package odin-ts-mode
|
||||||
|
:ensure t
|
||||||
|
:defer t
|
||||||
|
:straight '(:type git :host github :repo "Sampie159/odin-ts-mode"))
|
||||||
|
|
||||||
|
(use-package zig-ts-mode
|
||||||
|
:ensure t
|
||||||
|
:defer t
|
||||||
|
:straight '(:type git :host codeberg :repo "meow_king/zig-ts-mode"))
|
||||||
|
|
||||||
|
(use-package eglot-x
|
||||||
|
:ensure t
|
||||||
|
:defer t
|
||||||
|
:straight '(:type git :host github :repo "nemethf/eglot-x"))
|
||||||
|
|
||||||
|
(dolist (mode '(c-ts-mode-hook
|
||||||
|
rust-ts-mode-hook
|
||||||
|
odin-ts-mode-hook
|
||||||
|
zig-ts-mode-hook))
|
||||||
|
(add-hook mode 'eglot-ensure))
|
||||||
|
|
||||||
|
(with-eval-after-load 'eglot
|
||||||
|
(require 'eglot-x)
|
||||||
|
(eglot-x-setup))
|
||||||
|
|
||||||
|
(with-eval-after-load 'eglot
|
||||||
|
(add-to-list 'eglot-server-programs
|
||||||
|
'(zig-ts-mode . ("zls"))))
|
||||||
|
|
||||||
|
(add-to-list 'auto-mode-alist '("\\.odin\\'" . odin-ts-mode))
|
||||||
|
(add-to-list 'auto-mode-alist '("\\.zig\\(?:\\.zon\\)?\\'" . zig-ts-mode))
|
||||||
|
|
||||||
|
(defvar treesit-language-source-alist '())
|
||||||
|
(add-to-list 'treesit-language-source-alist '(odin "https://github.com/tree-sitter-grammars/tree-sitter-odin"))
|
||||||
|
(add-to-list 'treesit-language-source-alist '(zig "https://github.com/tree-sitter-grammars/tree-sitter-zig"))
|
||||||
|
|
||||||
|
(provide 'lang)
|
||||||
|
;;; lang.el ends here
|
||||||
42
config/.emacs.d/plugins/straight.el
Normal file
42
config/.emacs.d/plugins/straight.el
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
;;; straight.el --- Description -*- lexical-binding: t; -*-
|
||||||
|
;;
|
||||||
|
;; Copyright (C) 2026 Michael Chalupiak
|
||||||
|
;;
|
||||||
|
;; Author: Michael Chalupiak <mikec@archbox>
|
||||||
|
;; Maintainer: Michael Chalupiak <mikec@archbox>
|
||||||
|
;; Created: January 15, 2026
|
||||||
|
;; Modified: January 15, 2026
|
||||||
|
;; Version: 0.0.1
|
||||||
|
;; Keywords: abbrev bib c calendar comm convenience data docs emulations extensions faces files frames games hardware help hypermedia i18n internal languages lisp local maint mail matching mouse multimedia news outlines processes terminals tex text tools unix vc wp
|
||||||
|
;; Homepage: https://github.com/mikec/straight
|
||||||
|
;; Package-Requires: ((emacs "24.3"))
|
||||||
|
;;
|
||||||
|
;; This file is not part of GNU Emacs.
|
||||||
|
;;
|
||||||
|
;;; Commentary:
|
||||||
|
;;
|
||||||
|
;; Description
|
||||||
|
;;
|
||||||
|
;;; Code:
|
||||||
|
|
||||||
|
(setq straight-use-package-by-default t
|
||||||
|
straight-check-for-modifications nil) ; can also be set to check-on-save
|
||||||
|
|
||||||
|
(defvar bootstrap-version)
|
||||||
|
(let ((bootstrap-file
|
||||||
|
(expand-file-name
|
||||||
|
"straight/repos/straight.el/bootstrap.el"
|
||||||
|
(or (bound-and-true-p straight-base-dir)
|
||||||
|
user-emacs-directory)))
|
||||||
|
(bootstrap-version 7))
|
||||||
|
(unless (file-exists-p bootstrap-file)
|
||||||
|
(with-current-buffer
|
||||||
|
(url-retrieve-synchronously
|
||||||
|
"https://raw.githubusercontent.com/radian-software/straight.el/develop/install.el"
|
||||||
|
'silent 'inhibit-cookies)
|
||||||
|
(goto-char (point-max))
|
||||||
|
(eval-print-last-sexp)))
|
||||||
|
(load bootstrap-file nil 'nomessage))
|
||||||
|
|
||||||
|
(provide 'straight)
|
||||||
|
;;; straight.el ends here
|
||||||
76
config/.emacs.d/plugins/themes.el
Normal file
76
config/.emacs.d/plugins/themes.el
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
;;; themes.el --- Description -*- lexical-binding: t; -*-
|
||||||
|
;;
|
||||||
|
;; Copyright (C) 2026 Michael Chalupiak
|
||||||
|
;;
|
||||||
|
;; Author: Michael Chalupiak <mikec@archbox>
|
||||||
|
;; Maintainer: Michael Chalupiak <mikec@archbox>
|
||||||
|
;; Created: January 16, 2026
|
||||||
|
;; Modified: January 16, 2026
|
||||||
|
;; Version: 0.0.1
|
||||||
|
;; Keywords: abbrev bib c calendar comm convenience data docs emulations extensions faces files frames games hardware help hypermedia i18n internal languages lisp local maint mail matching mouse multimedia news outlines processes terminals tex text tools unix vc wp
|
||||||
|
;; Homepage: https://github.com/mikec/themes
|
||||||
|
;; Package-Requires: ((emacs "29.1"))
|
||||||
|
;;
|
||||||
|
;; This file is not part of GNU Emacs.
|
||||||
|
;;
|
||||||
|
;;; Commentary:
|
||||||
|
;;
|
||||||
|
;; Description
|
||||||
|
;;
|
||||||
|
;;; Code:
|
||||||
|
|
||||||
|
(use-package doom-themes
|
||||||
|
:ensure t
|
||||||
|
:defer t
|
||||||
|
:custom
|
||||||
|
;; Global settings (defaults)
|
||||||
|
(doom-themes-enable-bold t) ; if nil, bold is universally disabled
|
||||||
|
(doom-themes-enable-italic t) ; if nil, italics is universally disabled
|
||||||
|
;; for treemacs users
|
||||||
|
;; (doom-themes-treemacs-theme "doom-atom") ; use "doom-colors" for less minimal icon theme
|
||||||
|
:config
|
||||||
|
;; (load-theme 'doom-one t)
|
||||||
|
|
||||||
|
;; Enable flashing mode-line on errors
|
||||||
|
;; (doom-themes-visual-bell-config)
|
||||||
|
;; Enable custom neotree theme (nerd-icons must be installed!)
|
||||||
|
;; (doom-themes-neotree-config)
|
||||||
|
;; or for treemacs users
|
||||||
|
;; (doom-themes-treemacs-config)
|
||||||
|
;; Corrects (and improves) org-mode's native fontification.
|
||||||
|
(doom-themes-org-config))
|
||||||
|
|
||||||
|
(straight-use-package '(nano-theme :type git :host github
|
||||||
|
:repo "rougier/nano-theme"))
|
||||||
|
|
||||||
|
(use-package kaolin-themes)
|
||||||
|
|
||||||
|
(use-package auto-dark
|
||||||
|
:defer t
|
||||||
|
:init
|
||||||
|
;; Configure themes
|
||||||
|
(setq auto-dark-themes '((doom-gruvbox) (doom-gruvbox-light)))
|
||||||
|
;; Disable doom's theme loading mechanism (just to make sure)
|
||||||
|
;; (setq! doom-theme nil)
|
||||||
|
;; Declare that all themes are safe to load.
|
||||||
|
;; Be aware that setting this variable may have security implications if you
|
||||||
|
;; get tricked into loading untrusted themes (via auto-dark-mode or manually).
|
||||||
|
;; See the documentation of custom-safe-themes for details.
|
||||||
|
;; (setq! custom-safe-themes t)
|
||||||
|
;; Enable auto-dark-mode at the right point in time.
|
||||||
|
;; This is inspired by doom-ui.el. Using server-after-make-frame-hook avoids
|
||||||
|
;; issues with an early start of the emacs daemon using systemd, which causes
|
||||||
|
;; problems with the DBus connection that auto-dark mode relies upon.
|
||||||
|
(defun my-auto-dark-init-h ()
|
||||||
|
(auto-dark-mode)
|
||||||
|
(remove-hook 'server-after-make-frame-hook #'my-auto-dark-init-h)
|
||||||
|
(remove-hook 'after-init-hook #'my-auto-dark-init-h))
|
||||||
|
(let ((hook (if (daemonp)
|
||||||
|
'server-after-make-frame-hook
|
||||||
|
'after-init-hook)))
|
||||||
|
;; Depth -95 puts this before doom-init-theme-h, which sounds like a good
|
||||||
|
;; idea, if only for performance reasons.
|
||||||
|
(add-hook hook #'my-auto-dark-init-h -95)))
|
||||||
|
|
||||||
|
(provide 'themes)
|
||||||
|
;;; themes.el ends here
|
||||||
315
config/.emacs.d/plugins/ui.el
Normal file
315
config/.emacs.d/plugins/ui.el
Normal file
@ -0,0 +1,315 @@
|
|||||||
|
;;; ui.el --- Description -*- lexical-binding: t; -*-
|
||||||
|
;;
|
||||||
|
;; Copyright (C) 2026 Michael Chalupiak
|
||||||
|
;;
|
||||||
|
;; Author: Michael Chalupiak <mikec@archbox>
|
||||||
|
;; Maintainer: Michael Chalupiak <mikec@archbox>
|
||||||
|
;; Created: January 16, 2026
|
||||||
|
;; Modified: January 16, 2026
|
||||||
|
;; Version: 0.0.1
|
||||||
|
;; Keywords: abbrev bib c calendar comm convenience data docs emulations extensions faces files frames games hardware help hypermedia i18n internal languages lisp local maint mail matching mouse multimedia news outlines processes terminals tex text tools unix vc wp
|
||||||
|
;; Homepage: https://github.com/mikec/ui
|
||||||
|
;; Package-Requires: ((emacs "29.1"))
|
||||||
|
;;
|
||||||
|
;; This file is not part of GNU Emacs.
|
||||||
|
;;
|
||||||
|
;;; Commentary:
|
||||||
|
;;
|
||||||
|
;; Description
|
||||||
|
;;
|
||||||
|
;;; Code:
|
||||||
|
|
||||||
|
(use-package corfu
|
||||||
|
;; Optional customizations
|
||||||
|
:custom
|
||||||
|
(corfu-cycle t) ;; Enable cycling for `corfu-next/previous'
|
||||||
|
;; (corfu-quit-at-boundary nil) ;; Never quit at completion boundary
|
||||||
|
;; (corfu-quit-no-match nil) ;; Never quit, even if there is no match
|
||||||
|
;; (corfu-preview-current nil) ;; Disable current candidate preview
|
||||||
|
;; (corfu-preselect 'prompt) ;; Preselect the prompt
|
||||||
|
;; (corfu-on-exact-match 'insert) ;; Configure handling of exact matches
|
||||||
|
|
||||||
|
;; Enable Corfu only for certain modes. See also `global-corfu-modes'.
|
||||||
|
;; :hook ((prog-mode . corfu-mode)
|
||||||
|
;; (shell-mode . corfu-mode)
|
||||||
|
;; (eshell-mode . corfu-mode))
|
||||||
|
|
||||||
|
:init
|
||||||
|
(setq corfu-auto t
|
||||||
|
corfu-auto-delay 0.05
|
||||||
|
corfu-auto-prefix 1
|
||||||
|
corfu-auto-trigger "." ;; Custom trigger characters
|
||||||
|
corfu-quit-no-match 'separator) ;; or t
|
||||||
|
;; Recommended: Enable Corfu globally. Recommended since many modes provide
|
||||||
|
;; Capfs and Dabbrev can be used globally (M-/). See also the customization
|
||||||
|
;; variable `global-corfu-modes' to exclude certain modes.
|
||||||
|
(global-corfu-mode)
|
||||||
|
|
||||||
|
;; Enable optional extension modes:
|
||||||
|
(corfu-history-mode)
|
||||||
|
(corfu-popupinfo-mode))
|
||||||
|
|
||||||
|
;; Add extensions
|
||||||
|
(use-package cape
|
||||||
|
;; Bind prefix keymap providing all Cape commands under a mnemonic key.
|
||||||
|
;; Press C-c p ? to for help.
|
||||||
|
:bind ("C-c p" . cape-prefix-map) ;; Alternative key: M-<tab>, M-p, M-+
|
||||||
|
;; Alternatively bind Cape commands individually.
|
||||||
|
;; :bind (("C-c p d" . cape-dabbrev)
|
||||||
|
;; ("C-c p h" . cape-history)
|
||||||
|
;; ("C-c p f" . cape-file)
|
||||||
|
;; ...)
|
||||||
|
:init
|
||||||
|
;; Add to the global default value of `completion-at-point-functions' which is
|
||||||
|
;; used by `completion-at-point'. The order of the functions matters, the
|
||||||
|
;; first function returning a result wins. Note that the list of buffer-local
|
||||||
|
;; completion functions takes precedence over the global list.
|
||||||
|
(add-hook 'prog-mode-hook
|
||||||
|
(defun +corfu-add-cape-file-h ()
|
||||||
|
(add-hook 'completion-at-point-functions #'cape-file -10 t)))
|
||||||
|
;; (add-hook 'completion-at-point-functions #'cape-dict -10 t)
|
||||||
|
;; (add-hook 'completion-at-point-functions #'cape-dabbrev -10 t)))
|
||||||
|
(add-hook 'text-mode-hook
|
||||||
|
(defun +corfu-add-cape-file-h ()
|
||||||
|
(add-hook 'completion-at-point-functions #'cape-file -10 t)))
|
||||||
|
;; (add-hook 'completion-at-point-functions #'cape-dict -10 t)
|
||||||
|
;; (add-hook 'completion-at-point-functions #'cape-dabbrev -10 t)))
|
||||||
|
(add-hook 'conf-mode-hook
|
||||||
|
(defun +corfu-add-cape-file-h ()
|
||||||
|
(add-hook 'completion-at-point-functions #'cape-file -10 t)))
|
||||||
|
;; (add-hook 'completion-at-point-functions #'cape-dict -10 t)
|
||||||
|
;; (add-hook 'completion-at-point-functions #'cape-dabbrev -10 t)))
|
||||||
|
;; (add-hook 'completion-at-point-functions #'cape-file)
|
||||||
|
;; (add-hook 'completion-at-point-functions #'cape-dabbrev)
|
||||||
|
;; (add-hook 'completion-at-point-functions #'cape-dict)
|
||||||
|
;; (add-hook 'completion-at-point-functions #'cape-emoji)
|
||||||
|
;; (add-hook 'completion-at-point-functions #'cape-elisp-block)
|
||||||
|
;; (add-hook 'completion-at-point-functions #'cape-history)
|
||||||
|
;; ...
|
||||||
|
)
|
||||||
|
|
||||||
|
(use-package vertico
|
||||||
|
:custom
|
||||||
|
;; (vertico-scroll-margin 0) ;; Different scroll margin
|
||||||
|
;; (vertico-count 20) ;; Show more candidates
|
||||||
|
;; (vertico-resize t) ;; Grow and shrink the Vertico minibuffer
|
||||||
|
(vertico-cycle t) ;; Enable cycling for `vertico-next/previous'
|
||||||
|
(vertico-multiform-mode)
|
||||||
|
:init
|
||||||
|
(vertico-mode)
|
||||||
|
(define-key vertico-map (kbd "DEL") #'vertico-directory-delete-char))
|
||||||
|
|
||||||
|
;; Enable rich annotations using the Marginalia package
|
||||||
|
(use-package marginalia
|
||||||
|
;; Bind `marginalia-cycle' locally in the minibuffer. To make the binding
|
||||||
|
;; available in the *Completions* buffer, add it to the
|
||||||
|
;; `completion-list-mode-map'.
|
||||||
|
:bind (:map minibuffer-local-map
|
||||||
|
("M-A" . marginalia-cycle))
|
||||||
|
|
||||||
|
;; The :init section is always executed.
|
||||||
|
:init
|
||||||
|
|
||||||
|
;; Marginalia must be activated in the :init section of use-package such that
|
||||||
|
;; the mode gets enabled right away. Note that this forces loading the
|
||||||
|
;; package.
|
||||||
|
(marginalia-mode))
|
||||||
|
|
||||||
|
;; Example configuration for Consult
|
||||||
|
(use-package consult
|
||||||
|
;; Replace bindings. Lazily loaded by `use-package'.
|
||||||
|
;; :bind (;; C-c bindings in `mode-specific-map'
|
||||||
|
;; ("C-c M-x" . consult-mode-command)
|
||||||
|
;; ("C-c h" . consult-history)
|
||||||
|
;; ("C-c k" . consult-kmacro)
|
||||||
|
;; ("C-c m" . consult-man)
|
||||||
|
;; ("C-c i" . consult-info)
|
||||||
|
;; ([remap Info-search] . consult-info)
|
||||||
|
;; ;; C-x bindings in `ctl-x-map'
|
||||||
|
;; ("C-x M-:" . consult-complex-command) ;; orig. repeat-complex-command
|
||||||
|
;; ("C-x b" . consult-buffer) ;; orig. switch-to-buffer
|
||||||
|
;; ("C-x 4 b" . consult-buffer-other-window) ;; orig. switch-to-buffer-other-window
|
||||||
|
;; ("C-x 5 b" . consult-buffer-other-frame) ;; orig. switch-to-buffer-other-frame
|
||||||
|
;; ("C-x t b" . consult-buffer-other-tab) ;; orig. switch-to-buffer-other-tab
|
||||||
|
;; ("C-x r b" . consult-bookmark) ;; orig. bookmark-jump
|
||||||
|
;; ("C-x p b" . consult-project-buffer) ;; orig. project-switch-to-buffer
|
||||||
|
;; ;; Custom M-# bindings for fast register access
|
||||||
|
;; ("M-#" . consult-register-load)
|
||||||
|
;; ("M-'" . consult-register-store) ;; orig. abbrev-prefix-mark (unrelated)
|
||||||
|
;; ("C-M-#" . consult-register)
|
||||||
|
;; ;; Other custom bindings
|
||||||
|
;; ("M-y" . consult-yank-pop) ;; orig. yank-pop
|
||||||
|
;; ;; M-g bindings in `goto-map'
|
||||||
|
;; ("M-g e" . consult-compile-error)
|
||||||
|
;; ("M-g r" . consult-grep-match)
|
||||||
|
;; ("M-g f" . consult-flymake) ;; Alternative: consult-flycheck
|
||||||
|
;; ("M-g g" . consult-goto-line) ;; orig. goto-line
|
||||||
|
;; ("M-g M-g" . consult-goto-line) ;; orig. goto-line
|
||||||
|
;; ("M-g o" . consult-outline) ;; Alternative: consult-org-heading
|
||||||
|
;; ("M-g m" . consult-mark)
|
||||||
|
;; ("M-g k" . consult-global-mark)
|
||||||
|
;; ("M-g i" . consult-imenu)
|
||||||
|
;; ("M-g I" . consult-imenu-multi)
|
||||||
|
;; ;; M-s bindings in `search-map'
|
||||||
|
;; ("M-s d" . consult-find) ;; Alternative: consult-fd
|
||||||
|
;; ("M-s c" . consult-locate)
|
||||||
|
;; ("M-s g" . consult-grep)
|
||||||
|
;; ("M-s G" . consult-git-grep)
|
||||||
|
;; ("M-s r" . consult-ripgrep)
|
||||||
|
;; ("M-s l" . consult-line)
|
||||||
|
;; ("M-s L" . consult-line-multi)
|
||||||
|
;; ("M-s k" . consult-keep-lines)
|
||||||
|
;; ("M-s u" . consult-focus-lines)
|
||||||
|
;; ;; Isearch integration
|
||||||
|
;; ("M-s e" . consult-isearch-history)
|
||||||
|
;; :map isearch-mode-map
|
||||||
|
;; ("M-e" . consult-isearch-history) ;; orig. isearch-edit-string
|
||||||
|
;; ("M-s e" . consult-isearch-history) ;; orig. isearch-edit-string
|
||||||
|
;; ("M-s l" . consult-line) ;; needed by consult-line to detect isearch
|
||||||
|
;; ("M-s L" . consult-line-multi) ;; needed by consult-line to detect isearch
|
||||||
|
;; ;; Minibuffer history
|
||||||
|
;; :map minibuffer-local-map
|
||||||
|
;; ("M-s" . consult-history) ;; orig. next-matching-history-element
|
||||||
|
;; ("M-r" . consult-history)) ;; orig. previous-matching-history-element
|
||||||
|
|
||||||
|
;; The :init configuration is always executed (Not lazy)
|
||||||
|
:init
|
||||||
|
|
||||||
|
;; Tweak the register preview for `consult-register-load',
|
||||||
|
;; `consult-register-store' and the built-in commands. This improves the
|
||||||
|
;; register formatting, adds thin separator lines, register sorting and hides
|
||||||
|
;; the window mode line.
|
||||||
|
(advice-add #'register-preview :override #'consult-register-window)
|
||||||
|
(setq register-preview-delay 0.5)
|
||||||
|
(setq consult-async-min-input 1)
|
||||||
|
;; Use Consult to select xref locations with preview
|
||||||
|
(setq xref-show-xrefs-function #'consult-xref
|
||||||
|
xref-show-definitions-function #'consult-xref)
|
||||||
|
|
||||||
|
;; Configure other variables and modes in the :config section,
|
||||||
|
;; after lazily loading the package.
|
||||||
|
:config
|
||||||
|
|
||||||
|
;; Optionally configure preview. The default value
|
||||||
|
;; is 'any, such that any key triggers the preview.
|
||||||
|
;; (setq consult-preview-key 'any)
|
||||||
|
;; (setq consult-preview-key "M-.")
|
||||||
|
;; (setq consult-preview-key '("S-<down>" "S-<up>"))
|
||||||
|
;; For some commands and buffer sources it is useful to configure the
|
||||||
|
;; :preview-key on a per-command basis using the `consult-customize' macro.
|
||||||
|
(consult-customize
|
||||||
|
consult-theme :preview-key '(:debounce 0.2 any)
|
||||||
|
consult-ripgrep consult-git-grep consult-grep consult-man
|
||||||
|
consult-bookmark consult-recent-file consult-xref
|
||||||
|
consult-source-bookmark consult-source-file-register
|
||||||
|
consult-source-recent-file consult-source-project-recent-file
|
||||||
|
;; :preview-key "M-."
|
||||||
|
:preview-key '(:debounce 0.4 any))
|
||||||
|
|
||||||
|
;; Optionally configure the narrowing key.
|
||||||
|
;; Both < and C-+ work reasonably well.
|
||||||
|
(setq consult-narrow-key "<") ;; "C-+"
|
||||||
|
|
||||||
|
;; Optionally make narrowing help available in the minibuffer.
|
||||||
|
;; You may want to use `embark-prefix-help-command' or which-key instead.
|
||||||
|
;; (keymap-set consult-narrow-map (concat consult-narrow-key " ?") #'consult-narrow-help)
|
||||||
|
)
|
||||||
|
|
||||||
|
(use-package consult-eglot
|
||||||
|
:ensure t
|
||||||
|
:defer t)
|
||||||
|
|
||||||
|
(use-package marginalia
|
||||||
|
:ensure t
|
||||||
|
:config
|
||||||
|
(marginalia-mode))
|
||||||
|
|
||||||
|
(use-package embark
|
||||||
|
:ensure t
|
||||||
|
|
||||||
|
:bind
|
||||||
|
(("C-." . embark-act) ;; pick some comfortable binding
|
||||||
|
("C-;" . embark-dwim) ;; good alternative: M-.
|
||||||
|
("C-h B" . embark-bindings)) ;; alternative for `describe-bindings'
|
||||||
|
|
||||||
|
:init
|
||||||
|
|
||||||
|
;; Optionally replace the key help with a completing-read interface
|
||||||
|
(setq prefix-help-command #'embark-prefix-help-command)
|
||||||
|
|
||||||
|
;; Show the Embark target at point via Eldoc. You may adjust the
|
||||||
|
;; Eldoc strategy, if you want to see the documentation from
|
||||||
|
;; multiple providers. Beware that using this can be a little
|
||||||
|
;; jarring since the message shown in the minibuffer can be more
|
||||||
|
;; than one line, causing the modeline to move up and down:
|
||||||
|
|
||||||
|
;; (add-hook 'eldoc-documentation-functions #'embark-eldoc-first-target)
|
||||||
|
;; (setq eldoc-documentation-strategy #'eldoc-documentation-compose-eagerly)
|
||||||
|
|
||||||
|
;; Add Embark to the mouse context menu. Also enable `context-menu-mode'.
|
||||||
|
;; (context-menu-mode 1)
|
||||||
|
;; (add-hook 'context-menu-functions #'embark-context-menu 100)
|
||||||
|
|
||||||
|
:config
|
||||||
|
|
||||||
|
;; Hide the mode line of the Embark live/completions buffers
|
||||||
|
(add-to-list 'display-buffer-alist
|
||||||
|
'("\\`\\*Embark Collect \\(Live\\|Completions\\)\\*"
|
||||||
|
nil
|
||||||
|
(window-parameters (mode-line-format . none)))))
|
||||||
|
|
||||||
|
;; Consult users will also want the embark-consult package.
|
||||||
|
(use-package embark-consult
|
||||||
|
:ensure t ; only need to install it, embark loads it after consult if found
|
||||||
|
:hook
|
||||||
|
(embark-collect-mode . consult-preview-at-point-mode))
|
||||||
|
|
||||||
|
;; Optionally use the `orderless' completion style.
|
||||||
|
(use-package orderless
|
||||||
|
:custom
|
||||||
|
;; Configure a custom style dispatcher (see the Consult wiki)
|
||||||
|
;; (orderless-style-dispatchers '(+orderless-consult-dispatch orderless-affix-dispatch))
|
||||||
|
;; (orderless-component-separator #'orderless-escapable-split-on-space)
|
||||||
|
(completion-styles '(orderless basic))
|
||||||
|
(completion-category-overrides '((file (styles partial-completion))))
|
||||||
|
(completion-category-defaults nil) ;; Disable defaults, use our settings
|
||||||
|
(completion-pcm-leading-wildcard t)) ;; Emacs 31: partial-completion behaves like substring
|
||||||
|
|
||||||
|
;; Persist history over Emacs restarts. Vertico sorts by history position.
|
||||||
|
(use-package savehist
|
||||||
|
:init
|
||||||
|
(savehist-mode))
|
||||||
|
|
||||||
|
(use-package indent-bars
|
||||||
|
:config
|
||||||
|
(setq
|
||||||
|
;; Show indent guides starting from the first column.
|
||||||
|
indent-bars-starting-column 0
|
||||||
|
;; Make indent guides subtle; the default is too distractingly colorful.
|
||||||
|
indent-bars-width-frac 0.15 ; make bitmaps thinner
|
||||||
|
indent-bars-color-by-depth nil
|
||||||
|
indent-bars-color '(font-lock-comment-face :face-bg nil :blend 0.425)
|
||||||
|
;; Don't highlight current level indentation; it's distracting and is
|
||||||
|
;; unnecessary overhead for little benefit.
|
||||||
|
indent-bars-highlight-current-depth nil)
|
||||||
|
:custom
|
||||||
|
(indent-bars-no-descend-lists t) ; no extra bars in continued func arg lists
|
||||||
|
(indent-bars-treesit-support t)
|
||||||
|
(indent-bars-treesit-ignore-blank-lines-types '("module"))
|
||||||
|
;; Add other languages as needed
|
||||||
|
;; (indent-bars-treesit-scope '((python function_definition class_definition for_statement
|
||||||
|
;; if_statement with_statement while_statement)))
|
||||||
|
;; Note: wrap may not be needed if no-descend-list is enough
|
||||||
|
;;(indent-bars-treesit-wrap '((python argument_list parameters ; for python, as an example
|
||||||
|
;; list list_comprehension
|
||||||
|
;; dictionary dictionary_comprehension
|
||||||
|
;; parenthesized_expression subscript)))
|
||||||
|
:hook ((prog-mode text-mode) . indent-bars-mode))
|
||||||
|
|
||||||
|
(use-package dashboard
|
||||||
|
:ensure t
|
||||||
|
:config
|
||||||
|
(dashboard-setup-startup-hook))
|
||||||
|
|
||||||
|
(provide 'ui)
|
||||||
|
;;; ui.el ends here
|
||||||
103
config/.emacs.d/plugins/utils.el
Normal file
103
config/.emacs.d/plugins/utils.el
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
;;; utils.el --- Description -*- lexical-binding: t; -*-
|
||||||
|
;;
|
||||||
|
;; Copyright (C) 2026 Michael Chalupiak
|
||||||
|
;;
|
||||||
|
;; Author: Michael Chalupiak <mikec@archbox>
|
||||||
|
;; Maintainer: Michael Chalupiak <mikec@archbox>
|
||||||
|
;; Created: January 16, 2026
|
||||||
|
;; Modified: January 16, 2026
|
||||||
|
;; Version: 0.0.1
|
||||||
|
;; Keywords: abbrev bib c calendar comm convenience data docs emulations extensions faces files frames games hardware help hypermedia i18n internal languages lisp local maint mail matching mouse multimedia news outlines processes terminals tex text tools unix vc wp
|
||||||
|
;; Homepage: https://github.com/mikec/utils
|
||||||
|
;; Package-Requires: ((emacs "29.1"))
|
||||||
|
;;
|
||||||
|
;; This file is not part of GNU Emacs.
|
||||||
|
;;
|
||||||
|
;;; Commentary:
|
||||||
|
;;
|
||||||
|
;; Description
|
||||||
|
;;
|
||||||
|
;;; Code:
|
||||||
|
|
||||||
|
(use-package surround
|
||||||
|
:ensure t
|
||||||
|
:defer t
|
||||||
|
:bind-keymap ("M-'" . surround-keymap))
|
||||||
|
|
||||||
|
(use-package dirvish
|
||||||
|
:ensure t
|
||||||
|
:defer t
|
||||||
|
:init
|
||||||
|
(dirvish-peek-mode 1))
|
||||||
|
; (dirvish-override-dired-mode 1))
|
||||||
|
|
||||||
|
(use-package multiple-cursors
|
||||||
|
:ensure t
|
||||||
|
:defer t)
|
||||||
|
|
||||||
|
(use-package hl-todo
|
||||||
|
:ensure t
|
||||||
|
:defer t)
|
||||||
|
|
||||||
|
(use-package dtrt-indent
|
||||||
|
:ensure t
|
||||||
|
:defer 5
|
||||||
|
:config
|
||||||
|
(dtrt-indent-global-mode 1))
|
||||||
|
|
||||||
|
(use-package undo-fu
|
||||||
|
:ensure t
|
||||||
|
:defer 5
|
||||||
|
:bind (("C-_" . 'undo-fu-only-undo)
|
||||||
|
("C-/" . 'undo-fu-only-redo)))
|
||||||
|
(use-package undo-fu-session
|
||||||
|
:config
|
||||||
|
(setq undo-fu-session-incompatible-files '("/COMMIT_EDITMSG\\'" "/git-rebase-todo\\'"))
|
||||||
|
(undo-fu-session-global-mode))
|
||||||
|
|
||||||
|
(use-package blamer
|
||||||
|
:ensure t
|
||||||
|
; :bind (("s-i" . blamer-show-commit-info)
|
||||||
|
; ("C-c i" . blamer-show-posframe-commit-info))
|
||||||
|
:defer 10
|
||||||
|
:custom
|
||||||
|
(blamer-idle-time 0.2)
|
||||||
|
(blamer-min-offset 70)
|
||||||
|
:config
|
||||||
|
(global-blamer-mode 1))
|
||||||
|
|
||||||
|
(use-package git-gutter
|
||||||
|
:defer 10
|
||||||
|
:hook (prog-mode . git-gutter-mode)
|
||||||
|
:config
|
||||||
|
(setq git-gutter:update-interval 0.02))
|
||||||
|
|
||||||
|
(use-package git-gutter-fringe
|
||||||
|
:defer 10
|
||||||
|
:config
|
||||||
|
(define-fringe-bitmap 'git-gutter-fr:added [224] nil nil '(center repeated))
|
||||||
|
(define-fringe-bitmap 'git-gutter-fr:modified [224] nil nil '(center repeated))
|
||||||
|
(define-fringe-bitmap 'git-gutter-fr:deleted [128 192 224 240] nil nil 'bottom))
|
||||||
|
|
||||||
|
(use-package visual-replace
|
||||||
|
:ensure t
|
||||||
|
:defer 5
|
||||||
|
:config
|
||||||
|
(visual-replace-global-mode 1))
|
||||||
|
;; :bind (("C-c r" . visual-replace)
|
||||||
|
;; :map isearch-mode-map
|
||||||
|
;; ("C-c r" . visual-replace-from-isearch)))
|
||||||
|
|
||||||
|
(use-package parinfer-rust-mode
|
||||||
|
:ensure t
|
||||||
|
:defer t
|
||||||
|
:hook emacs-lisp-mode
|
||||||
|
:config
|
||||||
|
(electric-pair-mode -1))
|
||||||
|
|
||||||
|
(use-package apheleia
|
||||||
|
:ensure t
|
||||||
|
:defer t)
|
||||||
|
|
||||||
|
(provide 'utils)
|
||||||
|
;;; utils.el ends here
|
||||||
Loading…
x
Reference in New Issue
Block a user