From 81152ca24289d2b08fcfe64b19164894c048524e Mon Sep 17 00:00:00 2001 From: Case Duckworth Date: Thu, 6 Jan 2022 15:46:50 -0600 Subject: Add +flyspell-correct-buffer --- init.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'init.el') diff --git a/init.el b/init.el index 07679e7..67528fd 100644 --- a/init.el +++ b/init.el @@ -948,9 +948,11 @@ See also `crux-reopen-as-root-mode'." (:+key "M-q" #'filldent-dwim)) (setup (:straight flyspell-correct) + (:+also-load +flyspell-correct ) (:option flyspell-correct--cr-key ";") (:bind-into flyspell - "C-;" #'flyspell-correct-wrapper)) + "C-;" #'flyspell-correct-wrapper + "" #'+flyspell-correct-buffer)) (setup (:straight-when (forge :host github :repo "magit/forge") -- cgit 1.4.1-21-gabe81 From 84139db9a8869b31f831fb154bdc209e06db5ab3 Mon Sep 17 00:00:00 2001 From: Case Duckworth Date: Thu, 6 Jan 2022 15:47:09 -0600 Subject: Add user-save-mode --- init.el | 5 ++++- lisp/user-save.el | 45 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 lisp/user-save.el (limited to 'init.el') diff --git a/init.el b/init.el index 67528fd..5bf4dee 100644 --- a/init.el +++ b/init.el @@ -104,6 +104,9 @@ (setup (:require reading) (:global "C-c C-r" #'reading-mode)) +(setup (:require user-save) + (user-save-mode +1)) + (setup +key (+ensure-after-init #'+key-global-mode)) @@ -450,7 +453,7 @@ "C-c C-l" #'+org-insert-link-dwim "C-c C-n" #'+org-next-heading-widen "C-c C-p" #'+org-previous-heading-widen) - (:local-hook before-save-hook #'+org-before-save@prettify-buffer) + (:local-hook user-save-hook #'+org-before-save@prettify-buffer) (advice-add #'org-delete-backward-char :override #'+org-delete-backward-char) (with-eval-after-load 'org (org-clock-persistence-insinuate) diff --git a/lisp/user-save.el b/lisp/user-save.el new file mode 100644 index 0000000..01adc22 --- /dev/null +++ b/lisp/user-save.el @@ -0,0 +1,45 @@ +;;; user-save.el -*- lexical-binding: t; -*- + +;; Because `super-save-mode' automatically saves every time we move away from a +;; buffer, it tends to run a lot of `before-save-hook's that don't need to be +;; run that often. For that reason, I'm writing a mode where C-x C-s saves +;; /and/ runs all the "real" before-save-hooks, so that super-save won't +;; automatically do things like format the buffer all the time. + +;;; Code: + +(defvar user-save-hook nil + "Hook to run when the user, not Emacs, saves the buffer.") + +(defvar user-save-mode-map (let ((map (make-sparse-keymap))) + (define-key map (kbd "C-x C-s") #'user-save-buffer) + map) + "Keymap for `user-save-mode'. +This map shadows the default map for `save-buffer'.") + +(defun user-save-buffer (&optional arg) + "Save current buffer in visited file if modified. +This function is precisely the same as `save-buffer', but with +one modification: it also runs functions in `user-save-hook'. +This means that if you have some functionality in Emacs to +automatically save buffers periodically, but have hooks you want +to automatically run when the buffer saves that are +computationally expensive or just aren't something you want to +run all the time, put them in `user-save-hook'. + +ARG is passed directly to `save-buffer'." + (interactive '(called-interactively)) + (message "Saving the buffer...") + (with-demoted-errors (run-hooks 'user-save-hook)) + (save-buffer arg) + (message "Saving the buffer...Done.")) + +;;;###autoload +(define-minor-mode user-save-mode + "Mode to enable an an extra user-save hook." + :lighter " US" + :global t + :keymap 'user-save-mode-map) + +(provide 'user-save) +;;; user-save.el ends here -- cgit 1.4.1-21-gabe81 From 4dee486f1f1d39ebc523e03f61705656d8e9c326 Mon Sep 17 00:00:00 2001 From: Case Duckworth Date: Thu, 6 Jan 2022 15:47:42 -0600 Subject: Add +kill-word-backward-or-region --- init.el | 11 +++++++++-- lisp/+emacs.el | 9 +++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) (limited to 'init.el') diff --git a/init.el b/init.el index 5bf4dee..a822cb8 100644 --- a/init.el +++ b/init.el @@ -34,10 +34,15 @@ "C-x 4 n" #'clone-buffer "C-c v" #'visible-mode "C-M-;" #'+lisp-comment-or-uncomment-sexp - "M-j" nil) + "M-j" nil + "C-x o" (lambda () (interactive) (switch-to-buffer nil)) + "C-x C-o" #'+open-paragraph + "C-w" #'+kill-word-backward-or-region) ;; C-h deletes backward - see https://idiomdrottning.org/bad-emacs-defaults (global-set-key (kbd "C-h") 'delete-backward-char) (keyboard-translate ?\C-h ?\C-?) + ;; Hooks + ;; Advice ;; https://old.reddit.com/r/emacs/comments/rlli0u/whats_your_favorite_defadvice/hph14un/ (define-advice keyboard-escape-quit (:around (fn &rest r)) "Don't close splits on `keyboard-escape-quit'." @@ -1141,7 +1146,9 @@ See also `crux-reopen-as-root-mode'." (setup (:straight paredit) (:bind "DEL" #'paredit-backward-delete - "C-" #'paredit-backward-kill-word) + "C-" #'paredit-backward-kill-word + "C-w" (lambda (r) (interactive "P") + (+kill-word-backward-or-region r #'paredit-backward-kill-word))) (dolist (hook '(emacs-lisp-mode-hook eval-expression-minibuffer-setup-hook ielm-mode-hook diff --git a/lisp/+emacs.el b/lisp/+emacs.el index 7453913..ecdfeaa 100644 --- a/lisp/+emacs.el +++ b/lisp/+emacs.el @@ -220,6 +220,15 @@ kill without asking." (save-buffers-kill-emacs)) (delete-frame nil :force))) +(defun +kill-word-backward-or-region (&optional arg backward-kill-word-fn) + "Kill active region or ARG words backward. +BACKWARD-KILL-WORD-FN is the function to call to kill a word +backward. It defaults to `backward-kill-word'." + (interactive "P") + (call-interactively (if (region-active-p) + #'kill-region + (or backward-kill-word-fn #'backward-kill-word)))) + ;; ... and advice ;; Indent the region after a yank. -- cgit 1.4.1-21-gabe81 From 75e03850c0ba098208c4999518b1b164c63a5eff Mon Sep 17 00:00:00 2001 From: Case Duckworth Date: Thu, 6 Jan 2022 15:48:19 -0600 Subject: Fix naming bug I also added aliases just in case I forget the proper names for these maps again. --- init.el | 2 +- lisp/+casing.el | 2 ++ lisp/+lookup.el | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) (limited to 'init.el') diff --git a/init.el b/init.el index a822cb8..432ded7 100644 --- a/init.el +++ b/init.el @@ -1237,7 +1237,7 @@ See also `crux-reopen-as-root-mode'." :host github :repo "duckwork/titlecase.el" :files ("*"))) - (:with-map +casing-map + (:with-map +casing-mode-map (:bind "t" #'titlecase-dwim))) (setup (:straight topsy) diff --git a/lisp/+casing.el b/lisp/+casing.el index a21e710..5f39b2e 100644 --- a/lisp/+casing.el +++ b/lisp/+casing.el @@ -75,5 +75,7 @@ Otherwise, it calls `capitalize-word' on the word at point (using (define-key +key-mode-map (kbd "M-c") (when +casing-mode +casing-mode-map))) +(defvaralias '+casing-map '+casing-mode-map) + (provide '+casing) ;;; +casing.el ends here diff --git a/lisp/+lookup.el b/lisp/+lookup.el index 8fa8795..755f84e 100644 --- a/lisp/+lookup.el +++ b/lisp/+lookup.el @@ -20,5 +20,7 @@ (define-key +key-mode-map (kbd "C-c l") (when +lookup-mode +lookup-mode-map))) +(defvaralias '+lookup-map '+lookup-mode-map) + (provide '+lookup) ;;; +lookup.el ends here -- cgit 1.4.1-21-gabe81 From 4d2a9603ad039242341dc6ee3316b9d83b80435c Mon Sep 17 00:00:00 2001 From: Case Duckworth Date: Thu, 6 Jan 2022 15:49:01 -0600 Subject: Disable electric-pair-mode in lui-mode, and define 'irc alias --- init.el | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'init.el') diff --git a/init.el b/init.el index 432ded7..7f0733c 100644 --- a/init.el +++ b/init.el @@ -592,6 +592,7 @@ (:require _circe +circe) (:also-load circe-chanop) + (+ensure-after-init (lambda () (defalias 'irc '+irc "Start IRC."))) ;; Formatting options (:option @@ -712,7 +713,11 @@ (add-to-list '+pulse-location-commands #'lui-track-jump-to-indicator) (:hook #'visual-line-mode #'enable-lui-track - #'visual-fill-column-mode) + #'visual-fill-column-mode + (defun +disable-electric-pair-mode () + "Disable `electric-pair-mode' in the current buffer." + (interactive) + (electric-pair-local-mode -1))) (:local-set fringes-outside-margins t right-margin-width (length lui-time-stamp-format) scroll-margin 0 -- cgit 1.4.1-21-gabe81