在Emacs中以特定宽度设置连续的新帧

时间:2018-10-14 07:16:41

标签: emacs dot-emacs

我的init.el文件中有以下内容

(if (display-graphic-p)
    (progn
      (setq initial-frame-alist
            '((tool-bar-lines . 0)
              (width . 106) ; chars
              (height . 60) ; lines
              (left . 50)
              (top . 50)))
      (setq default-frame-alist
            '((tool-bar-lines . 0)
              (width . 106)
              (height . 60)
              (left . 50)
              (top . 50))))
  (progn
    (setq initial-frame-alist '((tool-bar-lines . 0)))
    (setq default-frame-alist '((tool-bar-lines . 0)))))

我是emacs的新手,想知道如何使每个连续的新帧都打开(上一个帧为左+ 10)。

我希望每次使用C-x 5 2打开新框架时都可以直观地看到所有框架。使用init.el中的当前设置,新帧会与前一帧重叠。

1 个答案:

答案 0 :(得分:1)

我认为这里的简单方法是直接创建框架emacs将在变量之后创建框架:

ELISP> initial-frame-alist
((fullscreen . maximized)
 (left-fringe . 10)
 (right-fringe . 0))

我在init.el上有这个

;; Default frame size
(add-to-list 'initial-frame-alist '(fullscreen . maximized))

我也使用边缘模式

;; Turn on the left fringe
(set-fringe-mode '(10 . 0)) ;; 10px left, 0px right

所以这是我对emacs的初始设置,然后当我需要一个新框架时,按C-x 5-2,对emacs放置位置没有任何问题。但是如果需要,可以创建它。我建议您尝试使用ielm(M-x ielm)和框架:

首先创建框架制作框架的功能:

ELISP> (make-frame)
#<frame Emacs 0x1158fc150>
ELISP> 

这将完全按照C-x 5-2创建和创建emacs框架

让我们移动此框架:

ELISP> (set-frame-position nil 50 50)
t

moving frames

现在让我们研究一下make-frame函数(C-h f):

  

(框架和可选参数)

     

返回一个新创建的显示当前缓冲区的帧。可选的   参数PARAMETERS是新框架的框架参数列表。   参数的每个元素都应采用(NAME。VALUE)的形式,   例如:

     

(名称。STRING)框架应命名为STRING。

     

(width。NUMBER)框架的宽度应为NUMBER个字符。   (高度。NUMBER)框架的高度应为NUMBER个文本行。

     

(minibuffer。t)帧应该有一个minibuffer。 (minibuffer。   nil)帧应该没有小缓冲区。 (仅限minibuffer)   帧应仅包含一个小型缓冲区。 (minibuffer。窗口)   框架应使用WINDOW作为其迷你缓冲区窗口。

     

(window-system。nil)该帧应显示在终端上   设备。 (窗口系统。x)框架应显示为X   窗口。

     

(显示“ 0”)。框架应出现在显示:0上。

     

(terminal。TERMINAL)框架应使用终端对象   终端。

     

此外,“ default-frame-alist”中指定的任何参数,但不是   出现在“参数”中。

     

在创建框架之前(通过“ frame-creation-function”)   函数运行钩子“ before-make-frame-hook”。创建完之后   框架,它通过一个钩子运行“ after-make-frame-functions”   参数,新创建的框架。

     

如果提供了显示参数,而没有提供窗口系统,请猜测   显示屏上的窗口系统。

     

在图形显示中,此功能本身并不能使新功能   框住选定的框。但是,窗口系统可以选择   根据自己的规则创建新框架。

我们在这里无法找到真实的信息,而是在查看源文件的同时检查了该函数:我们发现框架具有以下参数:top', left',width', height',{{1} }用户位置”参数。

因此,我们可以在创建新框架时指定这4件事,现在我们正要只采取位置(这也取决于您的窗口管理器,像素以及放置方式)

user-size' and

您会得到的:

frmaes

(让我们使用