From: rearman Date: Thu, 27 Jun 2024 21:07:18 +0000 (-0400) Subject: Add interlisp "]" defun & bindings, add <=>0 macros X-Git-Url: https://git.earman.xyz/?a=commitdiff_plain;h=509ef99340a9f8ea89b53bcba7b2e9598df7d05c;p=emacsinit.git Add interlisp "]" defun & bindings, add <=>0 macros --- diff --git a/init.el b/init.el index e320cc9..54a0b84 100644 --- a/init.el +++ b/init.el @@ -18,6 +18,7 @@ (add-hook 'after-init-hook (lambda () ;;(require 'acme-mouse) + (require 're-logic-defuns) (require 're-repl-defuns) (require 're-math-defuns) (require 're-electronics-defuns) diff --git a/re/re-bindings.el b/re/re-bindings.el index 8ea6b23..cf1b137 100644 --- a/re/re-bindings.el +++ b/re/re-bindings.el @@ -9,14 +9,14 @@ (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 + (interactive) + (kill-line 0))) ; kill-line backwards (keymap-set key-translation-map "C-h" "") ; Prefer 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 + (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) @@ -63,27 +63,30 @@ ;; (E)Lisp (keymap-global-set "C-M-z" #'eval-region) (keymap-global-set "C-M-S-q" (lambda () - (interactive) - (indent-pp-sexp t))) + (interactive) + (indent-pp-sexp t))) ;; 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) - (keymap-set inferior-emacs-lisp-mode-map ")" (re/send-on-close-paren #'ielm-send-input)))) + (lambda () + (keymap-set inferior-emacs-lisp-mode-map "C-l" #'comint-clear-buffer) + (keymap-set inferior-emacs-lisp-mode-map ")" (re/send-on-close-paren #'ielm-send-input)) + (keymap-set inferior-emacs-lisp-mode-map "]" #'re/insert-all-parens))) ;; Eshell (keymap-global-set "C-c e" #'eshell) (add-hook 'eshell-mode-hook - (lambda () - (keymap-set eshell-mode-map ")" (re/send-on-close-paren #'eshell-send-input)) - (keymap-set eshell-mode-map "C-d" #'eshell-quit-or-delete-char))) + (lambda () + (keymap-set eshell-mode-map "C-d" #'eshell-quit-or-delete-char) + (keymap-set eshell-mode-map ")" (re/send-on-close-paren #'eshell-send-input)) + (keymap-set eshell-mode-map "]" #'re/insert-all-parens))) ;; SLIME REPL (add-hook 'slime-repl-mode-hook - (lambda () - (keymap-set slime-repl-mode-map ")" (re/send-on-close-paren #'slime-repl-return)))) + (lambda () + (keymap-set slime-repl-mode-map ")" (re/send-on-close-paren #'slime-repl-return)) + (keymap-set slime-repl-mode-map "]" #'re/insert-all-parens))) ;; Org Starters (keymap-global-set "C-c l" #'org-store-link) diff --git a/re/re-logic-defuns.el b/re/re-logic-defuns.el new file mode 100644 index 0000000..8189282 --- /dev/null +++ b/re/re-logic-defuns.el @@ -0,0 +1,19 @@ +;;; re-logic-defuns.el --- Quae configurare -*- lexical-binding: t; -*- +;; Haec pars Emacs non est. + +;;; Code: + +(defmacro >0 (x) + "Determine if x>0." + `(> ,x 0)) + +(defmacro <0 (x) + "Determine if x<0." + `(< ,x 0)) + +(defmacro =0 (x) + "Determine if x=0." + `(= ,x 0)) + +(provide 're-logic-defuns) +;;; hic terminatur re-logic-defuns.el diff --git a/re/re-repl-defuns.el b/re/re-repl-defuns.el index a980936..30c6e40 100644 --- a/re/re-repl-defuns.el +++ b/re/re-repl-defuns.el @@ -13,6 +13,15 @@ Use this macro as a direct binding" (insert-char 41) (when (= 0 (car (syntax-ppss))) (call-interactively ,executor)))) + +(defun re/insert-all-parens () + "Inserts all the parens needed to balance a sexp. +If multiple parens are needed at the end to balance a sexp, insert them. +Bind this to ']' for the interlisp experience." + (interactive) + (while (>0 (car (syntax-ppss))) + (insert-char 41))) + ;; Eshell (defun eshell-quit-or-delete-char (arg) "Delete char if at one, quit eshell if on empty prompt. @@ -29,7 +38,7 @@ Stolen from https://depp.brause.cc/dotemacs" (make-directory (file-name-directory path) t) (setq-local comint-input-ring-file-name path)) (setq-local comint-input-ring-size 10000 - comint-input-ignoredups t) + comint-input-ignoredups t) (comint-read-input-ring)) (defun re/ielm-write-history (&rest _args)