emacs: Added configuration for EShell, mainly prompt and path.
This commit is contained in:
parent
f61db0ceef
commit
319ff395d8
3 changed files with 68 additions and 0 deletions
66
emacs.d/init-eshell.el
Normal file
66
emacs.d/init-eshell.el
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
;; EShell configuration
|
||||||
|
|
||||||
|
(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)
|
||||||
|
|
||||||
|
;; EShell functions that come in handy
|
||||||
|
|
||||||
|
;; clear in eshell
|
||||||
|
(defun eshell/clear ()
|
||||||
|
"clear the eshell buffer."
|
||||||
|
(interactive)
|
||||||
|
(let ((inhibit-read-only t))
|
||||||
|
(erase-buffer)))
|
|
@ -6,6 +6,7 @@
|
||||||
;;; Code:
|
;;; Code:
|
||||||
|
|
||||||
(add-to-list 'exec-path "/usr/local/bin")
|
(add-to-list 'exec-path "/usr/local/bin")
|
||||||
|
(add-to-list 'exec-path (expand-file-name "~/bin"))
|
||||||
(add-to-list 'exec-path "/Applications/Racket/bin")
|
(add-to-list 'exec-path "/Applications/Racket/bin")
|
||||||
|
|
||||||
(when window-system
|
(when window-system
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
rainbow-delimiters
|
rainbow-delimiters
|
||||||
geiser
|
geiser
|
||||||
quack
|
quack
|
||||||
|
rainbow-mode
|
||||||
)
|
)
|
||||||
|
|
||||||
"A list of packages to install at launch.")
|
"A list of packages to install at launch.")
|
||||||
|
|
Loading…
Reference in a new issue