84 lines
2.6 KiB
EmacsLisp
84 lines
2.6 KiB
EmacsLisp
;;; eshell.el --- eshell-specific configuration -*- lexical-binding: t; -*-
|
|
|
|
;; Copyright (C) 2021 Case Duckworth
|
|
|
|
;; Author: Case Duckworth <(rot13-string "npqj@npqj.arg")>
|
|
|
|
;;; Commentary:
|
|
|
|
;; Much like ~/.emacs.d/gnus.el, this is eshell-specific configuration that's
|
|
;; loaded whenever `eshell' is loaded.
|
|
|
|
;;; Code:
|
|
|
|
(require 'setup)
|
|
(require 'eshell)
|
|
(require 'em-alias)
|
|
|
|
;;; Environment
|
|
(setenv "PAGER" "cat")
|
|
|
|
;;; Aliases
|
|
|
|
(dolist (definition '(("e" . "find-file $1")
|
|
("ff" . "find-file $1")
|
|
("emacs" . "find-file $1")
|
|
("ee" . "find-file-other-window $1")))
|
|
(cl-letf (((symbol-function 'eshell-write-aliases-list) #'ignore))
|
|
(eshell/alias (car definition) (cdr definition))))
|
|
(eshell-write-aliases-list)
|
|
|
|
;;; Functions
|
|
|
|
;; https://karthinks.com/software/jumping-directories-in-eshell/
|
|
(defun eshell/z (&optional regexp)
|
|
"Navigate to a previously visited directory in eshell, or to
|
|
any directory proferred by `consult-dir'."
|
|
(let ((eshell-dirs (delete-dups
|
|
(mapcar 'abbreviate-file-name
|
|
(ring-elements eshell-last-dir-ring)))))
|
|
(cond
|
|
((and (not regexp) (featurep 'consult-dir))
|
|
(let* ((consult-dir--source-eshell `(:name "Eshell"
|
|
:narrow ?e
|
|
:category file
|
|
:face consult-file
|
|
:items ,eshell-dirs))
|
|
(consult-dir-sources (cons consult-dir--source-eshell
|
|
consult-dir-sources)))
|
|
(eshell/cd (substring-no-properties
|
|
(consult-dir--pick "Switch directory: ")))))
|
|
(t (eshell/cd (if regexp (eshell-find-previous-directory regexp)
|
|
(completing-read "cd: " eshell-dirs)))))))
|
|
|
|
;;; Extra eshell packages
|
|
|
|
(setup (:straight esh-autosuggest)
|
|
(:hook-into eshell-mode))
|
|
|
|
(setup (:straight eshell-syntax-highlighting)
|
|
(eshell-syntax-highlighting-global-mode +1))
|
|
|
|
(setup (:straight-when fish-completion
|
|
(executable-find "fish"))
|
|
(:autoload global-fish-completion-mode)
|
|
(global-fish-completion-mode +1))
|
|
|
|
(setup (:straight-when eshell-vterm
|
|
(require 'vterm nil :noerror))
|
|
(eshell-vterm-mode +1)
|
|
(defalias 'eshell/v 'eshell-exec-visual))
|
|
|
|
;;; Miscellaneous
|
|
|
|
;; Fix modeline
|
|
(when (boundp 'simple-modeline--mode-line)
|
|
(setq mode-line-format '(:eval simple-modeline--mode-line)))
|
|
|
|
(provide 'eshellrc)
|
|
;;; eshell.el ends here
|
|
|
|
;; Local Variables:
|
|
;; flymake-inhibit: t
|
|
;; End:
|