gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 11:51:51 25 4
gpt4 key购买 nike

我想在守护进程模式下运行我的 Emacs,然后使用 emacsclient实际展示的东西。但是,如果我运行 emacsclient filename ,它出现在终端中,这不是我想要的;相反,我必须将它传递给 -c选项。

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

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

最佳答案

以下脚本执行以下操作:

  • 必要时启动 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)。

    关于emacs - 使用Emacs作为服务器,只打开一个窗口,应该最大化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25029877/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com