Emacs:如何级联所有新帧?

时间:2014-09-12 17:03:52

标签: emacs

我将我的Emacs默认新框架设置为

(setq default-frame-alist
      '((top . 150) (left . 400)
        (width . 120) (height . 50)))

有没有办法写一个函数来将每个新帧在顶部和左侧偏移5个单位,这样每个新帧都不会完美地叠加在一起?换句话说,我想级联所有新帧。

我的系统是带有Emacs 24.3.1的OS X

1 个答案:

答案 0 :(得分:4)

我建议您修改default-frame-alist中的before-make-frame-hook

(add-hook 'before-make-frame-hook 'cascade-default-frame-alist)
(defun cascade-default-frame-alist ()
  (setq default-frame-alist
        (mapcar (lambda (kv)
                  (if (memq (car kv) '(top left))
                      (cons (car kv) (+ 5 (cdr kv)))
                      kv))
                default-frame-alist)))

如果您想就地修改default-frame-alist,则需要create it with list instead of quote

(setq default-frame-alist (list (cons 'top 150) (cons 'left 400)
                                (cons 'width 120) (cons 'height 50)))
(defun cascade-default-frame-alist ()
  (dolist (kv default-frame-alist)
    (when (memq (car kv) '(top left))
      (setcdr kv (+ 5 (cdr kv))))))