aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJack Jamison <jackqjamison@gmail.com>2026-07-29 23:00:29 -0400
committerJack Jamison <jackqjamison@gmail.com>2026-07-29 23:00:29 -0400
commit244bafc426222b58d66e57d5eef7d4e2bccfddf1 (patch)
tree4466fe8d39e47ffe842a7f37abfa107a1cafdb8d
parent18b2811e9f4a9dbb75237768cee38757d1b10821 (diff)
neomacs yet again
-rw-r--r--.config/emacs/completion-at-point.el16
-rw-r--r--.config/emacs/files.el (renamed from .config/emacs/file-management.el)10
-rw-r--r--.config/emacs/init.el81
-rw-r--r--.config/emacs/minibuffer.el29
-rw-r--r--.config/emacs/misc.el43
-rw-r--r--.config/emacs/style.el71
-rw-r--r--.config/emacs/text-editing.el19
-rw-r--r--.config/emacs/ui.el57
8 files changed, 199 insertions, 127 deletions
diff --git a/.config/emacs/completion-at-point.el b/.config/emacs/completion-at-point.el
new file mode 100644
index 0000000..7683dd2
--- /dev/null
+++ b/.config/emacs/completion-at-point.el
@@ -0,0 +1,16 @@
+(use-package corfu
+ :ensure t
+ :hook (after-init . global-corfu-mode)
+ :bind (:map corfu-map ("<tab>" . corfu-complete))
+ :config
+ (setq tab-always-indent 'complete)
+ (setq corfu-preview-current nil)
+ (setq corfu-min-width 20)
+
+ (setq corfu-popupinfo-delay '(1.25 . 0.5))
+ (corfu-popupinfo-mode 1) ; shows documentation after `corfu-popupinfo-delay'
+
+ ;; Sort by input history (no need to modify `corfu-sort-function').
+ (with-eval-after-load 'savehist
+ (corfu-history-mode 1)
+ (add-to-list 'savehist-additional-variables 'corfu-history)))
diff --git a/.config/emacs/file-management.el b/.config/emacs/files.el
index 80165f7..0830ffc 100644
--- a/.config/emacs/file-management.el
+++ b/.config/emacs/files.el
@@ -1,9 +1,8 @@
(use-package dired
- :ensure nil
:commands (dired)
- :hook
- ((dired-mode . dired-hide-details-mode)
- (dired-mode . hl-line-mode))
+ :hook ((dired-mode . dired-hide-details-mode)
+ (dired-mode . hl-line-mode)
+ (dired-mode . (lambda () (setq-local cursor-type nil))))
:config
(setq dired-recursive-copies 'always)
(setq dired-recursive-deletes 'always)
@@ -12,6 +11,7 @@
(setq dired-listing-switches "-alh --group-directories-first"))
(use-package dired-subtree
+ :ensure t
:after dired
:bind
( :map dired-mode-map
@@ -19,5 +19,7 @@
("TAB" . dired-subtree-toggle)
("<backtab>" . dired-subtree-remove)
("S-TAB" . dired-subtree-remove))
+ :hook
+ (dired-subtree-after-insert . nerd-icons-dired--refresh)
:config
(setq dired-subtree-use-backgrounds nil))
diff --git a/.config/emacs/init.el b/.config/emacs/init.el
index 27b7828..f2486fa 100644
--- a/.config/emacs/init.el
+++ b/.config/emacs/init.el
@@ -1,4 +1,11 @@
-(require 'package)
+;; add my lisp directory and its subdirectories to the load path
+(defvar my-lisp-dir (concat (getenv "XDG_CONFIG_HOME") "/emacs/lisp"))
+(add-to-list 'load-path my-lisp-dir)
+(let ((default-directory my-lisp-dir))
+ (normal-top-level-add-subdirs-to-load-path))
+
+;; stop garbage files
+(require 'no-littering)
;; improve garbage collection
(defun my-minibuffer-setup-hook ()
@@ -12,22 +19,11 @@
(run-with-idle-timer 1.2 t 'garbage-collect))
(gc-idle-timer)
-;; add my lisp directory and its subdirectories to the load path
-(defvar my-lisp-dir (concat (getenv "XDG_CONFIG_HOME") "/emacs/lisp"))
-(add-to-list 'load-path my-lisp-dir)
-(let ((default-directory my-lisp-dir))
- (normal-top-level-add-subdirs-to-load-path))
-
-;; greener emacs
-(use-package no-littering
- :ensure nil
- :demand t)
-
-;; no custom and lockfiles
+;; opt out of custom and lockfiles
(setq custom-file (make-temp-file "emacs-custom-"))
(setq create-lockfiles nil)
-;; backups in one folder
+;; backups in one directory
(setq backup-directory-alist
`((".*" . ,temporary-file-directory)))
(setq auto-save-file-name-transforms
@@ -35,32 +31,55 @@
;; better meta behaviour
(setq inhibit-startup-message t
- vc-follow-symlinks t
- use-short-answers t
- enable-recursive-minibuffers t)
+ vc-follow-symlinks t
+ use-short-answers t
+ enable-recursive-minibuffers t)
+
+;; set up package managers
+(require 'package)
+(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
+(package-initialize)
+(unless package-archive-contents
+ (package-refresh-contents))
+
+;; don't complain about bytecomp errors in a window
+(add-to-list 'display-buffer-alist
+ '("\\`\\*\\(Warnings\\|Compile-Log\\)\\*\\'"
+ (display-buffer-no-window)
+ (allow-no-window . t)))
-;; saveplace mode
+;; saves last place in file
(use-package saveplace
- :ensure nil
:config
(save-place-mode))
-;; savehist mode
-(use-package savehist
- :ensure nil
- :init
- (savehist-mode))
+;; better C-g dwim
+(defun keyboard-quit-dwim ()
+ (interactive)
+ (cond
+ ((region-active-p)
+ (keyboard-quit))
+ ((derived-mode-p 'completion-list-mode)
+ (delete-completion-window))
+ ((> (minibuffer-depth) 0)
+ (abort-recursive-edit))
+ (t
+ (keyboard-quit))))
+(define-key global-map (kbd "C-g") #'keyboard-quit-dwim)
;; load my config files
-(defun loadc (file) (load (expand-file-name file user-emacs-directory)))
-(loadc "ui.el")
+(defun loadc (file) (load (locate-user-emacs-file file)))
+(loadc "style.el")
(loadc "text-editing.el")
+(loadc "minibuffer.el")
+(loadc "completion-at-point.el")
+(loadc "files.el")
(loadc "misc.el")
-(loadc "style.el")
-(loadc "file-management.el") (context-menu-mode t)
-(loadc "ide.el")
-(loadc "evil.el")
-(loadc "lang.el")
+;; (loadc "ide.el")
+;; (loadc "evil.el")
+;; (loadc "lang.el")
+
+(find-file user-init-file)
;; skipped: diminish, improved C-g, evil nerd commenter, ansi color and rainbow
;; delimiters, evil, rainbow,
diff --git a/.config/emacs/minibuffer.el b/.config/emacs/minibuffer.el
new file mode 100644
index 0000000..678a13b
--- /dev/null
+++ b/.config/emacs/minibuffer.el
@@ -0,0 +1,29 @@
+(use-package vertico
+ :ensure t
+ :hook (after-init . vertico-mode))
+
+(use-package vertico-directory
+ :ensure t
+ :after vertico
+ ;; More convenient directory navigation commands
+ :bind (:map vertico-map
+ ("RET" . vertico-directory-enter)
+ ("DEL" . vertico-directory-delete-char)
+ ("M-DEL" . vertico-directory-delete-word))
+ :config
+ (setq read-extended-command-predicate #'command-completion-default-include-p
+ minibuffer-prompt-properties '(read-only t cursor-intangible t face minibuffer-prompt)))
+
+(use-package marginalia
+ :ensure t
+ :hook (after-init . marginalia-mode))
+
+(use-package orderless
+ :ensure t
+ :config
+ (setq completion-styles '(orderless basic))
+ (setq completion-category-defaults nil)
+ (setq completion-category-overrides nil))
+
+(use-package savehist
+ :hook (after-init . savehist-mode))
diff --git a/.config/emacs/misc.el b/.config/emacs/misc.el
index 9239f64..b6d9a26 100644
--- a/.config/emacs/misc.el
+++ b/.config/emacs/misc.el
@@ -5,40 +5,43 @@
;; magit
(use-package magit
- :demand t
+ :ensure t
:bind (("C-x g" . magit-status))
+ :config
+ (setq vc-handled-backends (delq 'Git vc-handled-backends))
:custom
(magit-display-buffer-function #'magit-display-buffer-same-window-except-diff-v1))
;; consult
(use-package consult
+ :ensure t
:custom
(consult-preview-key nil)
:bind (("M-y" . 'consult-yank-pop) ;; Paste by selecting the kill-ring
- ("M-s" . 'consult-line) ;; Search current buffer, like swiper
- ("C-c i" . 'consult-imenu) ;; Search the imenu
- ))
-
-;; proj
-(use-package proj
- :demand t
- :config
- (global-set-key (kbd "C-x b") `proj-switch-to-buffer)
- (global-set-key (kbd "C-c b") `switch-to-buffer)
- (global-set-key (kbd "C-x k") `proj-kill-buffer)
- (global-set-key (kbd "C-c k") `kill-buffer)
- (setq proj-locations '(("~/development/" . 1) ("~/opt/" . 1) ("~/dotfiles/" . 0) ("~/dotfiles/.config/emacs/lisp/" . 1))
- proj-grep-function 'consult-ripgrep))
-
-;; editorconfig mode
-(editorconfig-mode 1)
-(add-hook 'prog-mode 'editorconfig-apply)
+ ("M-s" . 'consult-line) ;; Search current buffer swiper
+ ("C-c i" . 'consult-imenu))) ;; Search the imenu
;; helpful
(use-package helpful
- :ensure nil
+ :ensure t
:bind
([remap describe-command] . helpful-command)
([remap describe-function] . helpful-callable)
([remap describe-variable] . helpful-variable)
([remap describe-key] . helpful-key))
+
+;; editorconfig mode
+(editorconfig-mode 1)
+(add-hook 'prog-mode 'editorconfig-apply)
+
+;; proj
+;; (use-package proj
+;; :demand t
+;; :config
+;; (global-set-key (kbd "C-x b") `proj-switch-to-buffer)
+;; (global-set-key (kbd "C-c b") `switch-to-buffer)
+;; (global-set-key (kbd "C-x k") `proj-kill-buffer)
+;; (global-set-key (kbd "C-c k") `kill-buffer)
+;; (setq proj-locations '(("~/development/" . 1) ("~/opt/" . 1) ("~/dotfiles/" . 0) ("~/dotfiles/.config/emacs/lisp/" . 1))
+;; proj-grep-function 'consult-ripgrep))
+
diff --git a/.config/emacs/style.el b/.config/emacs/style.el
index 9ae5ea9..b4071a8 100644
--- a/.config/emacs/style.el
+++ b/.config/emacs/style.el
@@ -1,7 +1,70 @@
+;; get rid of ui
+(menu-bar-mode -1)
+(scroll-bar-mode -1)
+(tool-bar-mode -1)
+
+;; fonts
+(let ((mono-spaced-font "DejaVuSansMono")
+ (proportionately-spaced-font "DejaVuSans"))
+ (set-face-attribute 'default nil :family mono-spaced-font :height 100)
+ (set-face-attribute 'fixed-pitch nil :family mono-spaced-font :height 1.0)
+ (set-face-attribute 'variable-pitch nil :family proportionately-spaced-font :height 1.0))
+
;; theme
-(use-package doom-themes
+
+(load-theme 'wombat)
+
+
+(custom-set-faces
+ '(default ((t (:inherit nil :stipple nil :background "#222323" :foreground "#f6f3e8" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 115 :width normal :family "Monaco"))))
+ '(highlight ((t (:underline nil))))
+ '(fringe ((t (:background "#222323"))))
+ '(vertical-border ((t (:foreground "#303030"))))
+ '(success ((t (:inherit (quote font-lock-keyword-face) :weight normal))))
+ '(font-lock-keyword-face ((t (:foreground "#86b7dd"))))
+ '(font-lock-string-face ((t (:foreground "#98dc5f"))))
+ )
+
+ ;; (custom-set-faces
+ ;; '(highlight ((t (:underline nil)))))
+ ;; '(dired-directory ((t (:inherit (quote font-lock-keyword-face)))))
+ ;; '(dired-header ((t (:inherit (quote font-lock-comment-face)))))
+ ;; '(font-lock-keyword-face ((t (:foreground "#86b7dd"))))
+ ;; '(font-lock-string-face ((t (:foreground "#98dc5f"))))
+ ;; '(fringe ((t (:background "#222323"))))
+ ;; '(ido-first-match ((t (:inherit (quote font-lock-comment-face)))))
+ ;; '(ido-only-match ((t (:inherit (quote font-lock-comment-face)))))
+ ;; '(ido-subdir ((t (:inherit (quote font-lock-keyword-face)))))
+ ;; '(linum ((t (:inherit (shadow default) :background "#191919" :foreground "#505050"))))
+ ;; '(success ((t (:inherit (quote font-lock-keyword-face) :weight normal))))
+ ;; '(vertical-border ((t (:foreground "#303030"))))
+ ;; '(company-scrollbar-bg ((t (:background "#303030"))))
+ ;; '(company-scrollbar-fg ((t (:background "#99968b"))))
+ ;; '(company-tooltip ((t (:background "#303030"))))
+ ;; '(company-tooltip-annotation ((t (:inherit (quote font-lock-comment-face)))))
+ ;; '(company-tooltip-common ((t (:inherit (quote font-lock-comment-face)))))
+ ;; '(company-tooltip-common-selection ((t (:inherit (quote font-lock-keyword-face) :weight normal))))
+ ;; '(company-tooltip-mouse ((t (:inherit (quote font-lock-keyword-face) :weight normal))))
+ ;; '(company-tooltip-selection ((t (:inherit (quote font-lock-keyword-face) :weight normal))))
+
+;; icons
+
+(use-package nerd-icons
+ :ensure t)
+
+(use-package nerd-icons-completion
+ :ensure t
+ :after marginalia
+ :config
+ (add-hook 'marginalia-mode-hook #'nerd-icons-completion-marginalia-setup))
+
+(use-package nerd-icons-corfu
+ :ensure t
+ :after corfu
:config
- (load-theme 'doom-one t))
+ (add-to-list 'corfu-margin-formatters #'nerd-icons-corfu-formatter))
-;; font
-(add-to-list 'default-frame-alist '(font . "ComicMono-12"))
+(use-package nerd-icons-dired
+ :ensure t
+ :hook
+ (dired-mode . nerd-icons-dired-mode))
diff --git a/.config/emacs/text-editing.el b/.config/emacs/text-editing.el
index 392f1d9..f6a0147 100644
--- a/.config/emacs/text-editing.el
+++ b/.config/emacs/text-editing.el
@@ -1,7 +1,3 @@
-;; tabs instead of spaces
-(setq-default tab-width 4)
-(setq backward-delete-char-untabify-method "hungry")
-
;; scrolling
(setq scroll-up-aggressively nil
scroll-down-aggressively nil
@@ -9,22 +5,23 @@
(setq scroll-step 1)
(setq scroll-margin 8)
+;; columns
+(setq-default fill-column 80)
+(setq-default truncate-lines t)
+
;; mwim
(use-package mwim
- :ensure nil
:bind (("C-a" . mwim-beginning)
("C-e" . mwim-end-of-line)))
;; expand keybind
(use-package expand-region
- :ensure nil
:bind ("C-=" . er/expand-region))
-;; delete marked text when typing start
-(use-package delsel
- :ensure nil
- :hook (after-init . delete-selection-mode))
-
;; better comment keybind
(use-package evil-nerd-commenter
:bind ("M-;" . evilnc-comment-or-uncomment-lines))
+
+;; delete selected region when you type new text
+(use-package delsel
+ :hook (after-init . delete-selection-mode))
diff --git a/.config/emacs/ui.el b/.config/emacs/ui.el
deleted file mode 100644
index e8c547e..0000000
--- a/.config/emacs/ui.el
+++ /dev/null
@@ -1,57 +0,0 @@
-;; disable bs
-(scroll-bar-mode -1)
-(tool-bar-mode -1)
-(tooltip-mode -1)
-(menu-bar-mode -1)
-
-;; columns and truncation
-(column-number-mode +1)
-(setq-default fill-column 80)
-(setq-default truncate-lines t)
-
-;; line numbers in prog mode
-(defun my/prog-mode-hook ()
- (display-line-numbers-mode t)
- (setq display-line-numbers-width-start t
- display-line-numbers-type t))
-(add-hook 'prog-mode-hook 'my/prog-mode-hook)
-
-;; vertico minibuffer completion
-
-(use-package vertico
- :demand t
- :ensure nil
- :custom
- (vertico-count 15)
- :bind (:map vertico-map
- ("C-n" . vertico-next)
- ("C-p" . vertico-previous))
- :config
- (vertico-mode t))
-
-(use-package vertico-directory
- :ensure nil
- :after vertico
- ;; More convenient directory navigation commands
- :bind (:map vertico-map
- ("RET" . vertico-directory-enter)
- ("DEL" . vertico-directory-delete-char)
- ("M-DEL" . vertico-directory-delete-word))
- :config
- (setq read-extended-command-predicate #'command-completion-default-include-p
- minibuffer-prompt-properties '(read-only t cursor-intangible t face minibuffer-prompt)))
-
-(use-package marginalia
- :ensure nil
- :demand t
- :config
- (marginalia-mode)
- :bind (:map minibuffer-local-map
- ("M-A" . marginalia-cycle)))
-
-(use-package orderless
- :ensure nil
- :custom
- (completion-styles '(orderless partial-completion basic))
- (completion-category-defaults nil)
- (completion-category-overrides '((file (styles orderless partial-completion)))))