首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用cwd从终端启动emacs时启动eshell

用cwd从终端启动emacs时启动eshell
EN

Stack Overflow用户
提问于 2014-05-22 17:31:15
回答 1查看 757关注 0票数 0

我在我的init.el上添加了一个钩子,将Emacs发布在eshell上。

代码语言:javascript
复制
;;start on eshell
(add-hook 'emacs-startup-hook 'eshell)

问题是,我经常从终端上启动Emacs,并且希望将eshell目录作为我启动Emacs的终端的工作目录。

假设我在目录X中,然后启动Emacs

代码语言:javascript
复制
~/X $ emacs

我想让这一切发生

代码语言:javascript
复制
Welcome to the Emacs shell
~/X $ 

现在,我补充说

代码语言:javascript
复制
(cd "~")

对于我的init.el,作为一个临时的解决方案(改变emacs的回家路径),但是它还不够好。

编辑

我想在它的gui里运行Emacs。

编辑2

如果不使用open -a emacs启动应用程序,克里斯的答案就会奏效。而是只使用可执行路径。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-22 18:13:19

当函数display-graphic-p返回nil时,可以检测到Emacs正在终端中运行,并且可以从default-directory变量中获取调用Emacs的目录。

所以就像

代码语言:javascript
复制
(when (not (display-graphic-p))
  (cd default-directory)
  (eshell))

在init中,应该更改为“当前”目录,然后在从终端调用Emacs时启动eshell

如果您总是希望调用eshell,那么您应该能够从代码中删除(eshell),只需保留emacs-startup-hook即可。

编辑:用调用函数display-graphic-p代替了变量window-system,这在this answer中是推荐的。

编辑2:如果您只想修改您的emacs-startup-hook以更改到您调用Emacs的任何目录,然后启动eshell (不管窗口系统如何),您可以使用以下内容

代码语言:javascript
复制
(add-hook 'emacs-startup-hook
          (lambda ()
            (cd default-directory)
            (eshell)))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23813584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档