From: rearman Date: Fri, 12 Jul 2024 21:09:56 +0000 (-0400) Subject: Auto prettyprint and auto-removal of duplicate lines on save X-Git-Url: https://git.earman.xyz/?a=commitdiff_plain;h=e479b0aa74eca51ac56f38966662b3ec32f19abc;p=emacsinit.git Auto prettyprint and auto-removal of duplicate lines on save --- diff --git a/init.el b/init.el index 79c6830..c52421a 100644 --- a/init.el +++ b/init.el @@ -128,6 +128,7 @@ ;; Cleanup on write (setq require-final-newline t) +(add-hook 'before-save-hook #'re/flush-extra-lines) (add-hook 'before-save-hook #'whitespace-cleanup) (add-hook 'after-save-hook #'executable-make-buffer-file-executable-if-script-p) diff --git a/re/re-bindings.el b/re/re-bindings.el index 7e24cf2..00a0783 100644 --- a/re/re-bindings.el +++ b/re/re-bindings.el @@ -8,19 +8,11 @@ (keymap-global-set "C-\\" #'undo-redo) (keymap-global-set "C-S-K" #'kill-whole-line) (keymap-global-set "C-w" #'re/kill-bword-or-region) -(keymap-global-set "C-u" - (lambda - () - (interactive) - (kill-line 0))) ; kill-line backwards +(keymap-global-set "C-u" (lambda () (interactive) (kill-line 0))) ; kill-line backwards (keymap-set key-translation-map "C-h" "") ; Rather F1 for help (keymap-global-set "C-o" #'re/open-line-below) (keymap-global-set "M-o" #'re/open-line-above) -(keymap-global-set "M-j" - (lambda - () - (interactive) - (join-line 0))) ; join-line other way +(keymap-global-set "M-j" (lambda () (interactive) (join-line 0))) ; join-line other way (keymap-global-set "C-z" #'zap-up-to-char) (keymap-global-set "C-c s" #'sort-lines) (keymap-global-set "M-;" #'re/comment-dwim) @@ -67,71 +59,64 @@ ;; (E)Lisp (keymap-global-set "C-M-z" #'eval-region) (keymap-global-set "C-M-S-q" - (lambda - () - (interactive) - (sedit-auto-prettify-sexp))) + (lambda () (interactive) (sedit-auto-prettify-sexp))) + (defvar *re/lisp-mode-hooks* - '(emacs-lisp-mode-hook - lisp-mode-hook - slime-mode-hook - scheme-mode-hook)) + '(emacs-lisp-mode-hook lisp-mode-hook slime-mode-hook scheme-mode-hook)) -(dolist - (hook *re/lisp-mode-hooks*) +(dolist (hook *re/lisp-mode-hooks*) (add-hook hook - (lambda - () - (keymap-set lisp-mode-shared-map "]" - (re/balance-and-eval-sexp - (lambda - () - (interactive) - (sedit-auto-prettify-sexp) - (forward-sexp))))))) + (lambda () + (keymap-set lisp-mode-shared-map + "]" + (re/balance-and-eval-sexp #'sedit-auto-prettify-sexp))))) (add-hook 'lisp-interaction-mode-hook - (lambda - () - (keymap-set lisp-interaction-mode-map "]" + (lambda () + (keymap-set lisp-interaction-mode-map + "]" (re/balance-and-eval-sexp #'eval-print-last-sexp)))) ;; IELM (keymap-global-set "C-c i" #'ielm) (add-hook 'ielm-mode-hook - (lambda - () - (keymap-set inferior-emacs-lisp-mode-map "C-l" #'comint-clear-buffer) - (let - ((eval-function #'ielm-send-input)) - (keymap-set inferior-emacs-lisp-mode-map ")" + (lambda () + (keymap-set inferior-emacs-lisp-mode-map + "C-l" + #'comint-clear-buffer) + (let ((eval-function #'ielm-send-input)) + (keymap-set inferior-emacs-lisp-mode-map + ")" (re/send-on-close-paren eval-function)) - (keymap-set inferior-emacs-lisp-mode-map "]" + (keymap-set inferior-emacs-lisp-mode-map + "]" (re/balance-and-eval-sexp eval-function))))) + ;; Eshell (keymap-global-set "C-c e" #'eshell) (add-hook 'eshell-mode-hook - (lambda - () + (lambda () (keymap-set eshell-mode-map "C-d" #'eshell-quit-or-delete-char) - (let - ((eval-function #'eshell-send-input)) - (keymap-set eshell-mode-map ")" + (let ((eval-function #'eshell-send-input)) + (keymap-set eshell-mode-map + ")" (re/send-on-close-paren eval-function)) - (keymap-set eshell-mode-map "]" + (keymap-set eshell-mode-map + "]" (re/balance-and-eval-sexp eval-function))))) ;; SLIME REPL (add-hook 'slime-repl-mode-hook - (lambda - () + (lambda () (let ((eval-function #'slime-repl-return)) - (keymap-set slime-repl-mode-map ")" + (keymap-set slime-repl-mode-map + ")" (re/send-on-close-paren eval-function)) - (keymap-set slime-repl-mode-map "]" + (keymap-set slime-repl-mode-map + "]" (re/balance-and-eval-sexp eval-function))))) ;; Org Starters diff --git a/re/re-editing-defuns.el b/re/re-editing-defuns.el index a69ec48..75d4803 100644 --- a/re/re-editing-defuns.el +++ b/re/re-editing-defuns.el @@ -52,6 +52,12 @@ (open-line n) (indent-for-tab-command)) +(defun re/flush-extra-lines () + "Change all groups of blank lines to 1 blank line." + (interactive) + (save-excursion (mark-whole-buffer) + (replace-regexp "^\n+" "\n" nil (region-beginning) (region-end)))) + (defun re/comment-dwim () "Comment region if active, otherwise comment line. Stolen from https://depp.brause.cc/dotemacs" @@ -64,6 +70,7 @@ Stolen from https://depp.brause.cc/dotemacs" (comment-or-uncomment-region (line-beginning-position) (line-end-position)))) + (defun re/kill-bword-or-region () "Kill region if active, otherwise kill back one word." (interactive) diff --git a/sedit-mouse b/sedit-mouse index e7fc56d..e79a1de 160000 --- a/sedit-mouse +++ b/sedit-mouse @@ -1 +1 @@ -Subproject commit e7fc56d9e756fa4dfebfdba429dfec5b6ca2e0bb +Subproject commit e79a1de4d2329b150322ccf2d785decce4ebee30