4

私は複数のマシン、オペレーティングシステム、プラットフォームで同じ.emacsを使用しています。呼び出し時のEmacsのデフォルトのフレームサイズを利用可能な画面サイズに比例させたいです(たとえば、96行は1600x1200デスクトップ画面で非常にうまく機能しますが、1280x800ラップトップでは68行以下を指定する必要があります)。

システムの画面の幅と高さを返すemacs-lisp式はありますか?

更新:同様の質問を見つけましたが、何らかの理由で(x-display-pixel-width)も(display-pixel-width)もWindowsXPシステムのGNUEmacs23.2で見つかりません。研究を続けています...

4

3 に答える 3

2

XPProでGnuEmacs23.2.1を実行しています。

(x-display-pixel-width)

(x-display-pixel-height) 

どちらも問題なく動作しています。それらはcソースの一部であり、存在する必要があります。

信頼できる端末の外でemacsを実行できますか?

これが私の現在のemacsからのドキュメントです:

x-display-pixel-height`Cソースコード'に組み込まれている関数です。

(x-display-pixel-height &optional TERMINAL)

XディスプレイTERMINALの高さをピクセル単位で返します。オプションの引数TERMINALは、質問する表示を指定します。TERMINALは、端末オブジェクト、フレーム、または表示名(文字列)である必要があります。省略またはnilの場合、それは選択されたフレームの表示を表します。

また、興味があれば、emacsフレームのサイズ変更と移動に役立つ便利な関数のライブラリ全体を用意しています。

于 2010-08-18T18:24:40.183 に答える
2

やや古いバージョンのために、私はそれを悪い方法でやっています。

(tool-bar-mode nil)

(mapc (lambda (x) (add-to-list 'default-frame-alist x))
   (list
          (cons 'top 0) (cons 'left 0)
          (cons 'font "-outline-Courier New-normal-r-normal-normal-11-82-96-96-c-*-iso10646-1")
          (cons 'height 67) (cons 'width 176)
))

デフォルトのフレームは、.emacsの実行後にdefault-frame-alistから作成されます。イニシャルフレームアリストのことは聞いたことがありません。

于 2010-08-18T20:56:35.760 に答える
1

クリスとスコットによる答えとコメントのおかげで、私は自分の.emacsで次の作業ラインを思いつくことができました。

(set-frame-size  (selected-frame)  96 (/ (* (x-display-pixel-height) 46) 600) ) 

.emacsでeval-bufferを実行するとうまく機能しますが、Windows XPのEmacsショートカットをダブルクリックすると、このステートメントは完全に無視されます。

(selected-frame)が(initial-frame)ではないことを知っているので、これも試しました。

(setq initial-frame-alist
    '((top . 1) (left . 288) (width . 96) (height . (/ (* (x-display-pixel-height) 46) 600))))

しかし、それは私が読み取った.emacsでeval-bufferを実行した場合にのみ機能します。Emacsの起動時(コマンドラインから、またはショートカットをダブルクリックして)は機能しません。変。

更新:ショートカットの[ターゲット]フィールドの呼び出しコマンドで初期サイズを設定することになりました。

C:\emacs-23.2\bin\runemacs.exe -geometry 96x78+240+0

醜い解決策は知っていますが、現在、それがそのトリックを実行する唯一の解決策です。

于 2010-08-18T20:51:00.217 に答える