我想在emacs中開始使用eshell來代替bash,但是我非常依賴多年來我寫的bash函數。我想配置eshell來調用bash,只要有一個「command not found」條件發生,以防有問題的命令作爲bash函數實現。如何爲emacs定義一個替代命令eshell
有一個變量引人入勝地命名爲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 $
嘗試這樣的:https://gist.github.com/1903146,雖然我沒有嘗試過 –
謝謝,我看到,預測是退化和沒有必要的,雖然它似乎並沒有工作,當我用'讓'而不是'setq'。 (也許我做錯了) – wytten
奇怪的是,'let'不適合你。 'let'的主要目的是在本地環境中創建變量。在你的代碼中,因爲'invoke-bash-cmd'沒有在本地上下文中聲明,所以它將是全局變量 –