質問
これは私を夢中にさせます。Emacsを起動時の画面解像度に合わせて最大化したいだけです。理想的には、任意の画面解像度で動作するクロスプラットフォーム(Windows& Linux)ソリューションが好きですが、ハードコードされたサイズでもWindow XPだけで動作させることさえできません。
ここに私が試したものがあります:
- 適切な高さ/幅でinitial-frame-alistを設定
- default-frame-alistの設定
- (Windows固有のもの)
(w32-send-sys-command 61488)
を介して最大化するように指示するメッセージをemacsウィンドウに送信する
-
どこかで見つけたこの機能を試しました:
(defun toggle-fullscreen () "toggles whether the currently selected frame consumes the entire display or is decorated with a window border" (interactive) (let ((f (selected-frame))) (modify-frame-parameters f `((fullscreen . ,(if (eq nil (frame-parameter f 'fullscreen)) 'fullboth nil))))))
- 初期化ファイルの最初と最後の両方で上記の方法を試して、他の初期化からの干渉を排除しようとしました。
残念ながら、上記のいずれも動作しません!!上記のいくつかについては、emacsウィンドウが一瞬だけ正しくサイズ変更されてから、小さなデフォルトサイズに戻ることがわかります。また、初期化後に上記のメソッドを実行すると、emacsウィンドウのサイズが正しく変更されます。ここで何が起こっているのですか?
[p.s。これに関する他のSO質問がありますが、答えはどれも動作しません]
更新:
答えは、私のinitファイルの他の何かが問題を引き起こしていると思うようにします。そして確かにそうです!試行錯誤の後、犯人を見つけました。次の行をコメントアウトすると、すべてが完全に機能します。
(tool-bar-mode -1)
ウィンドウを最大化するために、ツールバーは何に関係しますか?
では、ツールバーを無効にし(結局、emacsのツールバーは見苦しく、貴重な画面領域を占有する)、initファイルのウィンドウを最大化するにはどうすればよいのでしょうか?ツールバーがウィンドウのサイズを妨げるのはおそらくバグですか?
明確化:(tool-bar-mode -1)ツールバーをオフにしますが、この行はEmacsウィンドウの最大化を妨げます。したがって、ウィンドウを最大化してツールバーをオフにする関数を配置しようとすると、最大化部分は失敗します。ツールバー部分がコメント化されている場合、最大化部分は正常に機能します。 (私がリストした4つのうち)どのソリューションを使用するかは関係ありません。
解決策: (または、少なくとも今は何が効果的か)
これはおそらくEmacsのバグです。回避策は、.emacsではなく、レジストリを介してツールバーを無効にすることです。以下を.regファイルとして保存し、Windowsエクスプローラーでそのファイルを実行します。
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\GNU\Emacs]
"Emacs.Toolbar"="-1"
(このソリューションは、OtherMichaelが提案した機能バージョンです。)
解決
1年ほど前の回答が見つかりました。正しく処理するためのレジストリ:
Emacsを最大化するには、次の行を入力します 〜/ .emacsファイルの最後に:
(w32-send-sys-command 61488)
Emacsツールバーが必要ない場合 次の行を追加できます(tool-bar-mode -1) [注:元のページの値は0です] 〜/ .emacsファイルに追加しますが、Emacsは この場合、完全に最大化-実際 ツールバーが占有する不動産は 失った。ツールバーを無効にする必要があります それを取り戻すためにレジストリで:
[HKEY_LOCAL_MACHINE\SOFTWARE\GNU\Emacs\Emacs.Toolbar]
@="0"
EmacsWikiの W32SendSysコマンドコードを見ると、 61488
は現在のフレームを最大化
他のヒント
これは私のために働いた最も簡単な修正です:
(w32-send-sys-command #xf030)
(add-hook 'window-setup-hook (lambda () (tool-bar-mode -1)))
おい、何が悪いの
emacs -mm
?
これにより、Emacsが完全に最大化されます。それをショートカットに入れてください、それは本当にあなたが使うウィンドウマネージャに依存します;私自身は。* shrc でエイリアスを作成しています。
別の、しかし無関係ではないノートで、実際にEmacsを起動します。すでに起動している場合、選択したファイルは既存のEmacsセッションで新しいバッファーとして開かれます。
if [ "$(pidof emacs)" ] ; then
emacsclient "$@"
else
emacs -mm "$@"
fi
これは〜/ bin / eを入れて" e"でEmacsを起動します。 ファイルマネージャーでテキストファイルを右クリックし、[別のプログラムで開く]を選択しました。 " e"と入力すると、ファイルをダブルクリックするだけで、同じセッションですべてがきれいに開きます。
そして、すべてが桃色でリッピーです:)
X.orgでは、システムコールは次のとおりです(元々クロスプラットフォームソリューションを要求したため):
(defun x11-maximize-frame ()
"Maximize the current frame (to full screen)"
(interactive)
(x-send-client-message nil 0 nil "_NET_WM_STATE" 32 '(2 "_NET_WM_STATE_MAXIMIZED_HORZ" 0))
(x-send-client-message nil 0 nil "_NET_WM_STATE" 32 '(2 "_NET_WM_STATE_MAXIMIZED_VERT" 0)))
まず、(tool-bar-mode -1)のバグに関するヒントをありがとう。私は多くのトラブルを救いました!私はむしろ.emacsファイル内にすべてを保持します(私のためのレジストリMODはありません)ので、最大化する前にツールバーをオンにしてから再度オフにすると、うまく最大化できます:
(defun maximize-current-frame () "Resizes the current frame to fill the screen"
(interactive)
;; There is a bug in tool-bar-mode that prevents it from being
;; maximized, so turn it on before maximizing.
;; See http://stackoverflow.com/questions/815239/how-to-maximize-emacs-on-windows-at-startup)
(tool-bar-mode 1)
(w32-send-sys-command 61488)
(tool-bar-mode -1)
)
これは、 Emacs 24.5.1(i686-pc-mingw32)
で確実に機能します:
(add-to-list 'initial-frame-alist '(fullscreen . maximized))
このような問題を解決する別の方法は、間に遅延を置くことです
(menu-bar-mode -1)
(tool-bar-mode -1)
(tooltip-mode -1)
(scroll-bar-mode 1)
およびset-frame- *関数。例:
(tool-bar-mode -1)
(when window-system
(run-at-time (format "%d sec" 1) nil '(lambda () (set-frame-position (selected-frame) 1 1)))
(run-at-time (format "%d sec" 2) nil '(lambda () (set-frame-width (selected-frame) 150 t)))
(run-at-time (format "%d sec" 3) nil '(lambda () (set-frame-height (selected-frame) 60 t)))
)
set-frame- *関数の間に遅延を置くことも不可欠です!
ちょっと-すてきな機能です!投稿していただきありがとうございます
次のようなコードがあるため、機能していない可能性があります initファイルのどこか他の場所をたどります。 default-frame-alistが適用されています フレームが作成された後。サイズ要素と位置要素を削除し、機能します emacsのブートアップに最適です。
(setq default-frame-alist
(list
(cons 'left 350)
(cons 'top 0)
(cons 'width 80)
(cons 'height 45)
......
ウィンドウクロム(タイトルバーと最大/最小/閉じるボタン)を使用せずにEmacsをフルスクリーンで実行する場合は、以下のモードを試してください。これはXP SP3のEmacs 23.3.1で機能しました。
すべて。 emacs 23.3.1、ブローコードは無効です。 (menu-bar-mode -1)はウィンドウを引き起こさないため フルスクリーンも。
(w32-send-sys-command #xf030)
(add-hook 'window-setup-hook (lambda () (tool-bar-mode -1)))
Eamcs wikiを検索し、使用可能なメソッドを見つけます。
http://www.emacswiki.org/emacs/FullScreen#toc3
MS Windows
MS Windowsを使用しており、“実際のフルスクリーン”を使用する場合、つまり、トップタイトルバーとすべてを削除する場合は、サイトのw32-fullscreenを参照してください暗室モード
別の方法として、フルスクリーンフレームパラメーターをWindowsで実際にフルスクリーンにするパッチをここで入手できます。
最大化されたウィンドウを取得するには、次を使用できます:(w32-send-sys-command#xf030)
注意! emacsを最大化して起動する場合は、次のコードを.emacsファイルに追加する必要があります。
(defun jbr-init ()
"Called from term-setup-hook after the default
terminal setup is
done or directly from startup if term-setup-hook not
used. The value
0xF030 is the command for maximizing a window."
(interactive)
(w32-send-sys-command #xf030)
(ecb-redraw-layout)
(calendar)
)
(setq term-setup-hook 'jbr-init)
(setq window-setup-hook 'jbr-init)
(toggle-frame-maximized)
で動作するように思われるコマンドが1つ見つかりました。これはLinux& Windows。
すべてをセットアップした後、initファイルの終わり近くに配置しました。セットアップの終わりまでにすべてが最大化されないことを仮定して、それは機能します。
(defun resize-frame ()
"Set size"
(interactive)
(set-frame-width (selected-frame) 110)
(set-frame-height (selected-frame) 33)
(set-frame-position (selected-frame) 0 1))
followingは、.emacsファイルで呼び出される最後の関数で、debianとmac os xのemacs 22とemacs 23の両方で機能する画面の高さと幅を設定します。画面に応じて高さと幅の数値を設定します。
ツールバーを無効にするには、行を追加します
(tool-bar-mode nil)
カスタマイズファイル(通常はルートディレクトリの.emacs)に。
emacs-full-screen-win32 プロジェクトが役立ちます。 )
emacswiki からの次のスニペットは、私からはうまくいきました。 (スタートアップ設定ファイルに追加)
(defun jbr-init ()
"Called from term-setup-hook after the default
terminal setup is
done or directly from startup if term-setup-hook not
used. The value
0xF030 is the command for maximizing a window."
(interactive)
(w32-send-sys-command #xf030)
(ecb-redraw-layout)
(calendar)
)
(setq term-setup-hook 'jbr-init)
(setq window-setup-hook 'jbr-init)