emacs フレームがレンダリングされた直後にコマンドを実行するにはどうすればよいですか?
質問
私は Emacs コード ブラウザ (ECB) の使用方法を見つけようとしています。ECB でできることの 1 つは、ecb-windows-width を設定して ECB ウィンドウの幅を決定することです。問題はこの一連の流れです。
- フレームが画面上にポップアップ表示されます。
- ecb-activate が呼び出され、ecb-windows-width に従ってスケーリングされます。
- default-frame-alist パラメータが有効になり、フレームのサイズが変更されます。
問題は、この順序により、フレームのサイズが変更される前に ECB ウィンドウの幅が設定され、その後スケーリングされないことです。
したがって、ecb-redraw-layout (または理想的には単に ecb-activate) を実行したいのですが、これは #3 の後に実行する必要があります。それ以外の場合は、何らかの ecb-dynamic-width-scale オプションも機能します。
実際のところ、ecb-auto-activate は機能しないため、それが解決するかどうかはわかりません。
解決
どうやら回避策が見つかったようだ。
- ecb-fix-window-size を true に設定します。
- フレームがロードされると、ecb-activate が呼び出され、ecb ウィンドウがフレーム サイズに比例して拡大縮小されます。
- 次に、default-frame-alist が開始され、フレームのサイズが変更されますが、ecb ウィンドウのサイズは固定されており、拡大縮小されません。
実際に使用するサイズではなく、最初に表示されるデフォルトのフレームサイズに従って幅を設定しているため、かなりハック的です。でもまあ。
他のヒント
ECBについては詳しくないのですが、 after-make-frame-functions
必要な関数を実行する場合 (または、ecb フレームで特別な処理を行うフック関数を実行する場合) に役立つ場合があります。
after-make-frame-functions
を受け取る関数のリストです 1つ 引数 (新しく作成されたフレーム) を指定し、フレームの作成後に実行されます。.emacs が読み取られるため、これは最初の emacs フレーム (起動時) には適用されません。 後 フレームはすでに作成されています。
所属していません StackOverflow