使用Emacs作为服务器并且只打开一个窗口,应该最大化
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Emacs作为服务器并且只打开一个窗口,应该最大化相关的知识,希望对你有一定的参考价值。
我想在守护进程模式下运行我的Emacs,然后使用emacsclient
来实际显示内容。但是,如果我运行emacsclient filename
,它会显示在终端中,这不是我想要的;我不得不传递-c
选项。
但是,该选项总是创建一个新帧,这不是我想要的 - 我宁愿只有一个帧,并且如果它已经存在,则在同一帧中的新缓冲区中打开东西;否则,它应该让我成为一个新的框架。但是,我不知道该怎么做。
另外,我希望最大化一个帧,我通常使用-mm
选项实现我的起始Emacs;我如何确保emacsclient
制作的框架也最大化?
答案
为了使每个新帧最大化,您可以将其添加到.emacs:
(modify-all-frames-parameters '((fullscreen . maximized))))
另一答案
以下脚本执行以下操作:
- 必要时启动Emacs服务器
- 如果没有开放框架,请打开一个新框架
- 打开当前帧中的给定文件
#!/bin/bash
# Selected options for "emacsclient"
#
# -c Create a new frame instead of trying to use the current
# Emacs frame.
#
# -e Evaluate the FILE arguments as ELisp expressions.
#
# -n Don't wait for the server to return.
#
# -t Open a new Emacs frame on the current terminal.
#
# Note that the "-t" and "-n" options are contradictory: "-t" says to
# take control of the current text terminal to create a new client frame,
# while "-n" says not to take control of the text terminal. If you
# supply both options, Emacs visits the specified files(s) in an existing
# frame rather than a new client frame, negating the effect of "-t".
# check whether an Emacs server is already running
pgrep -l "^emacs$" > /dev/null
# otherwise, start Emacs server daemon
if [ $? -ne 0 ]; then
emacs --daemon
fi
# return a list of all frames on $DISPLAY
emacsclient -e "(frames-on-display-list \"$DISPLAY\")" &>/dev/null
# open frames detected, so open files in current frame
if [ $? -eq 0 ]; then
emacsclient -n -t "$@"
# no open frames detected, so open new frame
else
emacsclient -n -c "$@"
fi
编辑:固定扩展位置参数(2017-12-31)。
另一答案
您的DISPLAY环境是否设置在运行emacsclient的终端中?因为您请求的行为应该是默认行为(重用现有帧的行为,我的意思是)。
以上是关于使用Emacs作为服务器并且只打开一个窗口,应该最大化的主要内容,如果未能解决你的问题,请参考以下文章