I am having some issue implementing a custom eshell prompt found here but I am having issue with icons. For some reason, I have not been able to get any of the icons using the unicode provided, most of them are blank. The faicon folder is showing a
| character instead of the
folder-o icon which is what the unicode is for. Is there a package I need to enable these icons?
(require 'dash) (require 's) (require 'cl) (require 'magit) (setq default-process-coding-system '(utf-8-unix . utf-8-unix)) (defmacro with-face (STR &rest PROPS) "Return STR propertized with PROPS." `(propertize ,STR 'face (list ,@PROPS))) (defmacro esh-section (NAME ICON FORM &rest PROPS) "Build eshell section NAME with ICON prepended to evaled FORM with PROPS." `(setq ,NAME (lambda () (when ,FORM (-> ,ICON (concat esh-section-delim ,FORM) (with-face ,@PROPS)))))) (defun esh-acc (acc x) "Accumulator for evaluating and concatenating esh-sections." (--if-let (funcall x) (if (s-blank? acc) it (concat acc esh-sep it)) acc)) (defun esh-prompt-func () "Build `eshell-prompt-function'" (concat esh-header (-reduce-from 'esh-acc "" eshell-funcs) "\n" eshell-prompt-string)) (esh-section esh-dir "\xf07c" ; (faicon folder) (abbreviate-file-name (eshell/pwd)) '(:foreground "gold" :bold ultra-bold :underline t)) (esh-section esh-git "\xe907" ; (git icon) (magit-get-current-branch) '(:foreground "pink")) (esh-section esh-clock "\xf017" ; (clock icon) (format-time-string "%H:%M" (current-time)) '(:foreground "forest green")) ;; Below I implement a "prompt number" section (setq esh-prompt-num 0) (add-hook 'eshell-exit-hook (lambda () (setq esh-prompt-num 0))) (advice-add 'eshell-send-input :before (lambda (&rest args) (setq esh-prompt-num (incf esh-prompt-num)))) (esh-section esh-num "\xf0c9" ; (list icon) (number-to-string esh-prompt-num) '(:foreground "brown")) ;; Separator between esh-sections (setq esh-sep " ") ; or " | " ;; Separator between an esh-section icon and form (setq esh-section-delim " ") ;; Eshell prompt header (setq esh-header "\n ") ; or "\n┌─" ;; Eshell prompt regexp and string. Unless you are varying the prompt by eg. ;; your login, these can be the same. (setq eshell-prompt-regexp " ") ; or "└─> " (setq eshell-prompt-string " ") ; or "└─> " ;; Choose which eshell-funcs to enable (setq eshell-funcs (list esh-dir esh-git esh-clock esh-num)) ;; Enable the new eshell prompt (setq eshell-prompt-function 'esh-prompt-func)