Emacs:默认帧列表设置被忽略

Posted

技术标签:

【中文标题】Emacs:默认帧列表设置被忽略【英文标题】:Emacs: default-frame-alist setting is ignored 【发布时间】:2013-05-08 00:28:49 【问题描述】:

我希望所有帧在(1,1) 处重叠。然而,.emacs 包含

(setq initial-frame-alist
      '((top . 1) (left . 1) (width . 80) (height . 55)))

(setq default-frame-alist
      '((top . 1) (left . 1) (width . 80) (height . 55)))

调用 C-x 5 2 会导致帧级联,如图所示。

如何强制所有帧都锚定在同一个位置?

我在 OS X (Mountain Lion) 上运行 Emacs 23.3.1。

【问题讨论】:

【参考方案1】:

这些设置不会被忽略。您看到上述行为的原因是由于 ns-win.el 中的 before-make-frame-hook 在顶部和左侧添加了 25。

为避免上述影响,您可以在 .emacs 文件中添加以下内容:

(setq default-frame-alist '((left . 0) (top . 0) (width . 80) (height . 55)))
(defvar parameters)
(add-hook 'before-make-frame-hook 
  (lambda ()
    (let ((left (cdr (assq 'left (frame-parameters))))
      (top (cdr (assq 'top (frame-parameters)))))
      (setq parameters (cons (cons 'left (+ left 0))
                     (cons (cons 'top (+ top 0))
                       parameters))))))

如果上述方法不起作用,您可以尝试以下来自ns-win.el before-make-frame-hook 的方法。

(setq default-frame-alist '((left . 0) (top . 0) (width . 80) (height . 55)))

(defvar parameters)
(add-hook 'before-make-frame-hook
  (lambda ()
    (let ((left (cdr (assq 'left (frame-parameters))))
          (top (cdr (assq 'top (frame-parameters)))))
      (if (consp left) (setq left (cadr left)))
      (if (consp top) (setq top (cadr top)))
      (cond
       ((or (assq 'top parameters) (assq 'left parameters)))
       ((or (not left) (not top)))
       (t
         (setq parameters (cons (cons 'left (+ left 0))
                   (cons (cons 'top (+ top 0))
                     parameters))))))))

【讨论】:

您的第二个建议解决了它。这才是最重要的。虽然这个巴洛克式的代码是必要的很奇怪。 (您的第一个建议对我不起作用。)谢谢! 第二部分取自ns-win.el代码,该文件中的代码有(+ left 25)(+ top 25),而不是0。有每次制作新框架的效果,它将顶部和左侧的值加 25。我相信这在 emacs24 中已更改为按预期运行。 您的两个解决方案中的任何一个都适用于 Emacs 23.4 和 Emacs 24.3。遗憾的是,两者都不适用于 24.4 的候选版本,目前是 24.3.91.1。最后一个确实处理了一些在 23.4/24.3 上不起作用的其他事情。虽然现在差异只有几个垂直 (y) 像素。 Emacs 24.4 的情况发生了很大变化,尽管这在 24.4 中对我有用:(set-frame-position (selected-frame) 0 0) 我也使用它来将 24.4 中的框架设置为我想要,并且也适用于 24.3.91:github.com/xmonk/emacs.d/blob/master/site-lisp/… 我不确定您指的是哪个 24.4。它既不是针对 OS X 也不是针对 Linux 发布的。在 24.3.91.1 上使用 .emacs 和 (set-frame-position (selected-frame) 0 0) (setq initial-frame-alist '((left-fringe . 0) (right-fringe . 0) (tool-bar -mode . nil) (top . 0) (left . 0))) (setq default-frame-alist '((left-fringe . 0) (right-fringe . 0) (tool-bar-mode . nil) ( top . 0) (left . 719))) 使 C-x 5 2 生成具有大 x 偏移的帧。

以上是关于Emacs:默认帧列表设置被忽略的主要内容,如果未能解决你的问题,请参考以下文章

关键帧中的非动画属性在 iOS 上被忽略

emacs 24 ansi-term 似乎忽略了主题颜色

Safari 忽略关键帧动画的内联样式

linux 下的svn怎么设置忽略文件

svn设置忽略文件为啥不管用

在 scikit 聚类算法中忽略 NaN 值