blob: da42443b9e83092fc87254efd63c18bd7366efe6 (
about) (
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
|
(require 'eshell)
(require 'shell-switcher)
(setq shell-switcher-mode t)
(add-hook 'eshell-mode-hook 'shell-switcher-manually-register-shell)
(setq eshell-history-size 10000)
;; author: KaiGrossjohann on EmacsWiki
(defun eshell/ff (&rest args)
"Invoke `find-file' on the file.
\"ff +42 foo\" also goes to line 42 in the buffer."
(while args
(if (string-match "\\`\\+\\([0-9]+\\)\\'" (car args))
(let* ((line (string-to-number (match-string 1 (pop args))))
(file (pop args)))
(find-file file)
(goto-line line))
(find-file (pop args)))))
;; convenience functions to input the remote root/home dir when in a
;; directory on a remote host
(defun my/tramp-root ()
"Print root directory on the remote host."
(interactive)
(let ((pieces (split-string (eshell/pwd) ":/")))
(insert-string (if (> (length pieces) 1)
(concat (car pieces) ":/")
"/"))))
(defun my/tramp-home ()
"Print home directory path on the remote host."
(interactive)
(let ((pieces (split-string (eshell/pwd) ":/")))
(insert-string (if (> (length pieces) 1)
(concat (car pieces) ":~/")
"~/"))))
(add-hook 'eshell-mode-hook
'(lambda () (define-key eshell-mode-map (kbd "C-c /") 'my/tramp-root)))
(add-hook 'eshell-mode-hook
'(lambda () (define-key eshell-mode-map (kbd "C-c ~") 'my/tramp-home)))
;; start a hidden eshell on startup
(add-hook 'emacs-startup-hook #'(lambda ()
(let ((default-directory (getenv "HOME")))
(command-execute 'eshell)
(bury-buffer))))
;; use cat as the pager in shell mode, because shell-mode is not an ANSI terminal
(setenv "PAGER" "cat")
|