3

すべてのフレームを でオーバーラップさせたいのですが(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、図に示すようにカスケード内のフレームが生成されます。

emacs-frames

すべてのフレームを同じ場所に固定するにはどうすればよいですか?

OS X (Mountain Lion) でEmacs 23.3.1 を実行しています。

4

1 に答える 1

4

設定は無視されていません。上記の動作が見られる理由は、before-make-frame-hook上と左に 25 を追加する ns-win.el が原因です。

上記の影響を回避するには、以下を .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))))))))
于 2013-05-11T12:43:44.823 に答える