ediffでフレームを作成しない


14

一般的に、私はフレームが嫌いです。今、私は使っています

(setq ediff-window-setup-function #'ediff-setup-windows-plain)

ediff開始時にフレームが作成されないようにするため。

ただし、ediff-show-registry新しいフレームを開くようなコマンドもあります。

フレームの作成を完全に無効にする方法はありますediffか?


ediff-skip-unsuitable-framesそれを完全に修正するかediff-show-registry、コメントアウトしてみてください(ediff-skip-unsuitable-frames 'ok-unsplittable)。たとえば、コメントアウトします か?
ローリスト

5
そこにいる間にediff、ライブラリファミリの ソースを検索することを検討して(make-frameください。あなたの好みに合わせて修正が必要な場所がいくつか見つかります。あなたの要求は確かに合理的である、と(私の意見では)著者および/またはEmacsのチームへの機能要求に値するだろう-ほとんどの人が前提となりediff-setup-windows-plain、様々なずに一律に適用されるべきmake-frame例外を。
法律家

回答:


3

ediff-init.elと呼ばれる内部述語がありediff-window-display-pます。そのように(もちろんediffを読み込んだ後)再定義すると、問題として言及した機能を含め、すべてが1つのフレームで機能します。

(defun ediff-window-display-p () nil)

@lawlistには、これが素晴らしい機能のリクエストであることに同意しますediff-window-setup-function


2
これはより良く書かれている可能性があり(advice-add 'ediff-window-display-p :override #'ignore)、より簡単に元に戻すことができますadvice-remove(さらに、最初にediffをロードする必要はありません)。
npostavs

@npostavs素晴らしい!よりスマートなコードをありがとう!
cyberbisson

私はこれを試しましたが、残念ながらediffがカスタムウィンドウセットアップ機能の使用を停止しました。
tboyce12

@ tboyce12それは紛らわしい...新しいウィンドウ(フレーム)を表示したくないのに、なぜカスタムウィンドウ設定機能があるのですか?関数は何をしますか?
-cyberbisson

新しいウィンドウが必要ですが、新しいフレームは必要ありません。デフォルトediff-setup-windows-plainはフレーム全体を引き継ぎます-「コンテキスト」ウィンドウを開いたままにしておきたい(メモやその他のファイルなど)。そこで、カスタムウィンドウセットアップ関数を作成しました(ace-windowを搭載したカスタム表示バッファーを使用して、ウィンドウを分割して新しいバッファーを表示する場所を選択します)。Ediffの起動時にこれをチェックしediff-window-display-p、falseの場合、カスタムウィンドウセットアップ機能をバイパスしてを使用しているようediff-setup-windows-plainです。したがって、カスタムセットアップでは、を避けるかediff-show-registry、カスタムコマンドを記述します。
tboyce12
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.