本セクションでは、他の箇所に該当しないWindows固有の機能について説明します。
変数 w32-use-visible-system-caret
は、システムキャレットを表示するかどうかを決定するフラグです。スクリーンリーダーソフトウェアが使用されていない場合のデフォルト値は nil であり、これは Emacs
がポイントの位置を示すために独自のカーソルを描画することを意味します。nil 以外の値は、Emacs
がシステムキャレットでポイントの位置を示すことを意味します。これによりスクリーンリーダーソフトウェアの利用が容易になり、Emacs
の実行時にそのようなソフトウェアが検出された場合のデフォルト値となります。この変数が nil
以外の場合、カーソル表示に影響を与える他の変数は効果を発揮しません。
変数 w32-grab-focus-on-raise に nil 以外の値を設定すると、フレームをフォーカスした際にそのフレームがフォーカスを獲得します。デフォルトは
t であり、これは Windows
のデフォルトの「クリックによるフォーカス」ポリシーとよく整合しています。
Windows 10(バージョン1809以降)およびWindows
11では、Emacsのタイトルバーとスクロールバーは、エクスプローラーやコマンドプロンプトなどの他のプログラムと同様に、デフォルトでシステムのライトモードまたはダークモードに従います。カラーモードを変更するには、Windows SettingsからPersonalizationを選択し、次にColors->Choose your color(またはChoose your default app modeやChoose your mode)を選択してから、Emacsを再起動してください。Windows
11では、Windows用とアプリケーション用のデフォルトモードを個別に設定できます。
Emacsにシステムのダークモード設定に従わせたくない場合は、変数 w32-follow-system-dark-mode を nil
の値にカスタマイズしてください。そうすれば、システム全体の設定に関わらず、Emacsはデフォルトのライトモードを使用するようになります。この変数の値を変更しても、変更後に作成されるEmacsフレームにのみ影響するため、initファイル(Emacs初期化ファイルを参照)で、直接、あるいはカスタマイズした値を保存できる M-x customize-variable を介して値を設定してください(カスタマイズの保存を参照)。
Windows Consoleにおける表示機能の実装は、他のターミナルエミュレータの実装とは異なります。これは、歴史的にWindowsが特有のAPIの使用を必要としてきたためです。そのAPIにより、Windows ConsoleでのEmacsの表示は基本色16色に制限されていました。Windows Terminalの導入に伴い、MicrosoftはVT100やXtermをモデルとしたANSI制御シーケンス、および24ビットRGBカラー表示への対応を実現しました。
関数 w32-use-virtual-terminal および w32-use-virtual-terminal-p
を使用すると、表示にこの新しい機構を用いるか、あるいは従来の機構を用いるかを決定する内部変数を、それぞれ設定および参照できます。この内部変数は、起動時に端末の機能に基づいて自動的に設定されます。デフォルトでは24ビットRGBカラーが使用されますが、コマンドライン引数
--color を渡すか、フレームパラメータ tty-color-mode の値を設定することで、他の(8, 16,
256)カラースペースを使用することも可能です。
(w32-use-virtual-terminal-p) は、内部変数が 0
以外の数値を持つ場合に限り t と評価され、それ以外の場合は nil と評価されます。t と評価される場合は、色指定に
ANSI エスケープシーケンスが使用され、それ以外の場合は従来の仕組みが使用されます。内部変数は (w32-use-virtual-terminal x) を評価することで設定でき、ここで x は t または nil です。x が t
であり、かつお使いの端末がこの機能をサポートしている場合は、その機能が有効になります。それ以外の場合は、その機能は無効になります。