From 89e738b464a53817b5b5ab473563783dd407c8bb Mon Sep 17 00:00:00 2001 From: jao Date: Wed, 10 Nov 2021 23:00:57 +0000 Subject: simpler eshell toggling and term handling --- attic/misc.org | 112 ++++++++++++++++++++++++++++++++++++--------------------- exwm.org | 6 ++-- init.org | 89 ++++++++------------------------------------- 3 files changed, 88 insertions(+), 119 deletions(-) diff --git a/attic/misc.org b/attic/misc.org index b468c7b..c3df4b7 100644 --- a/attic/misc.org +++ b/attic/misc.org @@ -537,55 +537,85 @@ #+end_src * vterm - #+begin_src emacs-lisp +*** vterm + #+begin_src emacs-lisp :tangle no + (use-package vterm-toggle + :ensure t + :config + (defun jao-vterm--toggle (cd) + (interactive "P") + (if cd (vterm-toggle-cd) (vterm-toggle))) + :bind (("C-" . jao-vterm--toggle))) + (use-package vterm :ensure t - :init - (setq vterm-kill-buffer-on-exit t - vterm-copy-exclude-prompt t - vterm-use-vterm-prompt-detection-method t - vterm-buffer-name-string nil) :config - (define-key vterm-mode-map [(f1)] nil) - :bind (:map vterm-mode-map (("C-c C-c" . vterm-send-C-c)))) - - (defun jao-exec-in-vterm (cmd &optional name) - (vterm) - (when name (vterm-send-string "unset PROMPT_COMMAND\n")) - (vterm-send-string cmd) - (vterm-send-return) - (when name (rename-buffer name))) - - (defun jao-exec-in-vterm (cmd &optional name) - (ansi-term cmd name)) - - (defvar-local jao-vterm--cmd nil) - - (defun jao-vterm--find (cmd) - (seq-find (lambda (b) - (and (eq (buffer-local-value 'major-mode b) 'vterm-mode) - (string= (or (buffer-local-value 'jao-vterm--cmd b) "") - cmd))) - (buffer-list))) - - (defmacro jao-def-exec-in-vterm (name cmd &rest prelude) - `(defun ,(intern (format "jao-vterm-%s" name)) () - (interactive) - ,@prelude - (if-let ((b (jao-vterm--find ,cmd))) - (pop-to-buffer b) - (jao-exec-in-vterm (format "%s; exit" ,cmd) - ,(when name (format "%s" name))) - (setq-local jao-vterm--cmd ,cmd)))) - - (jao-def-exec-in-vterm aptitude "aptitude" (jao-afio--goto-scratch)) - (jao-def-exec-in-vterm htop "htop" (jao-afio--goto-scratch)) - #+end_src + :custom ((vterm-kill-buffer-on-exit t))) + + (use-package eshell-vterm + :ensure t + :config (eshell-vterm-mode)) + + (defun jao-exec-in-vterm (cmd bname) + (if (string-blank-p (or cmd "")) + (vterm) + (let ((vterm-shell cmd) + (vterm-kill-buffer-on-exit t) + (buff (generate-new-buffer bname))) + (switch-to-buffer buff) + (vterm-mode)))) + + #+end_src *** Vterm repls #+begin_src emacs-lisp (use-package jao-vterm-repl) (jao-define-attached-buffer "^\\* vrepl - .+ \\*.*") #+end_src +* eshell here + #+begin_src emacs-lisp + (defun jao-shell-here--find-window (b) + (when-let (w (seq-find (lambda (w) (eq (window-buffer w) b)) + (window-list))) + (select-window w))) + + (defun jao-shell-frame-buffer (&optional b) + (let ((p 'jao-eshell-buffer)) + (if b (set-frame-parameter nil p b) (frame-parameter nil p)))) + + (defun jao-shell--cd-here (dir) + (eshell-kill-input) + (eshell/cd dir) + (insert "\n") + (eshell-send-input)) + + (defun jao-shell-here (&optional stay) + (interactive) + (let* ((dir default-directory) + (b (jao-shell-frame-buffer))) + (jao-with-attached-buffer "^\\*eshell" 35 + (if (buffer-live-p b) + (pop-to-buffer b nil t) + (eshell) + (jao-shell-frame-buffer (current-buffer)))) + (eshell-save-some-history) + (unless stay (jao-shell--cd-here dir)))) + + (defun eshell/x () + (when (derived-mode-p 'eshell-mode) + (when (fboundp 'eshell-autojump-save) + (eshell-autojump-save)) + (eshell-save-some-history)) + (if (> (frame-height) (window-height)) (delete-window) (bury-buffer))) + + (defun jao-shell-here-toggle () + (interactive) + (if (eq (current-buffer) (jao-shell-frame-buffer)) + (eshell/x) + (jao-shell-here t))) + + (global-set-key (kbd "C-!") #'jao-shell-here) + (global-set-key [(f1)] #'jao-shell-here-toggle) + #+end_src * scrolling #+begin_src emacs-lisp (use-package iscroll diff --git a/exwm.org b/exwm.org index d2fd5e8..93bddcb 100644 --- a/exwm.org +++ b/exwm.org @@ -499,10 +499,10 @@ ("d" "go to doc" jao-exwm-select-pdf) ("D" "open to doc" jao-open-doc)] ["Packages" - ("a" "aptitude" jao-term-aptitude) + ("a" "aptitude" jao-exwm-aptitude) ("l" "packages" jao-exwm-packages)] ["Monitors" - ("p" "htop" jao-term-htop) + ("p" "htop" jao-exwm-htop) ("x" "restart xmobar" jao-exwm-xmobar) ("X" "kill xmobar" jao-exwm-kill-xmobar)] ["Network" @@ -559,7 +559,7 @@ ([?\s-p] . jao-prev-window) ([?\s-r] . app-launcher-run-app) ([?\s-s] . jao-transient-spotify) - ([?\s-t] . vterm) + ([?\s-t] . jao-exwm-xterm) ([?\s-w] . jao-transient-exwm) ([?\s-z] . jao-transient-sleep) ([XF86AudioMute] . jao-mixer-master-toggle) diff --git a/init.org b/init.org index bde6120..a3577e8 100644 --- a/init.org +++ b/init.org @@ -1751,39 +1751,10 @@ (autoload 'ansi-color-for-comint-mode-on "ansi-color" nil t) (add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on) #+end_src -*** vterm - #+begin_src emacs-lisp - (use-package vterm-toggle - :ensure t - :config - (defun jao-vterm--toggle (cd) - (interactive "P") - (if cd (vterm-toggle-cd) (vterm-toggle))) - :bind (("C-" . jao-vterm--toggle))) - - (use-package vterm - :ensure t - :config - :custom ((vterm-kill-buffer-on-exit t))) - - (use-package eshell-vterm - :ensure t - :config (eshell-vterm-mode)) - - (defun jao-exec-in-vterm (cmd bname) - (if (string-blank-p (or cmd "")) - (vterm) - (let ((vterm-shell cmd) - (vterm-kill-buffer-on-exit t) - (buff (generate-new-buffer bname))) - (switch-to-buffer buff) - (vterm-mode)))) - - #+end_src *** term #+begin_src emacs-lisp (defvar-local jao-term--cmd nil) - (defvar jao-use-vterm t) + (defvar jao-use-vterm nil) (defun jao-term--find (cmd) (seq-find (lambda (b) @@ -1951,6 +1922,19 @@ #+BEGIN_SRC emacs-lisp (add-hook 'eshell-expand-input-functions #'eshell-expand-history-references) #+END_SRC +***** Toggle + #+begin_src emacs-lisp + (use-package eshell-toggle + :ensure t + :demand t) + + (defun jao-eshell-toggle (git-root) + (interactive "P") + (let ((eshell-toggle-use-git-root git-root)) + (eshell-toggle))) + + (global-set-key (kbd "") #'jao-eshell-toggle) + #+end_src ***** Workarounds #+begin_src emacs-lisp ;; at some point, bash completion started insertig the TAB @@ -1972,51 +1956,6 @@ (jao-eshell--kbds) (add-hook 'eshell-mode-hook #'jao-eshell--kbds)) #+end_src -*** shell here - #+begin_src emacs-lisp - (defun jao-shell-here--find-window (b) - (when-let (w (seq-find (lambda (w) (eq (window-buffer w) b)) - (window-list))) - (select-window w))) - - (defun jao-shell-frame-buffer (&optional b) - (let ((p 'jao-eshell-buffer)) - (if b (set-frame-parameter nil p b) (frame-parameter nil p)))) - - (defun jao-shell--cd-here (dir) - (eshell-kill-input) - (eshell/cd dir) - (insert "\n") - (eshell-send-input)) - - (defun jao-shell-here (&optional stay) - (interactive) - (let* ((dir default-directory) - (b (jao-shell-frame-buffer))) - (jao-with-attached-buffer "^\\*eshell" 35 - (if (buffer-live-p b) - (pop-to-buffer b nil t) - (eshell) - (jao-shell-frame-buffer (current-buffer)))) - (eshell-save-some-history) - (unless stay (jao-shell--cd-here dir)))) - - (defun eshell/x () - (when (derived-mode-p 'eshell-mode) - (when (fboundp 'eshell-autojump-save) - (eshell-autojump-save)) - (eshell-save-some-history)) - (if (> (frame-height) (window-height)) (delete-window) (bury-buffer))) - - (defun jao-shell-here-toggle () - (interactive) - (if (eq (current-buffer) (jao-shell-frame-buffer)) - (eshell/x) - (jao-shell-here t))) - - (global-set-key (kbd "C-!") #'jao-shell-here) - (global-set-key [(f1)] #'jao-shell-here-toggle) - #+end_src * Version control and CI *** General options #+BEGIN_SRC emacs-lisp -- cgit v1.2.3