diff options
| -rw-r--r-- | init.org | 31 | 
1 files changed, 18 insertions, 13 deletions
| @@ -1633,7 +1633,11 @@        (defun jao-exec-in-term (cmd &optional name)          (ansi-term "bash" name) -        (term-send-string nil (concat cmd "\n"))) +        (set-process-sentinel (get-buffer-process (current-buffer)) +                              (lambda (process event) +                                (when (string= event "finished\n") +                                  (kill-buffer (process-buffer process))))) +        (term-send-string nil (concat cmd ";exit\n")))        (defmacro jao-def-exec-in-term (name cmd &rest prelude)          `(defun ,(intern (format "jao-term-%s" name)) () @@ -1641,13 +1645,13 @@             ,@prelude             (if-let ((b (jao-term--find ,cmd)))                 (pop-to-buffer b) -             (ansi-term ,cmd ,(format "*%s*" name)) +             (jao-exec-in-term ,cmd ,(format "*%s*" name))               (setq-local jao-term--cmd ,cmd))))        (jao-def-exec-in-term "aptitude" "aptitude" (jao-afio--goto-scratch))        (jao-def-exec-in-term "htop" "htop" (jao-afio--goto-scratch))      #+end_src -*** Eshell +*** eshell  ***** Basic custom        #+begin_src emacs-lisp          (use-package eshell @@ -1802,7 +1806,7 @@              (jao-eshell--kbds)            (add-hook 'eshell-mode-hook #'jao-eshell--kbds))        #+end_src -*** Shell here +*** shell here      #+begin_src emacs-lisp        (defun jao-shell-here--find-window (b)          (when-let ((w (car (cl-remove-if-not @@ -1818,6 +1822,15 @@                     'jao-eshell-buffer)))            (if b (set-frame-parameter nil p b) (frame-parameter nil p)))) +      (defun jao-shell--cd-here (dir) +        (if jao-shell-here-use-term +            (progn (term-send-raw-string "\C-a\C-k") +                   (term-send-string (format "cd %s\n" dir))) +          (eshell-kill-input) +          (eshell/cd dir) +          (insert "\n") +          (eshell-send-input))) +        (defun jao-shell-here (&optional stay)          (interactive)          (let* ((dir default-directory) @@ -1833,15 +1846,7 @@               (jao-shell-frame-buffer (current-buffer))))            (when (not jao-shell-here-use-term)              (eshell-save-some-history)) -          (when (not stay) -            (if jao-shell-here-use-term -                (progn (term-send-raw-string "\C-a") -                       (term-send-raw-string "\C-k") -                       (term-send-string (format "cd %s\n" dir))) -              (eshell-kill-input) -              (eshell/cd dir) -              (insert "\n") -              (eshell-send-input))))) +          (unless stay (jao-shell--cd-here dir))))        (defun eshell/x ()          (when (derived-mode-p 'eshell-mode) | 
