diff options
| author | Thomas Ulmer <thomasmulmer02@gmail.com> | 2025-12-13 21:00:22 -0800 |
|---|---|---|
| committer | Thomas Ulmer <thomasmulmer02@gmail.com> | 2025-12-13 21:00:22 -0800 |
| commit | bddbdfc757c22c386e085ac130858f55aee5aafc (patch) | |
| tree | 451b8fa42ee1bdb7beb25d738158877828f36fe0 /emacs/init.el | |
| parent | 0b99d5e09b28a5a8d06a04dd98ce9906cae89d7b (diff) | |
large emacs init cleanup
Diffstat (limited to 'emacs/init.el')
| -rw-r--r-- | emacs/init.el | 562 |
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) |
