blob: 59cebe62a50dba0f1f8e6644aa081e37d2ee4516 (
plain) (
blame)
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
|
;; EShell configuration
(require 'eshell)
(defvar home-dir)
(setq home-dir (expand-file-name "~"))
(setq eshell-path-env (concat
"/usr/local/bin:"
(concat home-dir "/bin:")
eshell-path-env))
;; Prompt configuration
(defun clean-pwd (path)
"Turns a path of the form /foo/bar/baz into /f/b/baz
(inspired by fish shell)"
(message path)
(let* ((current-dir (split-string path "/"))
(cdir (last current-dir))
(head (butlast current-dir)))
(concat (mapconcat (lambda (s)
(if (string= "" s) nil
(substring s 0 1)))
head
"/")
(if head "/" nil)
(car cdir))))
(setq eshell-pwd-convert-function
(lambda (path)
(clean-pwd (replace-regexp-in-string
home-dir
"~"
path))))
(defun vcprompt (&optional args)
"Call the external vcprompt command with optional arguments.
VCPrompt"
(replace-regexp-in-string
"\n" ""
(shell-command-to-string (concat "vcprompt" args))))
(defmacro with-face (str &rest properties)
`(propertize ,str 'face (list ,@properties)))
(defun prompt-f ()
"My EShell prompt displaying VC info and such"
(concat
(with-face (concat (eshell/pwd) " ") :foreground "#96a6c8")
(with-face (vcprompt " -f \"(%s:%b%a%m) \"") :foreground "#5f627f")
(if (= 0 (user-uid))
(with-face "#" :foreground "#f43841")
(with-face "$" :foreground "#73c936"))
(with-face " " :foreground "#95a99f")))
(setq eshell-prompt-function 'prompt-f)
(setq eshell-highlight-prompt nil)
(setq eshell-prompt-regexp "^.+? \\((\\(git\\|svn\\|hg\\|darcs\\|cvs\\|bzr\\):.+?) \\)?[$#] ")
;; EShell functions that come in handy
;; clear in eshell
(defun eshell/clear ()
"clear the eshell buffer."
(interactive)
(let ((inhibit-read-only t))
(erase-buffer)))
|