]> git.earman.xyz Git - emacsinit.git/commitdiff
Add eshell-send-on-close-paren
authorrearman <rearman@r717.net>
Wed, 28 Dec 2022 14:17:38 +0000 (09:17 -0500)
committerrearman <rearman@r717.net>
Wed, 28 Dec 2022 14:17:38 +0000 (09:17 -0500)
This defun attempts to emulate the genera repl, where a balanced closing paren
will execute the command.  Noticed some odd behavior with syntax-ppss giving
negative values for nesting occaionally.  May need to add in something with
syntax-ppss-flush-cache if the issue comes up again.  Otherwise looks to
function correctly.

init.el

diff --git a/init.el b/init.el
index 21df2de6be1f2614453ab74f7250f29208038133..c0539062753e8ea94d4b1f750e3fdedbd8a52f9e 100644 (file)
--- a/init.el
+++ b/init.el
@@ -244,6 +244,21 @@ Stolen from BrettWitty's dotemacs github repo."
     (when (file-exists-p xml1) (delete-file xml1))
     (when (file-exists-p xml2) (delete-file xml2))))
 
+(defun eshell-send-on-close-paren ()
+  "Makes eshell act somewhat like genera.
+Makes a closing paren execute the sexp.  Currently in test, look out for errors."
+  (interactive)
+  (insert-char ?\))
+  (let ((p (point)))
+    ;;(eshell-bol)
+    ;;(syntax-ppss-flush-cache (point))
+    ;;(goto-char p)
+    (cond ((= 0 (car (syntax-ppss)))
+          (eshell-send-input))
+         ((< (car (syntax-ppss)) 0)
+          (message "Check flush-cache"))
+         ((t nil)))))
+
 ;; ORG SETTINGS AND DEFUNS
 (defun erfassen-zettel ()
   "Add a new zettel to the kasten.
@@ -344,9 +359,11 @@ Intended for use as an after-save-hook."
 (global-set-key (kbd "C-%") 'replace-regexp)
 (global-set-key (kbd "M-%") 'replace-string)
 (global-set-key (kbd "C-M-%") 'query-replace-regexp)
-(eval-after-load 'org-mode
-  '(progn ((define-key org-mode-map (kbd "C-'") nil)
-          (define-key org-mode-map (kbd "C-,") nil))))
+(define-key eshell-mode-map (kbd ")") 'eshell-send-on-close-paren)
+(define-key org-mode-map (kbd "C-'") nil)
+(define-key org-mode-map (kbd "C-,") nil)
+(define-key org-agenda-mode-map (kbd "C-'") nil)
+(define-key org-agenda-mode-map (kbd "C-,") nil)
 
 (custom-set-variables
  ;; custom-set-variables was added by Custom.