问题标签 [emacsclient]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
700 浏览

emacs - emacs 守护进程会忽略普通 emacs 不会忽略的设置(工具栏模式 -1)

如果我运行 emacs,工具栏不会出现并接受我的设置:(tool-bar-mode -1)

没有任何问题。

如果我运行:

emacsclient -c -a ' '

(如果没有运行 emacs 守护程序,则启动 emacs 客户端并启动 emacs --daemon)

然后出现工具栏,我必须通过手动禁用它

Mx RET 工具栏模式 RET Mx RET 工具栏模式 RET

我不知道为什么我做了一次后必须做两次,它告诉我工具栏模式已启用(但它已经启用了?)然后第二次成功禁用它。

我真的不认为该设置被忽略了,我认为我的预期加载顺序~/.emacs.d/init.el被打乱了,因为 emacs 中守护程序功能的设计中存在某些问题。

我不知道那到底是什么,而且我不是来修复 emacs 本身的。我只想承认这个问题,并且能够处理它。

任何帮助将非常感激。

ps - 我最近开始使用package.el,所以我认为它可能与它有关。向我询问您需要知道的任何信息以帮助我解决此问题。

谢谢你。

编辑:(没有错,虽然我解决了这个问题,但我仍然认为这个问题没有解决,因为我还有一个问题)

我通过以下方式解决了这个问题

并将其移动到我的 init.el 上的最后一件事

因为我实际上不想破坏我的 init.el 雄伟的命令和设计,所以我在它所在的位置和开始工作的位置之间移动了这条线,缩小了差距,直到我找到了一条有问题的线:

出于某种原因,如果:

provided此行之前:

emacs 正在以守护程序模式启动

然后:

该行将被忽略,因为 tool-bar-mode 实际上被标记为禁用(因为 Mx RET too-bar-mode 据说是第一次启用它)并且同时 tool-bar-mode 物理启用.

如果 emacs 正常启动,那么这一切都不会发生。

在这种情况下,鉴于我学到的所有这些信息,我想把我的问题改得更短一些:

为什么?

谢谢你 :)

0 投票
2 回答
1011 浏览

emacs - 为什么 Emacs 服务器只在一个客户端上打开时说“缓冲区仍然有客户端”?

我有一个使用打开文件的客户端运行的 emacs 守护程序。我理解 Ck 背后的概念显示“缓冲区仍然有客户端”,但是为什么当缓冲区仅在一个客户端上打开时会发生这种情况(我只有一个客户端打开)?

emacs 守护进程是否将缓冲区的 emacs 服务器副本视为另一个客户端副本?

0 投票
1 回答
1285 浏览

emacs - 当 emacs 以守护程序模式启动时,如何在通过 X11 或终端连接时自动加载正确的初始化设置?

我最近开始在启动时以守护程序模式运行 emacs。通过 GUI 客户端 (Emacs.app) 连接似乎可以正确加载自定义。但是,emacsclient在终端中通过连接没有。

尝试M-x customize-variable在终端中出现以下症状后出现了第一个症状:

无法保存自定义:初始化文件未完全加载

这可能与根据 thisemacs --daemon忽略所有与 X11 相关的选项有关。尽管在我的情况下会出现,而不是忽略与 X11 相关的选项,emacsclient 无法加载后续选项。

在研究了问题和可能的解决方案后,我无法确定解决此问题的防弹方法。我已经看到了创建不同的初始化文件和相应的 bash 别名的建议,emacsclient --eval每次想要在终端中打开 emacs 缓冲区时将其传递给它。我还看到其他人在他们的主初始化文件中使用 if-else 语句来处理与 X11 相关的选项。但在走上一条或另一条路之前,我想知道是否有一种规范的方式来处理这个我以某种方式忽略的(或者我是否只是在某个地方犯了错误)。

建议,批评,提示将不胜感激。

编辑添加
* GNU Emacs 24.3.1
* emacsclient 24.3
* 都在 OS X 10.9 上安装了 homebrew

这是 LaunchAgent:

以下是点文件配置:

有时我也喜欢在 tmux 中启动 emacs:

0 投票
1 回答
67 浏览

emacs - 当我尝试关闭它时,emacsclient 抱怨文件未保存

我在守护程序模式下运行 emacs,并且通常打开多个 emacsclient 实例。每当我关闭一个客户端实例(使用C-x C-csave-buffers-kill-terminal)时,系统都会提示我保存当前打开的所有文件,但没有意识到它们会在其他客户端上保持打开状态。有没有办法防止这种行为?

0 投票
0 回答
246 浏览

emacs - 启动 emacsclient 后 Alt-Tab 不切换窗口

我想在现有窗口的新缓冲区中的 shell 中打开 Emacs 中的新文件,所以我使用了emacsclient.

启动后emacsclient,它会按照我的意愿在新缓冲区中打开文件,但是Alt+Tab不起作用,我需要在顶部面板上单击鼠标才能进入另一个窗口。

有人知道如何解决这个问题吗?或者也许在没有的新缓冲区中打开新文件emacsclient

我正在使用 Ubuntu 11.10。

emacsclient我正在使用的命令:

0 投票
1 回答
231 浏览

emacs - 使用 GNU Emacs 打开一个已经打开的文件

假设文件 A.txt 已经用 GNU-emacs 打开,但我没有注意到它,所以我尝试(再次)打开它

它不只是显示已经打开的窗口,而是打开第二个窗口!

(这当然很烦人,因为我最终会得到 2 个相互冲突的版本。)

我怎样才能避免这种情况(在ubuntu下)?

0 投票
1 回答
1030 浏览

emacs - 在 emacs 中启动 emacsclient(就像 magit 一样)

我正在寻找在 shell 模式下启动 emacs 的方法,并且我希望客户端连接到封闭的 emacs 实例,因此我不需要切换到运行服务器的实例来编辑文件。

我觉得这是可行的,因为 magit 已经在做这样的事情:提交消息由 emacsclient 编辑,并且总是在封闭的实例中打开。我什至不需要显式启动服务器!

我的主要用途是从 shell 模式执行 git commit。我不能依赖 magit,因为我必须使用一些带有特殊命令的自定义 git 版本。无论如何,我认为这将是一件很酷的事情。

更新:

我在这里找到了可以解决问题的 magit 函数magit-with-emacsclienthttps ://github.com/magit/magit/blob/master/magit.el#L1979

任何将函数转换为可以充当 git 的默认编辑器的 shell 脚本的帮助将不胜感激!如果我能让它工作,我也会尝试发布代码。

更新 2:

这是我的解决方案。它需要预先在套接字名称中使用 pid 启动服务器,然后将您设置$EDITORemacsclient连接到该服务器。

把它放在你的 init.el

server-start-pid在您的shell-mode.

把这个脚本emacsclient-pid放在你的PATH. 它递归地查找父进程,直到找到 emacs 实例并emacsclient在正确的套接字上调用:

把它放在你的.bashrc

0 投票
1 回答
430 浏览

bash - 如何从命令行启动 emacs,但如果服务器已经在运行,则使用 emacsclient?

我在 Ubuntu 下使用 emacs

如果我想编辑a.txt,那么我可以单击 emacs 图标或使用

来自 bash。我的 .emacs 文件启动 emacs 服务器。

如果我想从命令行编辑另一个文件,我使用

将文件加载到现有的 emacs 中。

但我一直弄错了,所有的地狱都以各种方式崩溃了。

我将如何制作一个 bash 命令' e ',检查 emacs 服务器是否已经在运行,并执行适当的命令?

尝试使用emacsclient -a开关总是会产生不良和不确定的行为。

如果它在控制台上运行时也能“做正确的事”,那就加分。

0 投票
3 回答
1749 浏览

emacs - 使用 Emacs 作为服务器,只打开一个窗口,应该最大化

我想以守护程序模式运行我的 Emacs,然后用于emacsclient实际显示内容。但是,如果我运行emacsclient filename,它会显示在终端中,这不是我想要的;相反,我必须将-c选项传递给它。

但是,该选项总是会创建一个新框架,这不是我想要的——我宁愿只拥有一个框架,如果它已经存在,则在同一框架的新缓冲区中打开它;否则,它应该让我成为一个新框架。但是,我不确定如何执行此操作。

此外,我希望最大化一帧,我通常使用-mm选项来实现我的启动 Emacs;我将如何确保制作的框架emacsclient也最大化?

0 投票
3 回答
1449 浏览

emacs - 如何使emacsclient在同一“框架”内的单独“窗口”中打开每个文件

我正在尝试从终端打开两个文件,在emacsclient中说“hello.txt”和“world.txt” ,我希望它们在两个不同的窗口中打开(就像 emacs 的意思一样)但在同一个框架

我像这样调用emacsclient

目前发生的是单个emacsclient框架显示一个显示 hello.txt 的窗口。另一个文件被打开到一个不可见的缓冲区中。

如果我改为使用emacs而不是emacsclient ,我会得到预期的结果(即两个文件在同一框架内但在两个窗口中打开)。如何使 emacsclient 的行为与 emacs 相同?

我不是在寻求使emacsclient生成多个帧的方法,而是在寻求某种方法使emacsclient在同一帧内的拆分窗口中打开多个文件。