mirror of
https://gitlab.com/dwt1/dotfiles.git
synced 2026-04-24 12:00:24 +10:00
Updating Doom Emacs.
This commit is contained in:
@@ -12,6 +12,10 @@
|
||||
"Where to store eshell configuration files, as opposed to
|
||||
`eshell-directory-name', which is where Doom will store temporary/data files.")
|
||||
|
||||
(defvar eshell-directory-name (concat doom-etc-dir "eshell")
|
||||
"Where to store temporary/data files, as opposed to `eshell-config-dir',
|
||||
which is where Doom will store eshell configuration files.")
|
||||
|
||||
(defvar +eshell-enable-new-shell-on-split t
|
||||
"If non-nil, spawn a new eshell session after splitting from an eshell
|
||||
buffer.")
|
||||
@@ -22,11 +26,13 @@ buffer.")
|
||||
(defvar +eshell-aliases
|
||||
'(("q" "exit") ; built-in
|
||||
("f" "find-file $1")
|
||||
("ff" "find-file $1")
|
||||
("d" "dired $1")
|
||||
("bd" "eshell-up $1")
|
||||
("rg" "rg --color=always $*")
|
||||
("l" "ls -lh")
|
||||
("ll" "ls -lah")
|
||||
("l" "ls -lh $*")
|
||||
("ll" "ls -lah $*")
|
||||
("gg" "magit-status")
|
||||
("clear" "clear-scrollback")) ; more sensible than default
|
||||
"An alist of default eshell aliases, meant to emulate useful shell utilities,
|
||||
like fasd and bd. Note that you may overwrite these in your
|
||||
@@ -35,20 +41,16 @@ to define your aliases.
|
||||
|
||||
You should use `set-eshell-alias!' to change this.")
|
||||
|
||||
;;
|
||||
(defvar eshell-directory-name (concat doom-etc-dir "eshell"))
|
||||
|
||||
;; These files are exceptions, because they may contain configuration
|
||||
(defvar eshell-aliases-file (concat +eshell-config-dir "aliases"))
|
||||
(defvar eshell-rc-script (concat +eshell-config-dir "profile"))
|
||||
(defvar eshell-login-script (concat +eshell-config-dir "login"))
|
||||
|
||||
|
||||
(defvar +eshell--default-aliases nil)
|
||||
|
||||
|
||||
;;
|
||||
;; Packages
|
||||
;;; Packages
|
||||
|
||||
(after! eshell ; built-in
|
||||
(setq eshell-banner-message
|
||||
@@ -116,10 +118,6 @@ You should use `set-eshell-alias!' to change this.")
|
||||
(append eshell-command-aliases-list
|
||||
+eshell-aliases))))
|
||||
|
||||
(when (featurep! :editor evil +everywhere)
|
||||
(advice-add #'evil-collection-eshell-next-prompt-on-insert
|
||||
:override #'+eshell-goto-prompt-on-insert-a))
|
||||
|
||||
(add-hook! 'eshell-first-time-mode-hook
|
||||
(defun +eshell-init-keymap-h ()
|
||||
;; Keys must be bound in a hook because eshell resets its keymap every
|
||||
@@ -132,9 +130,13 @@ You should use `set-eshell-alias!' to change this.")
|
||||
:n "C" #'+eshell/evil-change-line
|
||||
:n "d" #'+eshell/evil-delete
|
||||
:n "D" #'+eshell/evil-delete-line
|
||||
:ni "C-j" #'eshell-next-matching-input-from-input
|
||||
:ni "C-k" #'eshell-previous-matching-input-from-input
|
||||
:ig "C-d" #'+eshell/quit-or-delete-char
|
||||
"TAB" #'+eshell/pcomplete
|
||||
[tab] #'+eshell/pcomplete
|
||||
:i "C-c h" #'evil-window-left
|
||||
:i "C-c j" #'evil-window-down
|
||||
:i "C-c k" #'evil-window-up
|
||||
:i "C-c l" #'evil-window-right
|
||||
"C-s" #'+eshell/search-history
|
||||
;; Emacs bindings
|
||||
"C-e" #'end-of-line
|
||||
@@ -142,24 +144,17 @@ You should use `set-eshell-alias!' to change this.")
|
||||
"C-c s" #'+eshell/split-below
|
||||
"C-c v" #'+eshell/split-right
|
||||
"C-c x" #'+eshell/kill-and-close
|
||||
"C-c h" #'windmove-left
|
||||
"C-c j" #'windmove-down
|
||||
"C-c k" #'windmove-up
|
||||
"C-c l" #'windmove-right
|
||||
[remap split-window-below] #'+eshell/split-below
|
||||
[remap split-window-right] #'+eshell/split-right
|
||||
[remap doom/backward-to-bol-or-indent] #'eshell-bol
|
||||
[remap doom/backward-kill-to-bol-and-indent] #'eshell-kill-input
|
||||
[remap evil-delete-back-to-indentation] #'eshell-kill-input
|
||||
[remap evil-window-split] #'+eshell/split-below
|
||||
[remap evil-window-vsplit] #'+eshell/split-right)))
|
||||
(add-hook! 'eshell-mode-hook
|
||||
(defun +eshell-init-company-h ()
|
||||
(when (featurep! :completion company)
|
||||
(company-mode +1)
|
||||
(setq-local company-backends '(company-pcomplete))
|
||||
(setq-local company-frontends (cons 'company-tng-frontend company-frontends))
|
||||
(when (bound-and-true-p evil-local-mode)
|
||||
(evil-normalize-keymaps))))))
|
||||
[remap evil-window-vsplit] #'+eshell/split-right
|
||||
(:localleader
|
||||
"b" #'eshell-insert-buffer-name
|
||||
"e" #'eshell-insert-envvar
|
||||
"s" #'+eshell/search-history)))))
|
||||
|
||||
|
||||
(use-package! eshell-up
|
||||
@@ -178,3 +173,28 @@ You should use `set-eshell-alias!' to change this.")
|
||||
(use-package! esh-help
|
||||
:after eshell
|
||||
:config (setup-esh-help-eldoc))
|
||||
|
||||
|
||||
(use-package! eshell-did-you-mean
|
||||
:after esh-mode ; Specifically esh-mode, not eshell
|
||||
:config
|
||||
(eshell-did-you-mean-setup)
|
||||
;; HACK There is a known issue with `eshell-did-you-mean' where it does not
|
||||
;; work on first invocation, so we invoke it once manually by setting the
|
||||
;; last command and then calling the output filter.
|
||||
(setq eshell-last-command-name "catt")
|
||||
(eshell-did-you-mean-output-filter "catt: command not found"))
|
||||
|
||||
|
||||
(use-package! fish-completion
|
||||
:unless IS-WINDOWS
|
||||
:hook (eshell-mode . fish-completion-mode)
|
||||
:init (setq fish-completion-fallback-on-bash-p t)
|
||||
:config
|
||||
;; HACK Even with `fish-completion-fallback-on-bash-p' non-nil,
|
||||
;; `fish-completion--list-completions-with-desc' will throw an error if
|
||||
;; fish isn't installed (and so, will fail to fall back to bash), so we
|
||||
;; advise it to fail silently.
|
||||
(defadvice! +eshell--fallback-to-bash-a (&rest _)
|
||||
:before-until #'fish-completion--list-completions-with-desc
|
||||
(unless (executable-find "fish") "")))
|
||||
|
||||
Reference in New Issue
Block a user