Emacs的:默认帧ALIST设置被忽略(Emacs: default-frame-alist se

2019-09-02 05:05发布

我想所有帧的重叠(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)))

调用CX 5 2分的结果帧级联,正如你在图中看到。

我怎么可以强制所有帧在相同的地方被锚定?

我运行的Emacs在OS X(山狮)23.3.1。

Answer 1:

设置不会被忽略。 你看到上述行为的原因是由于before-make-frame-hook在NS-win.el,增加了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))))))))


文章来源: Emacs: default-frame-alist setting is ignored