blob: 2bbf4030a4c19b8a92d36fcb1deac85bfae2af90 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
;;; -*- 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/raven.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)
("C-l" . #'eshell/clear))
: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/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
|