From fd3d5fc55f5e537bd4da19ada52486eb70e6bf11 Mon Sep 17 00:00:00 2001 From: Case Duckworth Date: Sat, 4 Sep 2021 23:57:04 -0500 Subject: Mostly keywording stuff I messed up my commits here... bah --- init.el | 477 ++++++++++++++++++++++++++++++---------------------------------- 1 file changed, 222 insertions(+), 255 deletions(-) (limited to 'init.el') diff --git a/init.el b/init.el index 80fb0cc..dceb56f 100644 --- a/init.el +++ b/init.el @@ -125,13 +125,13 @@ AKA, DO NOT USE THIS FUNCTION!!!" (setup browse-url (:require acdw-browse-url) - (setq-default browse-url-secondary-browser-function - (if (executable-find "firefox") ; prefer Firefox - #'browse-url-firefox - #'browse-url-default-browser) - browse-url-new-window-flag nil ; for eww - browse-url-firefox-arguments '("--new-tab") ; for firefox - browse-url-firefox-new-window-is-tab t) + (:option browse-url-secondary-browser-function + (if (executable-find "firefox") ; prefer Firefox + #'browse-url-firefox + #'browse-url-default-browser) + browse-url-new-window-flag nil ; for eww + browse-url-firefox-arguments '("--new-tab") ; for firefox + browse-url-firefox-new-window-is-tab t) (acdw/browse-url-set-handlers (list @@ -222,9 +222,8 @@ AKA, DO NOT USE THIS FUNCTION!!!" circe-reduce-lurker-spam t circe-server-auto-join-default-type :after-auth) - (custom-set-faces '(circe-nick-highlight-face - ((t (:inherit (modus-themes-hl-line)))) - :now)) + (:face circe-nick-highlight-face + ((t (:inherit (modus-themes-hl-line))))) (:bind "C-c C-p" #'circe-command-PART) @@ -248,18 +247,19 @@ AKA, DO NOT USE THIS FUNCTION!!!" (:with-mode circe-chat-mode (:hook #'acdw/stop-paren-annoyances - (defun circe-chat@setup () + #'enable-circe-color-nicks + #'enable-circe-display-images + #'enable-circe-new-day-notifier + (defun circe-chat@set-prompt () (lui-set-prompt - (concat (propertize (acdw-irc/margin-format (buffer-name) - "" - ">") - 'face 'circe-prompt-face - 'read-only t 'intangible t - 'cursor-intangible t) - " ")) - (enable-circe-color-nicks) - (enable-circe-display-images) - (enable-circe-new-day-notifier)))) + (concat + (propertize + (acdw-irc/margin-format (buffer-name) "" ">") + 'face 'circe-prompt-face + 'read-only t + 'intangible t + 'cursor-intangible t) + " "))))) (autoload 'circe-nick-color-reset "circe-color-nicks") (add-hook 'modus-themes-after-load-theme-hook @@ -272,16 +272,15 @@ AKA, DO NOT USE THIS FUNCTION!!!" lui-time-stamp-format "%H:%M" lui-track-behavior 'before-switch-to-buffer lui-track-indicator 'fringe) + + (:local-set fringes-outside-margins t + right-margin-width 5 + scroll-margin 0 + word-wrap t + wrap-prefix (repeat-string acdw-irc/left-margin " ") + line-number-mode nil) - (:hook (defun lui-mode@setup () - (setq-local fringes-outside-margins t - right-margin-width 5 - scroll-margin 0 - word-wrap t - wrap-prefix (repeat-string - acdw-irc/left-margin " ") - line-number-mode nil) - (enable-lui-track))))) + (:hook #'enable-lui-track))) (setup completion (:option completion-ignore-case t @@ -296,10 +295,10 @@ AKA, DO NOT USE THIS FUNCTION!!!" (setup (:straight (consult :host github :repo "minad/consult")) - (require 'acdw-consult) - - (setq consult--regexp-compiler #'consult--orderless-regexp-compiler) - + + (:require acdw-consult) + (:autoload consult-register-preview) + ;; Bindings (:global ;; C-c bindings (`mode-specific-map') @@ -344,32 +343,6 @@ AKA, DO NOT USE THIS FUNCTION!!!" "M-s e" #'consult-isearch "M-s l" #'consult-line)) - ;; see https://github.com/oantolin/completing-history - (defmacro consult-history-to-modes (map-hook-alist) - (let (defuns) - (dolist (map-hook map-hook-alist) - (let ((map-name (symbol-name (car map-hook))) - (key-defs `(progn (define-key - ,(car map-hook) - (kbd "M-r") - (function consult-history)) - (define-key ,(car map-hook) - (kbd "M-s") nil)))) - (push (if (cdr map-hook) - `(add-hook ',(cdr map-hook) - (defun - ,(intern (concat map-name - "@consult-history-bind")) - nil - ,(concat - "Bind `consult-history' to M-r in " - map-name ".\n" - "Defined by `consult-history-to-modes'.") - ,key-defs)) - key-defs) - defuns))) - `(progn ,@ (nreverse defuns)))) - (consult-history-to-modes ((minibuffer-local-map . nil) (shell-mode-map . shell-mode-hook) (term-mode-map . term-mode-hook) @@ -377,47 +350,38 @@ AKA, DO NOT USE THIS FUNCTION!!!" (comint-mode-map . comint-mode-hook) (sly-mrepl-mode-map . sly-mrepl-hook))) - - - ;; Registers - (:autoload consult-register-preview) (:option register-preview-delay 0 - register-preview-function #'consult-register-format) - (:advise register-preview :override #'consult-register-window) - - ;; Xref - (:option xref-show-xrefs-function #'consult-xref - xref-show-definitions-function #'consult-xref) - - ;; Projects - (:option consult-project-root-function #'vc-root-dir) - - ;; Competion-at-point (complete-region) - (:option completion-in-region-function #'acdw-consult/complete-in-region + register-preview-function #'consult-register-format + xref-show-xrefs-function #'consult-xref + xref-show-definitions-function #'consult-xref + consult-project-root-function #'vc-root-dir + completion-in-region-function #'acdw-consult/complete-in-region completion-cycle-threshold 3 tab-always-indent 'complete) + (:advise register-preview :override #'consult-register-window) + ;; Completing-read-multple (if (fboundp #'consult-completing-read-multiple) - (:advise completing-read-multple - :override #'consult-completing-read-multiple) - ;; else - (defun crm-indicator (args) - (cons (concat "[CRM] " (car args)) (cdr args))) - (:advise completing-read-multiple - :filter-args #'crm-indicator)) - + (:advise completing-read-multple :override + #'consult-completing-read-multiple) + (:advise completing-read-multiple :filter-args + (defun crm-indicator (args) + (cons (concat "[CRM] " (car args)) (cdr args))))) + + (with-eval-after-load 'orderless + (:option consult--regexp-compiler + #'consult--orderless-regexp-compiler)) + (with-eval-after-loads (vertico consult) - (when (boundp 'consult-crm-map) - (define-key consult-crm-map "\r" #'+vertico-crm-exit) - (define-key consult-crm-map "\t" #'vertico-exit) - (defun +vertico-crm-exit () - (interactive) - (run-at-time 0 nil #'vertico-exit) - (funcall #'vertico-exit))))) + (:with-map consult-crm-map + (:bind "RET" (defun +vertico-crm-exit () + (interactive) + (run-at-time 0 nil #'vertico-exit) + (funcall #'vertico-exit)) + "TAB" #'vertico-exit)))) (setup (:straight crux) - (:global "C-x o" #'acdw/other-window-or-switch-buffer "C-o" #'crux-smart-open-line "M-o" #'crux-smart-open-line-above @@ -425,9 +389,8 @@ AKA, DO NOT USE THIS FUNCTION!!!" "C-x 4 t" #'crux-transpose-windows) (when (fboundp 'repeat-mode) - (unless (boundp 'other-window-repeat-map) - (defvar other-window-repeat-map (make-sparse-keymap) - "A map for repeating `other-window' keys.")) + (defvar other-window-repeat-map (make-sparse-keymap) + "A map for repeating `other-window' keys.") (define-key other-window-repeat-map "o" #'acdw/other-window-or-switch-buffer) @@ -475,37 +438,34 @@ AKA, DO NOT USE THIS FUNCTION!!!" nil)))) (:with-mode Custom-mode - (:hook (defun custom-mode@imenu () ; thanks u/oantolin! - "Build `imenu' for `Custom-mode'." - (setq - imenu-generic-expression - '(("Faces" (rx (seq bol - (or "Show" "Hide") " " - (group (zero-or-more nonl)) - " face: [sample]")) - 1) - ("Variables" (rx (seq bol - (or "Show Value" "Hide") " " - (group (zero-or-more - (not (any "\n:")))))) - 1))))))) + (:local-set imenu-generic-expression ; thanks u/oantolin! + '(("Faces" (rx (seq bol + (or "Show" "Hide") " " + (group (zero-or-more nonl)) + " face: [sample]")) + 1) + ("Variables" (rx (seq bol + (or "Show Value" "Hide") " " + (group (zero-or-more + (not (any "\n:")))))) + 1))))) (setup debugger (:hook visual-line-mode)) (setup dired (:also-load dired-x) - (setq-default dired-recursive-copies 'always - dired-recursive-deletes 'always - delete-by-moving-to-trash t - dired-listing-switches "-Al" - ls-lisp-dirs-first t - dired-ls-F-marks-symlinks t - dired-no-confirm '(byte-compile - chgrp chmod chown copy - hardlink load move - shell touch symlink) - dired-dwim-target t) + (:option dired-recursive-copies 'always + dired-recursive-deletes 'always + delete-by-moving-to-trash t + dired-listing-switches "-Al" + ls-lisp-dirs-first t + dired-ls-F-marks-symlinks t + dired-no-confirm '(byte-compile + chgrp chmod chown copy + hardlink load move + shell touch symlink) + dired-dwim-target t) (:hook dired-hide-details-mode hl-line-mode) @@ -614,6 +574,12 @@ AKA, DO NOT USE THIS FUNCTION!!!" :host "mf.acdw.net")))) (elfeed-protocol-enable) + (:advise elfeed :after + (defun elfeed@protocol-update (&rest _) + (elfeed-search-fetch nil))) + + (:face message-header-subject + ((t (:height 1.5)))) (:with-mode elfeed-show-mode (:hook (defun elfeed-show@setup () @@ -641,16 +607,17 @@ AKA, DO NOT USE THIS FUNCTION!!!" lisp-indent-function #'lisp-indent-function) (:with-mode emacs-lisp-mode - (:hook #'checkdoc-minor-mode - #'turn-on-eldoc-mode - - (defun emacs-lisp@enforce-lexical-binding () - (setq-local lexical-binding t)) + (:local-set lexical-binding t + (append imenu-generic-expression) + `("Setup" + ,(rx (seq + (group bol (* space) "(setup" (+ space)) + (? (group "(:" (+ graph) (* space) (? "("))) + (group (+ (any word ?-))))) + 3)) - (defun emacs-lisp@imenu-add-setup () - (:option (append imenu-generic-expression) - '("Setup" - "\\(^\\s-*(setup +(?\\)\\(\\_<.+\\_>\\)" 2)))) + (:hook #'checkdoc-minor-mode + #'turn-on-eldoc-mode) ;; Emulate slime's eval binds (:bind "C-c C-c" #'eval-defun @@ -661,7 +628,7 @@ AKA, DO NOT USE THIS FUNCTION!!!" (:advise eval-region :around (defun eval-region@pulse (fn beg end &rest args) (pulse-momentary-highlight-region beg end) - (apply fn start end args)))) + (apply fn beg end args)))) (setup (:straight elisp-slime-nav) (:hook-into emacs-lisp-mode @@ -679,7 +646,7 @@ AKA, DO NOT USE THIS FUNCTION!!!" "o" #'elpher-follow-current-link "G" #'elpher-go-current) - (:hook acdw/reading-mode) + (:hook #'acdw/reading-mode) (:autoload (elpher-bookmarks :interactive t) (elpher-go :interactive t)) @@ -692,22 +659,99 @@ AKA, DO NOT USE THIS FUNCTION!!!" ;; (t (apply fn url args)))) ) +(setup emacs + ;; "Et cetera" settings + ;; This should stay as /minimal/ as possible. Anything that can go somewhere + ;; else /should/ go there. + (:option + attempt-orderly-shutdown-on-fatal-signal nil + attempt-stack-overflow-recovery nil + echo-keystrokes 0.01 + find-function-C-source-directory (acdw/find-emacs-source) + kill-read-only-ok t + load-prefer-newer t + native-comp-async-report-warnings-errors nil + set-mark-command-repeat-pop t) + + (when (fboundp 'command-completion-default-include-p) + (setq read-extended-command-predicate + #'command-completion-default-include-p)) + + (defvar case-map (make-sparse-keymap) + "A keymap for setting case in various ways.") + (global-set-key (kbd "C-c c") case-map) + + (defvar lookup-map (make-sparse-keymap) + "A keymap for looking up things.") + (global-set-key (kbd "C-c l") lookup-map) + + (:global "M-=" #'count-words + "C-w" #'kill-region-or-backward-word + "C-c c c" #'capitalize-dwim + "C-c c t" #'titlecase-dwim + "C-c c u" #'upcase-dwim + "C-c c l" #'downcase-dwim + "C-c d" #'acdw/insert-iso-date + "M-`" nil) + + ;; toggle bindings + (defvar toggle-map (make-sparse-keymap) + "A keymap for toggling!") + (global-set-key (kbd "C-c t") toggle-map) + + (:with-map toggle-map + (:bind "c" #'column-number-mode + "l" #'display-line-numbers-mode + "d" #'toggle-debug-on-error)) + + (defalias 'forward-word-with-case 'forward-word + "Alias for `forward-word' for use in `case-repeat-map'.") + (defalias 'backward-word-with-case 'backward-word + "Alias for `backward-word for use in `case-repeat-map'.") + + (defvar case-repeat-map + (let ((map (make-sparse-keymap))) + (define-key map "c" #'capitalize-word) + (define-key map "u" #'upcase-word) + (define-key map "l" #'downcase-word) + ;; movement + (define-key map "f" #'forward-word-with-case) + (define-key map "b" #'backward-word-with-case) + map) + "A map to repeat word-casing commands. For use with `repeat-mode'.") + + (dolist (command '(capitalize-word + capitalize-dwim + upcase-word + upcase-dwim + downcase-word + downcase-dwim + forward-word-with-case + backward-word-with-case)) + (put command 'repeat-map 'case-repeat-map)) + + (add-hook 'after-make-frame-functions + (defun after-make-frame@maximize (frame) + (unless (bound-and-true-p edit-server-frame-p) + (toggle-frame-maximized frame))))) + (setup (:straight embark) (:global "C-." #'embark-act) (:option prefix-help-command #'embark-prefix-help-command (append display-buffer-alist) - '("\\`\\*Embark Collect \\(Live\\|Completions\\)\\*" + `(,(rx (seq bos "*Embark Collect " + (group (| "Live" "Completions")) + "*")) nil (window-parameters (mode-line-format . none))) embark-prompter #'embark-keymap-prompter embark-verbose-indicator-display-action - '(display-buffer-at-bottom (window-height . fit-window-to-buffer))) - - (setq embark-action-indicator - (lambda (map _target) - (which-key--show-keymap "Embark" map nil nil 'no-paging) - #'which-key--hide-popup-ignore-command) - embark-become-indicator embark-action-indicator) + '(display-buffer-at-bottom (window-height . fit-window-to-buffer)) + embark-action-indicator + (lambda (map _target) + (which-key--show-keymap "Embark" map nil nil 'no-paging) + #'which-key--hide--ignore-command) + embark-become-indicator embark-action-indicator) (with-eval-after-loads (embark consult) (:straight embark-consult) @@ -803,29 +847,24 @@ AKA, DO NOT USE THIS FUNCTION!!!" eshell-smart-space-goes-to-end t eshell-where-to-jump 'begin) - (defun eshell-buffer-name () - (rename-buffer (concat "*eshell*<" (eshell/pwd) ">") t)) + ;; Make navigating amongst prompts easier + (:local-set outline-regexp eshell-prompt-regexp + page-delimiter eshell-prompt-regexp) - (add-hook 'eshell-directory-change-hook #'eshell-buffer-name) - (add-hook 'eshell-prompt-load-hook #'eshell-buffer-name) + (:bind "C-d" #'eshell-quit-or-delete-char) - (:hook eshell-arg-hist-mode + (:hook #'eshell-arg-hist-mode + (defun eshell-mode@setup () - ;; Define keys - (dolist (spec '(("C-d" . eshell-quit-or-delete-char))) - (define-key eshell-mode-map (kbd (car spec)) (cdr spec))) ;; Fix modeline (when (boundp 'simple-modeline--mode-line) - (setq mode-line-format '(:eval simple-modeline--mode-line))) - ;; Make navigating amongst prompts easier - (setq-local outline-regexp eshell-prompt-regexp - page-delimiter eshell-prompt-regexp)))) + (setq mode-line-format '(:eval simple-modeline--mode-line)))))) (setup eww (:option eww-search-prefix "https://duckduckgo.com/html?q=" url-privacy-level '(email agent cookies lastloc)) - (:hook acdw/reading-mode)) + (:hook #'acdw/reading-mode)) (setup (:straight-if exec-path-from-shell (acdw/system :home)) @@ -877,11 +916,7 @@ successive invocations." vc-make-backup-files t version-control t) - (auto-save-visited-mode +1) - - (add-hook 'unfocused-hook - (defun unfocused@save-buffers () - (save-some-buffers t)))) + (auto-save-visited-mode +1)) (setup find-func (:global "C-c l f" #'find-function @@ -905,9 +940,7 @@ successive invocations." " %+%* GNU Emacs" (:eval (when (frame-parameter nil 'client) " Client"))) - window-resize-pixelwise t) - - (add-hook 'unfocused-hook #'garbage-collect)) + window-resize-pixelwise t)) (setup (:straight gcmh) (:option gcmh-idle-delay 'auto) @@ -1121,9 +1154,7 @@ browser defined in `browse-url-secondary-browser-function'." (:file-match (rx ".lua" eos))) (setup (:straight macrostep) - - (:with-mode emacs-lisp-mode - (:bind "C-c e" #'macrostep-expand))) + (define-key emacs-lisp-mode-map (kbd "C-c e") #'macrostep-expand)) (setup (:straight magit) (:global "C-c g" #'magit-status) @@ -1182,7 +1213,10 @@ browser defined in `browse-url-secondary-browser-function'." (minibuffer-depth-indicate-mode +1) (file-name-shadow-mode +1) (minibuffer-electric-default-mode +1) - (fset 'yes-or-no-p #'y-or-n-p)) + + (if (version< emacs-version "28") + (fset 'yes-or-no-p #'y-or-n-p) + (setq use-short-answers t))) (setup (:straight (modus-themes :host gitlab @@ -1418,6 +1452,7 @@ browser defined in `browse-url-secondary-browser-function'." (mapc (lambda (buf) (with-current-buffer buf (when (funcall persistent-scratch-scratch-buffer-p-function) + (setq lexical-binding t) (persistent-scratch-mode +1)))) (buffer-list))) @@ -1607,6 +1642,9 @@ browser defined in `browse-url-secondary-browser-function'." acdw-modeline/narrowed acdw-modeline/major-mode))) + (:option tab-bar-mode t + tab-bar-show 1) + ;; I've put in a pull request to add the (- 0 right-margin) bit here. (:advise simple-modeline--format :override (defun simple-modeline@format (lefts rights) @@ -1727,7 +1765,12 @@ If used with a numeric prefix argument N, N backticks will be inserted." (setup (:straight (unfocused :host github :repo "duckwork/unfocused")) - (unfocused-mode +1)) + (unfocused-mode +1) + + (:with-hook unfocused-hook + (:hook (defun unfocused@save-buffers () + (save-some-buffers t)) + #'garbage-collect))) (setup uniquify (:option uniquify-buffer-name-style 'forward @@ -1887,20 +1930,20 @@ If used with a numeric prefix argument N, N backticks will be inserted." (setup window (require 'acdw-bell) - (:option Man-notify-method 'pushy - display-buffer-alist ; from FrostyX - '(("shell.*" (display-buffer-same-window) ()) - (".*" (display-buffer-reuse-window - display-buffer-same-window) - (reusable-frames . t))) - recenter-positions '(top middle bottom) - ring-bell-function (lambda () - (acdw-bell/flash-mode-line - (acdw/system :home))) - tab-bar-show 1 - use-dialog-box nil - use-file-dialog nil - visible-bell nil) + (:option + ;; Man-notify-method 'pushy + ;; display-buffer-alist ; from FrostyX + ;; '(("shell.*" (display-buffer-same-window) ()) + ;; (".*" (display-buffer-reuse-window + ;; display-buffer-same-window) + ;; (reusable-frames . t))) + recenter-positions '(top middle bottom) + ring-bell-function (lambda () + (acdw-bell/flash-mode-line + (acdw/system :home))) + use-dialog-box nil + use-file-dialog nil + visible-bell nil) (tooltip-mode -1)) @@ -1951,82 +1994,6 @@ If used with a numeric prefix argument N, N backticks will be inserted." (winum-mode +1)) -(setup x-emacs - ;; "Et cetera" settings - ;; This should stay as /minimal/ as possible. Anything that can go somewhere - ;; else /should/ go there. - (:option - attempt-orderly-shutdown-on-fatal-signal nil - attempt-stack-overflow-recovery nil - echo-keystrokes 0.01 - find-function-C-source-directory (acdw/find-emacs-source) - kill-read-only-ok t - load-prefer-newer t - native-comp-async-report-warnings-errors nil - set-mark-command-repeat-pop t) - - (when (fboundp 'command-completion-default-include-p) - (setq read-extended-command-predicate - #'command-completion-default-include-p)) - - (defvar case-map (make-sparse-keymap) - "A keymap for setting case in various ways.") - (global-set-key (kbd "C-c c") case-map) - - (defvar lookup-map (make-sparse-keymap) - "A keymap for looking up things.") - (global-set-key (kbd "C-c l") lookup-map) - - (:global "M-=" #'count-words - "C-w" #'kill-region-or-backward-word - "C-c c c" #'capitalize-dwim - "C-c c t" #'titlecase-dwim - "C-c c u" #'upcase-dwim - "C-c c l" #'downcase-dwim - "C-c d" #'acdw/insert-iso-date - "M-`" nil) - - ;; toggle bindings - (defvar toggle-map (make-sparse-keymap) - "A keymap for toggling!") - (global-set-key (kbd "C-c t") toggle-map) - - (:with-map toggle-map - (:bind "c" #'column-number-mode - "l" #'display-line-numbers-mode - "d" #'toggle-debug-on-error)) - - (defalias 'forward-word-with-case 'forward-word - "Alias for `forward-word' for use in `case-repeat-map'.") - (defalias 'backward-word-with-case 'backward-word - "Alias for `backward-word for use in `case-repeat-map'.") - - (defvar case-repeat-map - (let ((map (make-sparse-keymap))) - (define-key map "c" #'capitalize-word) - (define-key map "u" #'upcase-word) - (define-key map "l" #'downcase-word) - ;; movement - (define-key map "f" #'forward-word-with-case) - (define-key map "b" #'backward-word-with-case) - map) - "A map to repeat word-casing commands. For use with `repeat-mode'.") - - (dolist (command '(capitalize-word - capitalize-dwim - upcase-word - upcase-dwim - downcase-word - downcase-dwim - forward-word-with-case - backward-word-with-case)) - (put command 'repeat-map 'case-repeat-map)) - - (add-hook 'after-make-frame-functions - (defun after-make-frame@maximize (frame) - (unless (bound-and-true-p edit-server-frame-p) - (toggle-frame-maximized frame))))) - (setup (:straight xr)) (setup (:straight zzz-to-char) -- cgit 1.4.1-21-gabe81