diff options
Diffstat (limited to 'kolwynia/home/bdunahu/files/.config/emacs/modules/bd--shells.el')
| -rw-r--r-- | kolwynia/home/bdunahu/files/.config/emacs/modules/bd--shells.el | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--shells.el b/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--shells.el new file mode 100644 index 0000000..1072694 --- /dev/null +++ b/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--shells.el @@ -0,0 +1,135 @@ +;;; -*- lexical-binding: t; -*- +;;; Commentary: +;;; Code: + + +(add-to-list 'exec-path "/home/bdunahu/.local/bin") + +(use-package vterm + :config + (with-eval-after-load "term" (defalias 'term 'vterm)) + ;; use vterm for visual visual commands + (defun bd/eshell-exec-visual (&rest args) + "Run the specified PROGRAM in a vterm emulation buffer. +ARGS are passed to the program. At the moment, no piping of input is +allowed." + (let* (eshell-interpreter-alist + (interp (eshell-find-interpreter (car args) (cdr args))) + (program (car interp)) + (args (mapconcat #'shell-quote-argument + (flatten-tree + (eshell-stringify-list (append (cdr interp) + (cdr args)))) " ")) + (term-buf + (generate-new-buffer + (concat "*" (file-name-nondirectory program) "*"))) + (eshell-buf (current-buffer)) + (vterm-shell (concat (shell-quote-argument + (file-local-name program)) + " " args))) + (save-current-buffer + (switch-to-buffer term-buf) + (vterm-mode) + (setq-local eshell-parent-buffer eshell-buf) + (let ((proc (get-buffer-process term-buf))) + (if (and proc (eq 'run (process-status proc))) + (set-process-sentinel proc #'eshell-term-sentinel) + (error "Failed to invoke visual command"))))) + nil) + (advice-add #'eshell-exec-visual :override #'bd/eshell-exec-visual)) + +(use-package esh-module + :config + (add-to-list 'eshell-modules-list 'eshell-smart)) + +(use-package esh-mode + :config + (setopt eshell-scroll-to-bottom-on-input 'this)) + +(use-package em-banner + :config + (setopt eshell-banner-message (concat "\n" (propertize " " 'display (create-image (expand-file-name "images/wolf.png" user-emacs-directory) 'png nil :scale 0.8 :align-to "center")) "\n"))) + +(use-package em-hist + :config + (setopt eshell-hist-ignoredups t + eshell-history-append t)) + +(use-package em-term + :config + (mapc (lambda (x) (add-to-list 'eshell-visual-commands x)) + '( + "angband" + "nethack" + "r2" + )) + (setopt eshell-destroy-buffer-when-process-dies t)) + +(use-package em-unix + :config + (setopt eshell-cp-overwrite-files nil + eshell-mv-overwrite-files nil)) + +(use-package em-prompt + :config + (defun bd/get-prompt-path () + (abbreviate-file-name (eshell/pwd))) + (defun bd/eshell-prompt () + "Return a prettified shell prompt." + (concat + (system-name) + (format " %s" (bd/get-prompt-path)) + " >\n")) + (setopt eshell-prompt-function 'bd/eshell-prompt + eshell-prompt-regexp (rx bol (eval (system-name)) (one-or-more anything) " >\n"))) + +(use-package eshell + :bind + (:map eshell-mode-map + ("<tab>" . #'completion-at-point)) + :config + (defun eshell/clear (&optional scrollback) + "Clear the eshell buffer and output the banner message." + (interactive) + (let ((inhibit-read-only t)) + (delete-all-overlays) + (set-text-properties (point-min) (point-max) nil) + (erase-buffer) + (eval eshell-banner-message))) + (defun eshell/c (&optional scrollback) + (eshell/clear scrollback)) + (defun eshell/o (file) + (interactive) + (find-file file)) + (setopt eshell-buffer-maximum-lines 7500)) + + +(use-package shell + :bind + (:map shell-mode-map + ("C-c C-k" . #'comint-clear-buffer)) + :config + (setopt shell-command-prompt-show-cwd t + shell-highlight-undef-enable t + shell-kill-buffer-on-exit t + comint-prompt-read-only t)) + + +(use-package proced + :defer t + :hook (proced-mode . + (lambda () + (visual-line-mode -1) + (toggle-truncate-lines 1) + (proced-toggle-auto-update 1))) + :config + (setopt proced-enable-color-flag t + proced-tree-flag t + proced-auto-update-flag 'visible + proced-auto-update-interval 3 + proced-descend t + proced-filter 'user)) + + +(provide 'bd--shells) +;;; bd--shells.el ends here |
