summaryrefslogtreecommitdiff
path: root/.config/emacs/bd-shells.el
blob: c6e672221c9196d6c042a602f3c1e8a7f281840e (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
;; -*- lexical-binding: t; -*-


(defun eshell-open-buffer ()
  "Opens eshell in the bottom
side window."
  (interactive)
  (let ((curr-buffer (current-buffer))
        (eshell (eshell)))
    (switch-to-buffer curr-buffer)
    (display-buffer-in-side-window (get-buffer eshell)  '((side . top)))
    (switch-to-buffer-other-window eshell)))

(defun bd/get-prompt-path ()
  (abbreviate-file-name (eshell/pwd)))

(defun bd/eshell-prompt ()
  "Assemble a shell prompt including host, git
status, and path."
  (let ((current-branch (magit-get-current-branch)))
    (concat
     "\n"
     (propertize (system-name) 'face `(:foreground "#edb54b"))
     (when current-branch
       (concat
        (format " %s " (all-the-icons-octicon "git-branch"))
        (propertize current-branch 'face `(:foreground "#98d1ce"))))
     (format " %s " (all-the-icons-fileicon "gn"))
     (propertize (bd/get-prompt-path) 'face `(:foreground "#33859d"))
     (propertize (format-time-string " %a, %R") 'face `(:foreground "#888ba5"))
     (propertize "\n> " 'face `(:foreground "#c33027")))))

(use-package eshell
  :init
  :bind (("C-z C-e" . 'eshell-open-buffer)
         :map eshell-mode-map
         ("C-q" . 'delete-window) ; mostly for side window
         ("<tab>" . completion-at-point))
  :config
  (eshell/addpath ~/Personal/scripts/)
  :custom
  (eshell-prompt-function 'bd/eshell-prompt)
  (eshell-prompt-regexp "^> ")
  (eshell-scroll-to-bottom-on-input 'this)
  (eshell-banner-message (concat "\n" (propertize " " 'display (create-image (expand-file-name "~/.config/emacs/images/raven.png") 'png nil :scale 0.2 :align-to "center")) "\n")))


(use-package term
  :config
  (defalias 'term 'ansi-term))