]> git.earman.xyz Git - emacsinit.git/commitdiff
Add interlisp "]" defun & bindings, add <=>0 macros
authorrearman <rearman@r717.net>
Thu, 27 Jun 2024 21:07:18 +0000 (17:07 -0400)
committerrearman <rearman@r717.net>
Thu, 27 Jun 2024 21:07:18 +0000 (17:07 -0400)
init.el
re/re-bindings.el
re/re-logic-defuns.el [new file with mode: 0644]
re/re-repl-defuns.el

diff --git a/init.el b/init.el
index e320cc9248203cb6d8e8f753689f8422af30c259..54a0b845a0d140388fa1d4f25050c8046fb55812 100644 (file)
--- 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)
index 8ea6b23a2190dd1a313cf86f12c803155f56bce0..cf1b137232d61e4055f5f20768671c6b596c2c5d 100644 (file)
@@ -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" "<DEL>") ; 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)
 ;; (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 (file)
index 0000000..8189282
--- /dev/null
@@ -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
index a98093678ab3b74fcaa53afae24f23f2dd378b13..30c6e40668abe6ac26e215e54f32afeb909785c4 100644 (file)
@@ -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)