我在 init.el 中添加了一个钩子,以便在eshell上启动Emacs。
;;start on eshell
(add-hook 'emacs-startup-hook 'eshell)
问题是,我经常从终端启动Emacs,并希望将eshell工作目录作为我启动Emacs的终端的工作目录。
让我们说我在目录X中,然后启动Emacs
~/X $ emacs
我希望这种情况发生
Welcome to the Emacs shell
~/X $
目前,我已添加
(cd "~")
到我的 init.el ,作为临时解决方案(将emacs路径更改为home),但这还不够好。
修改
我想在其gui中运行Emacs。
修改2
如果不使用open -a emacs
启动应用程序,Chris的答案就有效。但只是改为使用可执行路径。
答案 0 :(得分:2)
当函数display-graphic-p
返回nil
时,您可以检测到Emacs正在终端中运行,并且您可以从default-directory
变量获取从中调用Emacs的目录。
类似
(when (not (display-graphic-p))
(cd default-directory)
(eshell))
你的init中的应该更改为“当前”目录,然后在从终端调用Emacs时启动eshell
。
如果您始终希望调用eshell
,则应该可以从代码中删除(eshell)
,并保留emacs-startup-hook
。
修改:按this answer中的建议调用函数window-system
替换变量display-graphic-p
。
编辑2:如果您只想修改emacs-startup-hook
以更改为从中调用Emacs的目录,然后启动eshell
(无论窗口系统如何),你可以使用像
(add-hook 'emacs-startup-hook
(lambda ()
(cd default-directory)
(eshell)))