问题标签 [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.
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 正常启动,那么这一切都不会发生。
在这种情况下,鉴于我学到的所有这些信息,我想把我的问题改得更短一些:
为什么?
谢谢你 :)
emacs - 为什么 Emacs 服务器只在一个客户端上打开时说“缓冲区仍然有客户端”?
我有一个使用打开文件的客户端运行的 emacs 守护程序。我理解 Ck 背后的概念显示“缓冲区仍然有客户端”,但是为什么当缓冲区仅在一个客户端上打开时会发生这种情况(我只有一个客户端打开)?
emacs 守护进程是否将缓冲区的 emacs 服务器副本视为另一个客户端副本?
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:
emacs - 当我尝试关闭它时,emacsclient 抱怨文件未保存
我在守护程序模式下运行 emacs,并且通常打开多个 emacsclient 实例。每当我关闭一个客户端实例(使用C-x C-c
或save-buffers-kill-terminal
)时,系统都会提示我保存当前打开的所有文件,但没有意识到它们会在其他客户端上保持打开状态。有没有办法防止这种行为?
emacs - 启动 emacsclient 后 Alt-Tab 不切换窗口
我想在现有窗口的新缓冲区中的 shell 中打开 Emacs 中的新文件,所以我使用了emacsclient
.
启动后emacsclient
,它会按照我的意愿在新缓冲区中打开文件,但是Alt+Tab不起作用,我需要在顶部面板上单击鼠标才能进入另一个窗口。
有人知道如何解决这个问题吗?或者也许在没有的新缓冲区中打开新文件emacsclient
?
我正在使用 Ubuntu 11.10。
emacsclient
我正在使用的命令:
emacs - 使用 GNU Emacs 打开一个已经打开的文件
假设文件 A.txt 已经用 GNU-emacs 打开,但我没有注意到它,所以我尝试(再次)打开它
它不只是显示已经打开的窗口,而是打开第二个窗口!
(这当然很烦人,因为我最终会得到 2 个相互冲突的版本。)
我怎样才能避免这种情况(在ubuntu下)?
emacs - 在 emacs 中启动 emacsclient(就像 magit 一样)
我正在寻找在 shell 模式下启动 emacs 的方法,并且我希望客户端连接到封闭的 emacs 实例,因此我不需要切换到运行服务器的实例来编辑文件。
我觉得这是可行的,因为 magit 已经在做这样的事情:提交消息由 emacsclient 编辑,并且总是在封闭的实例中打开。我什至不需要显式启动服务器!
我的主要用途是从 shell 模式执行 git commit。我不能依赖 magit,因为我必须使用一些带有特殊命令的自定义 git 版本。无论如何,我认为这将是一件很酷的事情。
更新:
我在这里找到了可以解决问题的 magit 函数magit-with-emacsclient
:
https ://github.com/magit/magit/blob/master/magit.el#L1979
任何将函数转换为可以充当 git 的默认编辑器的 shell 脚本的帮助将不胜感激!如果我能让它工作,我也会尝试发布代码。
更新 2:
这是我的解决方案。它需要预先在套接字名称中使用 pid 启动服务器,然后将您设置$EDITOR
为emacsclient
连接到该服务器。
把它放在你的 init.el
并server-start-pid
在您的shell-mode
.
把这个脚本emacsclient-pid
放在你的PATH
. 它递归地查找父进程,直到找到 emacs 实例并emacsclient
在正确的套接字上调用:
把它放在你的.bashrc
bash - 如何从命令行启动 emacs,但如果服务器已经在运行,则使用 emacsclient?
我在 Ubuntu 下使用 emacs
如果我想编辑a.txt,那么我可以单击 emacs 图标或使用
来自 bash。我的 .emacs 文件启动 emacs 服务器。
如果我想从命令行编辑另一个文件,我使用
将文件加载到现有的 emacs 中。
但我一直弄错了,所有的地狱都以各种方式崩溃了。
我将如何制作一个 bash 命令' e ',检查 emacs 服务器是否已经在运行,并执行适当的命令?
尝试使用emacsclient -a
开关总是会产生不良和不确定的行为。
如果它在控制台上运行时也能“做正确的事”,那就加分。
emacs - 使用 Emacs 作为服务器,只打开一个窗口,应该最大化
我想以守护程序模式运行我的 Emacs,然后用于emacsclient
实际显示内容。但是,如果我运行emacsclient filename
,它会显示在终端中,这不是我想要的;相反,我必须将-c
选项传递给它。
但是,该选项总是会创建一个新框架,这不是我想要的——我宁愿只拥有一个框架,如果它已经存在,则在同一框架的新缓冲区中打开它;否则,它应该让我成为一个新框架。但是,我不确定如何执行此操作。
此外,我希望最大化一帧,我通常使用-mm
选项来实现我的启动 Emacs;我将如何确保制作的框架emacsclient
也最大化?
emacs - 如何使emacsclient在同一“框架”内的单独“窗口”中打开每个文件
我正在尝试从终端打开两个文件,在emacsclient中说“hello.txt”和“world.txt” ,我希望它们在两个不同的窗口中打开(就像 emacs 的意思一样)但在同一个框架。
我像这样调用emacsclient:
目前发生的是单个emacsclient框架显示一个显示 hello.txt 的窗口。另一个文件被打开到一个不可见的缓冲区中。
如果我改为使用emacs而不是emacsclient ,我会得到预期的结果(即两个文件在同一框架内但在两个窗口中打开)。如何使 emacsclient 的行为与 emacs 相同?
我不是在寻求使emacsclient生成多个帧的方法,而是在寻求某种方法使emacsclient在同一帧内的拆分窗口中打开多个文件。