summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Ulmer <thomasmulmer02@gmail.com>2025-12-13 21:00:22 -0800
committerThomas Ulmer <thomasmulmer02@gmail.com>2025-12-13 21:00:22 -0800
commitbddbdfc757c22c386e085ac130858f55aee5aafc (patch)
tree451b8fa42ee1bdb7beb25d738158877828f36fe0
parent0b99d5e09b28a5a8d06a04dd98ce9906cae89d7b (diff)
large emacs init cleanup
-rw-r--r--emacs/init.el562
1 files changed, 130 insertions, 432 deletions
diff --git a/emacs/init.el b/emacs/init.el
index 79f2b83..051fa01 100644
--- a/emacs/init.el
+++ b/emacs/init.el
@@ -116,6 +116,11 @@ mark. Does the same of ARG number sexps if given"
(current (window-parameter win 'no-other-window)))
(set-window-parameter win 'no-other-window (not current))))
+(advice-add 'mode-line-window-control :around
+ (lambda (f) (concat (funcall f)
+ (if (window-parameter nil 'no-other-window) "o" "")))
+ '(:name "other-window-indicator"))
+
(defun my/open-window-by-buffer (buffer)
"Move focus to an extant window by the buffer it contains."
(interactive "bBuffer: ")
@@ -185,14 +190,15 @@ given keymap or in the global keymap."
(use-package proced ; process editor
:commands (proced)
:config
- ;; always auto update proced
(setq-default proced-auto-update-flag t)
(setq-default proced-auto-update-interval 1))
+(use-package posframe)
+
(use-package orderless ; ordering (minibuffer) completions
:demand t
:custom
- ;; (orderless-skip-highlighting t)
+ (orderless-skip-highlighting t)
(completion-styles '(orderless basic))
(orderless-matching-styles
'(orderless-prefixes orderless-initialism orderless-literal orderless-regexp)))
@@ -205,6 +211,24 @@ given keymap or in the global keymap."
;; (vertico-flat-mode)
(vertico-mode 1))
+(use-package vertico-posframe
+ :after vertico
+ :demand t
+ :custom
+ (vertico-posframe-poshandler #'posframe-poshandler-frame-bottom-left-corner)
+ (vertico-posframe-size-function
+ (lambda (buffer)
+ (let ((w (frame-width)))
+ (list
+ :height (buffer-local-value 'vertico-posframe-height buffer)
+ :min-height (or (buffer-local-value 'vertico-posframe-min-height buffer)
+ (let ((height (+ vertico-count 1)))
+ (min height (or (buffer-local-value 'vertico-posframe-height buffer) height))))
+ :width w
+ :min-width w))))
+ :config
+ (vertico-posframe-mode 1))
+
(use-package marginalia ; more info in minibuffer menus
:demand t
:custom
@@ -249,11 +273,10 @@ given keymap or in the global keymap."
(use-package corfu-terminal ; make corfu work on terminals
:demand t
:custom
- (corfu-terminal-disable-on-gui nil)
+ (corfu-terminal-disable-on-gui t)
:config
(corfu-terminal-mode 1))
-;; TODO debug / test
(use-package tempel
:demand t
:custom
@@ -277,16 +300,10 @@ given keymap or in the global keymap."
:config
(advice-add 'pcomplete-completions-at-point :around 'cape-wrap-silent)
(advice-add 'pcomplete-completions-at-point :around 'cape-wrap-purify)
- :custom
- (completion-at-point-functions (list (cape-capf-super 'cape-dabbrev 'cape-dict 'tempel-complete)))
- ;; :hook
- ;; (after-change-major-mode . (lambda ()
- ;; (setq-local completion-at-point-functions
- ;; (apply 'cape-wrap-super
- ;; (append
- ;; '(tempel-complete tags-completion-at-point-function cape-dabbrev cape-dict)
- ;; completion-at-point-functions)))))
- )
+ (defvar completion-at-point-functions-always-include
+ (list 'tags-completion-at-point-function 'cape-dabbrev 'cape-dict 'tempel-complete))
+ ;; local settings should include t to also include global settings
+ (setq completion-at-point-functions completion-at-point-functions-always-include))
(use-package tempel-collection
:after tempel
@@ -327,8 +344,6 @@ given keymap or in the global keymap."
(unless (eq ibuffer-sorting-mode 'alphabetic)
(ibuffer-do-sort-by-alphabetic)))))
-(use-package magit)
-
(use-package free-keys)
(use-package which-key ; show list of next keys after prefix & delay
@@ -344,6 +359,7 @@ given keymap or in the global keymap."
(use-package recentf
:config
(recentf-mode))
+
(use-package consult ; more encompassing buffer switch and searching
:demand t
:custom
@@ -354,13 +370,13 @@ given keymap or in the global keymap."
("M-S-w" . consult-buffer)
("C-S-y" . consult-yank-from-kill-ring)
("M-g M-g" . consult-goto-line)
- ("M-i" . consult-imenu-multi)
("C-S-s" . consult-line-multi)
("M-s g" . consult-grep)
("M-s G" . grep)
("M-s f" . consult-find)
;; move some standard binds
("M-s s" . consult-line))
+
(use-package embark-consult
:after embark consult)
@@ -401,10 +417,6 @@ given keymap or in the global keymap."
(require 'em-hist)
(require 'em-term)
(setup-esh-help-eldoc)
- ;; (keymap-set eshell-hist-mode-map "C-p" 'eshell-previous-input)
- ;; (keymap-set eshell-hist-mode-map "C-n" 'eshell-next-input)
- ;; (keymap-set eshell-hist-mode-map "C-c C-n" 'next-line)
- ;; (keymap-set eshell-hist-mode-map "C-c C-p" 'previous-line)
:bind (:map eshell-mode-map
("C-l" . eshell/clear))
:hook (eshell-mode . eldoc-mode))
@@ -453,6 +465,7 @@ given keymap or in the global keymap."
'bash-completion-capf-nonexclusive nil t))))
(use-package pinentry)
+
(use-package pass ; password integration
:demand t
:init
@@ -487,27 +500,14 @@ given keymap or in the global keymap."
:hook
(asm-mode . 'add-asm-label-tag-generation-hook))
-;; (use-package lsp-mode
-;; :commands (lsp)
-;; :init
-;; (use-package lsp-haskell)
-;; :custom
-;; (lsp-completion-provider :none)
-;; :config
-;; (defun corfu-lsp-setup ()
-;; (setq-local completion-styles '(orderless)
-;; completion-category-defaults nil))
-;; (add-hook 'lsp-completion-mode-hook #'corfu-lsp-setup))
-
(use-package pyvenv)
(use-package sideline ; put warnings on the side of the same line
:init
(use-package sideline-flycheck)
(use-package sideline-flymake)
- (use-package sideline-lsp)
:custom
- (sideline-backends-right '(sideline-flycheck sideline-flymake sideline-lsp)))
+ (sideline-backends-right '(sideline-flycheck sideline-flymake)))
(use-package flycheck
:config
@@ -527,6 +527,8 @@ given keymap or in the global keymap."
)
(use-package imenu ; jump to items in the current buffer
+ :bind
+ ("M-i" . imenu)
:custom
(imenu-auto-rescan t)
(imenu-flatten t))
@@ -539,14 +541,15 @@ given keymap or in the global keymap."
:custom
(ediff-window-setup-function 'ediff-setup-windows-plain))
-(define-prefix-command 'my/fold-map)
-(global-set-key (kbd "M-F") 'my/fold-map)
-(define-keymap :full nil
- :parent nil
- :suppress nil
- :keymap nil
- :name "my/fold-map"
- :prefix 'my/fold-map)
+(progn ; collected folding binds
+ (define-prefix-command 'my/fold-map)
+ (global-set-key (kbd "M-F") 'my/fold-map)
+ (define-keymap :full nil
+ :parent nil
+ :suppress nil
+ :keymap nil
+ :name "my/fold-map"
+ :prefix 'my/fold-map))
(use-package fold-this ; fold arbitrary region
:init
@@ -572,25 +575,31 @@ given keymap or in the global keymap."
("f" . my/fold-this-fold-forward)
("b" . my/fold-this-fold-backward)))
-(progn ; hs
+(progn ; hideshow folding
(keymap-set my/fold-map (kbd "t") 'hs-toggle-hiding)
(keymap-set my/fold-map (kbd "l") 'hs-hide-level))
(add-hook 'prog-mode-hook 'my/prog-buffer-setup)
+(electric-pair-mode 1)
+
(use-package eglot
- :demand t
+ :demand nil
)
(use-package eglot-tempel
- :demand t
+ :after eglot tempel
:config
(eglot-tempel-mode 1))
+
(use-package haskell-mode
:custom
(haskell-tags-on-save t)
(haskell-process-type 'cabal-repl)
(haskell-process-auto-import-loaded-modules t)
:hook (haskell-mode . interactive-haskell-mode))
+
+(use-package rust-mode)
+
(use-package opam-switch-mode
:config
(when (and (file-exists-p "~/.opam") (executable-find "opam"))
@@ -604,9 +613,8 @@ given keymap or in the global keymap."
:after tuareg
:hook (tuareg-mode . merlin-mode)
:custom (merlin-command 'opam))
+
(use-package racket-mode)
-(use-package rustic
- :custom (rustic-lsp-setup-p nil))
(use-package compile
:custom
@@ -618,263 +626,6 @@ given keymap or in the global keymap."
;; Allow compilation buffer to be dedicated across frames
(push '("\\*compilation\\*" . (nil (reusable-frames . t))) display-buffer-alist))
-(progn ;; viper
- (setq-default viper-want-ctl-h-help t)
- (setq-default viper-inhibit-startup-message 't)
- (setq-default viper-expert-level 5)
- (setq-default viper-is-in-minibuffer nil)
- (setq-default viper-vi-style-in-minibuffer nil)
- (setq-default viper-enable-minibuffer-faces nil)
- (setq-default viper-syntax-preference 'emacs)
- (setq-default viper-ex-style-motion nil)
- (setq-default viper-auto-indent t)
- (setq-default viper-buffer-search-char ?g)
- ;; (setq viper-mode t)
- (setq viper-mode nil)
- (require 'viper)
- (define-key viper-vi-global-user-map (kbd "C-y") 'yank)
- (define-key viper-vi-global-user-map (kbd "C-e") 'end-of-line)
- (define-key viper-vi-global-user-map (kbd "C-f") 'forward-char)
- (define-key viper-vi-global-user-map (kbd "C-b") 'backward-char)
- (define-key viper-vi-global-user-map (kbd "C-u") 'universal-argument)
- (define-key viper-insert-global-user-map (kbd "C-u") 'universal-argument)
- (define-key viper-insert-global-user-map (kbd "C-d") 'delete-char)
- (define-key viper-insert-global-user-map (kbd "C-m")
- #'(lambda ()
- (interactive)
- (if completion-in-region-mode
- (corfu-insert)
- (viper-autoindent)))))
-
-;; (use-package evil
-;; :demand nil
-;; :custom
-;; (evil-want-keybinding nil)
-;; (evil-want-integration t)
-;; :config
-;; (use-package evil-collection
-;; :config (evil-collection-init))
-;; (use-package evil-easymotion
-;; :config (evilem-default-keybindings "SPC"))
-;; (use-package evil-surround
-;; :config (global-evil-surround-mode 1))
-;; (use-package evil-snipe
-;; :custom (evil-snipe-scope 'buffer)
-;; :config
-;; (evil-snipe-mode 1)
-;; (evil-snipe-override-mode 1)
-;; :bind
-;; (:map evil-snipe-local-mode-map
-;; ("z" . 'evil-snipe-s)
-;; ("Z" . 'evil-snipe-S)))
-;; (use-package treemacs-evil)
-;; :hook
-;; (eshell-mode-hook . (lambda () (evil-local-mode -1)))
-;; (vterm-mode-hook . (lambda () (evil-local-mode -1)))
-;; :bind
-;; (:map evil-insert-state-map
-;; ("C-d" . 'delete-char)
-;; ("C-e" . 'move-end-of-line)
-;; ("C-a" . 'move-beginning-of-line)
-;; ("C-t" . 'transpose-chars))
-;; (:map evil-normal-state-map
-;; ("M-." . 'xref-find-definitions)
-;; ("M-Z" . 'suspend-frame)
-;; ("C-t" . 'transpose-chars))
-;; (:map evil-motion-state-map
-;; ("TAB" . 'indent-for-tab-command)))
-
-(use-package exwm ; emacs x window manager
- :demand nil
- :config
- (require 'exwm-randr)
- (require 'exwm-xim)
- (require 'exwm-systemtray)
- (require 'exwm-manage)
- (add-to-list 'exwm-manage-configurations '((equal exwm-class-name "Slack") managed t))
- (use-package exwm-modeline)
- ;;(exwm-xim-mode 1)
-
- (defun my/exwm-auto-workspace-montior ()
- "Autopopulate exwm-randr-workspace-monitor-plist and attempt to
-have a workspace on each monitor. Try to keep up with xrandr
-changes."
- (let ((buf (generate-new-buffer "*xrandr-output*"))
- (out-plist nil))
- (call-process-shell-command "xrandr --listmonitors -q" nil buf nil)
- (with-current-buffer buf
- (keep-lines "[^[:word:]]connected" (point-min) (point-max) nil)
- ;; (goto-char (point-min))
- ;; (while (re-search-forward "^\\([a-zA-Z\\-0-9]+\\) .*$" nil t nil)
- ;; (replace-match "\\1"))
- ;; (goto-char (point-min))
- (let ((num-monitors (count-lines (point-min) (point-max)))
- (i 0))
- (setq exwm-workspace-number num-monitors)
- (goto-char (point-min))
- (while (< i num-monitors)
- (move-beginning-of-line 1)
- (push-mark)
- (search-forward-regexp " ")
- (backward-char)
- (push (buffer-substring (mark) (point)) out-plist)
- (if (> i 0)
- (let ((prev (caddr out-plist))
- (cur (car out-plist)))
- (call-process-shell-command
- (format "xrandr --output %s --auto --right-of %s" cur prev)
- nil nil nil))
- (call-process-shell-command
- (format "xrandr --output %s --auto" (car out-plist)) nil nil nil))
- (push i out-plist)
- (setq i (+ i 1))
- (pop-mark)
- (forward-line))))
- (kill-buffer buf)
- (setq exwm-randr-workspace-monitor-plist out-plist))
- (while (> exwm-workspace-number (length exwm-workspace--list))
- (exwm-workspace-add)))
- (add-hook 'exwm-randr-screen-change-hook #'my/exwm-auto-workspace-montior)
-
- (defun my/exwm-set-buffer-name ()
- (if exwm-title
- (let* ((shortened-title (replace-regexp-in-string
- " - Mozilla Firefox"
- ""
- exwm-title))
- (class-and-title (concat
- exwm-class-name
- "<"
- shortened-title
- ">")))
- (setq-local exwm-title class-and-title)
- (exwm-workspace-rename-buffer exwm-title))))
-
- (defun my/exwm-other-workspace (arg)
- "Focus other monitor's workspace."
- (interactive "p")
- ;; based on other-frame
- (let ((filter-f (function (lambda (f)
- (and (exwm-workspace--active-p f)
- (not (eq (selected-frame) f))))))
- (sframe (selected-frame))
- (frame (selected-frame)))
- (while (> arg 0)
- (setq frame (next-frame frame))
- (while (and (not (eq frame sframe))
- (not (eq (frame-visible-p frame) t))
- (funcall filter-f frame))
- (setq frame (next-frame frame)))
- (setq arg (1- arg)))
- (while (< arg 0)
- (setq frame (previous-frame frame))
- (while (and (not (eq frame sframe))
- (not (eq (frame-visible-p frame) t))
- (filter-f frame))
- (setq frame (previous-frame frame)))
- (setq arg (1+ arg)))
- (exwm-workspace-switch frame)))
-
- (defun my/dmenu (command)
- (interactive (list (read-shell-command "$ ")))
- (start-process-shell-command command nil command))
-
- (defun my/browser ()
- (interactive)
- (start-process-shell-command "glide" nil "glide"))
-
- (defun my/eshell (&optional arg)
- (interactive "P")
- (if (eq major-mode 'eshell-mode)
- ;; switch back
- (switch-to-prev-buffer)
- (eshell arg)))
-
- (defun my/brightnessdown () (interactive) (start-process "" nil "brightnessdown"))
- (defun my/brightnessup () (interactive) (start-process "" nil "brightnessup"))
- (defun my/mute () (interactive) (start-process "" nil "pactl" "set-sink-mute" "@DEFAULT_SINK@" "toggle"))
- (defun my/voldown () (interactive) (start-process "" nil "pactl" "set-sink-volume" "@DEFAULT_SINK@" "-5%"))
- (defun my/volup () (interactive) (start-process "" nil "pactl" "set-sink-volume" "@DEFAULT_SINK@" "+5%"))
-
- (push ?\C-\\ exwm-input-prefix-keys) ;;C-\ to switch input method
- (push ?\C-u exwm-input-prefix-keys) ;; send C-u to all windows too
- (push ?\M-L exwm-input-prefix-keys)
- (progn
- ;; (exwm-enable)
- ;; (exwm-randr-mode)
- ;; (ednc-mode 1)
- ;; (exwm-systemtray-mode)
- ;; (add-hook 'after-init-hook #'exwm-randr-refresh)
- )
- :hook
- (exwm-update-class . my/exwm-set-buffer-name)
- (exwm-update-title . my/exwm-set-buffer-name)
- ;; (after-init . exwm-randr-refresh)
- ;; (after-init . display-time-mode)
- ;; (after-init . ednc-mode)
- ;; (after-init . display-battery-mode)
- :custom
- (exwm-replace nil)
- (exwm-title-length 50)
- (exwm-workspace-show-all-buffers t)
- (exwm-layout-show-all-buffers t)
-
- (exwm-modeline-randr t)
- (exwm-modeline-short nil)
- (exwm-modeline-urgent t)
-
- (exwm-manage-force-tiling t)
-
- (exwm-input-global-keys
- `(
- ([?\M-r] . exwm-reset)
- ;; Bind "s-w" to window switcher
- ([?\M-W] . consult-buffer)
- ([?\M-o] . other-window)
- ([?\M-O] . my/exwm-other-workspace)
-
- ([?\M-D] . my/dmenu)
- ([?\M-E] . my/browser)
- (,(kbd "M-C-m") . my/eshell)
- ([?\M-K] . kill-current-buffer)
-
- ,@(mapcar (lambda (n)
- (let* ((from (concat "C-x " (format "%d" n)))
- (to (concat "M-" (format "%d" n)))
- (bind (keymap-lookup global-map from)))
- (cons (kbd to) bind)))
- (number-sequence 0 9))
-
- ([XF86MonBrightnessDown] . my/brightnessdown)
- ([XF86MonBrightnessUp] . my/brightnessup)
- ([XF86AudioMute] . my/mute)
- ([XF86AudioLowerVolume] . my/voldown)
- ([XF86AudioRaiseVolume] . my/volup)))
- (exwm-input-simulation-keys
- '(;; movement
- ([?\C-b] . [left])
- ([?\M-b] . [C-left])
- ([?\C-f] . [right])
- ([?\M-f] . [C-right])
- ([?\C-p] . [up])
- ([?\C-n] . [down])
- ([?\C-a] . [home])
- ([?\C-e] . [end])
- ([?\M-v] . [prior])
- ([?\C-v] . [next])
- ;; edit, copy, paste
- ([?\C-d] . [delete])
- ([?\C-k] . [S-end delete])
- ([M-backspace] . [C-backspace])
- ([?\M-w] . [?\C-c])
- ([?\C-y] . [?\C-v])
- ([?\C-s] . [?\C-f])))
- (exwm-input-move-event 'M-down-mouse-1)
- (exwm-input-resize-event 'M-down-mouse-3)
- :bind (:map exwm-mode-map
- ("C-q" . 'exwm-input-send-next-key)
- ("M-!" . 'shell-command)))
-
(use-package sdcv ; dictionary, requires sdcv install
:demand t
:config
@@ -967,7 +718,8 @@ changes."
(delq 'process-kill-buffer-query-function kill-buffer-query-functions))
(setq confirm-kill-processes nil)
;; start additional async shell commands in new buffers without asking
- (setq async-shell-command-buffer 'new-buffer))
+ (setq async-shell-command-buffer 'new-buffer)
+ (setq vc-follow-symlinks t))
(use-package ispell ; spellchecker
:demand t
@@ -981,139 +733,77 @@ changes."
(advice-add 'ispell-mode :before 'debug)
(setq-default text-mode-hook (cons 'ispell-minor-mode (remove 'ispell-mode text-mode-hook))))
-(electric-pair-mode 1)
-
-;; (setq x-super-keysym 'meta)
-
-(define-minor-mode my/keys-mode
- "Minor mode collecting global keybinds"
- :global t
- :keymap (make-sparse-keymap))
-
-;; The keymaps in `emulation-mode-map-alists' take precedence over
-;; `minor-mode-map-alist'
-(add-to-list 'emulation-mode-map-alists
- '((my/keys-mode . my/keys-keymap)))
-
-(keymap-set my/keys-mode-map "M-S" 'surround-prefix)
-(keymap-set my/keys-mode-map "C-x C-C" 'save-buffers-kill-terminal)
-(keymap-set my/keys-mode-map "C-x C-c" 'my/close-or-kill)
-(keymap-set my/keys-mode-map "M-w" 'copy-region-as-kill) ; make copying not flash cursor
-(keymap-set my/keys-mode-map "C-x -" 'my/swap-other-window-buffer)
-(keymap-set my/keys-mode-map "M-(" 'my/wrap-region-paren)
-(keymap-set my/keys-mode-map "M-z" 'my/zap-whitespace)
-(keymap-set my/keys-mode-map "C-M-z" 'my/wrap-sexp)
-(keymap-set my/keys-mode-map "M-o" 'other-window)
-(keymap-set my/keys-mode-map "M-c" 'calc)
-(keymap-set my/keys-mode-map "M-U" 'scroll-lock-mode)
-(keymap-set my/keys-mode-map "M-Q" 'auto-fill-mode)
-(keymap-set my/keys-mode-map "M-A" 'beginning-of-line-text)
-(keymap-set my/keys-mode-map "C-c R" 'raise-sexp)
-(keymap-set my/keys-mode-map "C-c r" 'delete-pair)
-(keymap-set my/keys-mode-map "M-\"" 'my/activate-mark)
-(keymap-set my/keys-mode-map "C-x w o" 'my/toggle-window-other-reachability)
-
-(my/keys-mode 1)
+(progn ; my global keybinds
+ (define-minor-mode my/keys-mode
+ "Minor mode collecting global keybinds"
+ :global t
+ :keymap (make-sparse-keymap))
+
+ ;; The keymaps in `emulation-mode-map-alists' take precedence over
+ ;; `minor-mode-map-alist'
+ (add-to-list 'emulation-mode-map-alists
+ '((my/keys-mode . my/keys-keymap)))
+
+ (keymap-set my/keys-mode-map "M-S" 'surround-prefix)
+ (keymap-set my/keys-mode-map "C-x C-C" 'save-buffers-kill-terminal)
+ (keymap-set my/keys-mode-map "C-x C-c" 'my/close-or-kill)
+ (keymap-set my/keys-mode-map "M-w" 'copy-region-as-kill) ; make copying not flash cursor
+ (keymap-set my/keys-mode-map "C-x -" 'my/swap-other-window-buffer)
+ (keymap-set my/keys-mode-map "M-(" 'my/wrap-region-paren)
+ (keymap-set my/keys-mode-map "M-z" 'my/zap-whitespace)
+ (keymap-set my/keys-mode-map "C-M-z" 'my/wrap-sexp)
+ (keymap-set my/keys-mode-map "M-o" 'other-window)
+ (keymap-set my/keys-mode-map "M-c" 'calc)
+ (keymap-set my/keys-mode-map "M-U" 'scroll-lock-mode)
+ (keymap-set my/keys-mode-map "M-Q" 'auto-fill-mode)
+ (keymap-set my/keys-mode-map "M-A" 'beginning-of-line-text)
+ (keymap-set my/keys-mode-map "C-c R" 'raise-sexp)
+ (keymap-set my/keys-mode-map "C-c r" 'delete-pair)
+ (keymap-set my/keys-mode-map "M-\"" 'my/activate-mark)
+ (keymap-set my/keys-mode-map "C-x w o" 'my/toggle-window-other-reachability)
+
+ (my/keys-mode 1))
-(advice-add 'mode-line-window-control :around
- (lambda (f) (concat (funcall f)
- (if (window-parameter nil 'no-other-window) "o" "")))
- '(:name "other-window-indicator"))
-;; (add-hook 'window-configuration-change-hook
-;; #'(lambda ()
-;; (when (active-minibuffer-window)
-;; (select-window (active-minibuffer-window)))))
-
-
-;; this stuff is conditionally activated by exwm
-
-;; (use-package single-header
-;; :ensure nil
-;; :demand t
-;; :init
-;; (use-package ednc ; notifications, required for single-header
-;; )
-;; :config
-;; (single-header-mode 1)
-;; :bind
-;; ("M-L d" . 'single-header-dismiss)
-;; ("M-L t" . 'single-header-mode)
-;; ;; (keymap-global-set "M-L d" 'single-header-dismiss)
-;; ;; (keymap-global-set "M-L t" 'single-header-mode)
-;; )
(use-package time
- :demand t
- :config
- ;; (display-time-mode 1)
:custom
(display-time-day-and-date t)
(display-time-24hr-format t))
-(use-package battery
- :demand t
- :config
- ;; (display-battery-mode 1)
- )
-(use-package ednc
- :demand t
- :config
- ;; (when (eq window-system 'x)
- ;; (ednc-mode 1))
- )
-(use-package mu4e
- :ensure nil
- :demand nil
- :init
- ;; assumed Maildir layout
- ;; ~/Maildir/Account0/{Inbox,Sent,Trash}
- ;; ~/Maildir/Account1/{Inbox,Sent,Trash}
- ;; where Account0 is context name
- (defun my/make-mu4e-context (context-name full-name mail-address signature)
- "Return a mu4e context named CONTEXT-NAME with :match-func matching
- folder name CONTEXT-NAME in Maildir. The context's `user-mail-address',
- `user-full-name' and `mu4e-compose-signature' is set to MAIL-ADDRESS
- FULL-NAME and SIGNATURE respectively.
- Special folders are set to context specific folders."
- (let ((dir-name (concat "/" context-name)))
- (make-mu4e-context
- :name context-name
- ;; we match based on the maildir of the message
- ;; this matches maildir /Arkham and its sub-directories
- :match-func
- `(lambda (msg)
- (when msg
- (string-match-p
- ,(concat "^" dir-name)
- (mu4e-message-field msg :maildir))))
- :vars
- `((user-mail-address . ,mail-address)
- (user-full-name . ,full-name)
- (mu4e-sent-folder . ,(concat dir-name "/sent"))
- (mu4e-drafts-folder . ,(concat dir-name "/drafts"))
- (mu4e-trash-folder . ,(concat dir-name "/trash"))
- (mu4e-refile-folder . ,(concat dir-name "/archive"))
- (mu4e-compose-signature . ,signature)))))
- :custom
- (mu4e-change-filenames-when-moving t)
- (mu4e-get-mail-command "mbsync --all")
- :config
- ;;Fixing duplicate UID errors when using mbsync and mu4e
- (setq mu4e-contexts
- `(,(my/make-mu4e-context
- "thomasmulmer02" "Thomas Ulmer"
- "thomasmulmer02@gmail.com" "Thanks,
-Thomas Ulmer")))
-
- (require 'smtpmail)
- (setq message-send-mail-function 'smtpmail-send-it)
- (setq smtpmail-default-smtp-server "smtp.gmail.com"
- smtpmail-smtp-server "smtp.gmail.com"
- smtpmail-smtp-service 587
- starttls-use-gnutls t
- smtpmail-starttls-credentials '(("smtp.gmail.com" 587 nil nil))
- smtp-auth-credentials (expand-file-name "~/.authinfo.gpg")))
+(use-package battery)
+
+(use-package ednc)
+
+(progn ; viper
+ (setq-default viper-want-ctl-h-help t)
+ (setq-default viper-inhibit-startup-message 't)
+ (setq-default viper-expert-level 5)
+ (setq-default viper-is-in-minibuffer nil)
+ (setq-default viper-vi-style-in-minibuffer nil)
+ (setq-default viper-enable-minibuffer-faces nil)
+ (setq-default viper-syntax-preference 'emacs)
+ (setq-default viper-ex-style-motion nil)
+ (setq-default viper-auto-indent t)
+ (setq-default viper-buffer-search-char ?g)
+ ;; (setq viper-mode t)
+ (setq viper-mode nil)
+ (require 'viper)
+ (define-key viper-vi-global-user-map (kbd "C-y") 'yank)
+ (define-key viper-vi-global-user-map (kbd "C-e") 'end-of-line)
+ (define-key viper-vi-global-user-map (kbd "C-f") 'forward-char)
+ (define-key viper-vi-global-user-map (kbd "C-b") 'backward-char)
+ (define-key viper-vi-global-user-map (kbd "C-u") 'universal-argument)
+ (define-key viper-insert-global-user-map (kbd "C-u") 'universal-argument)
+ (define-key viper-insert-global-user-map (kbd "C-d") 'delete-char)
+ (define-key viper-insert-global-user-map (kbd "C-m")
+ #'(lambda ()
+ (interactive)
+ (if completion-in-region-mode
+ (corfu-insert)
+ (viper-autoindent)))))
+;; if you want exwm, include from ~/.emacs.d/site-lisp/my-exwm.el
+;; if you want mail, include from ~/.emacs.d/site-lisp/my-mail.el
;; ----------------------------------------------------------------------
;; theme stuff
@@ -1280,7 +970,15 @@ Thomas Ulmer")))
'(gdb-non-stop-setting nil)
'(helm-minibuffer-history-key "M-p")
'(menu-bar-mode nil)
- '(package-selected-packages nil)
+ '(package-selected-packages
+ '(avy balanced-windows bash-completion benchmark-init cape
+ corfu-terminal eat ednc eglot eglot-tempel embark-consult
+ esh-help exwm-modeline fold-this free-keys haskell-mode
+ hl-todo ibuffer-vc magit marginalia merlin minions ocp-indent
+ opam-switch-mode orderless pass pinentry posframe pyvenv
+ racket-mode rustic sdcv shelldon sideline-flycheck
+ sideline-flymake tempel-collection tuareg vertico
+ vertico-posframe visible-mark vterm winum))
'(pyim-assistant-scheme 'cangjie)
'(safe-local-variable-values '((LEXICAL-binding . t)))
'(scroll-bar-mode nil)