Я пытаюсь начать использовать eshell вместо bash в emacs, но я сильно полагаюсь на функции bash, которые я написал за эти годы.Я бы хотел настроить eshell для вызова bash всякий раз, когда возникает условие «команда не найдена», если рассматриваемая команда реализована как функция bash.
Существует переменная с дразнящим названием eshell-alternate-command-hook
, которая звучиткак будто это сделано на заказ, но мое отсутствие навыков elisp мешает моему успеху, я думаю.
Это мое лучшее усилие:
(add-hook 'eshell-alternate-command-hook 'invoke-bash t t)
(defun invoke-bash (command args)
(throw 'eshell-replace-command
(list "bash -c" command args)))
Но когда я проверяю это, это нене работает:
c:/temp $ lsd
Wrong number of arguments: (lambda (command args) (throw (quote eshell-replace-command) (list "bash -c" command args))), 1
c:/temp $