[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

AJ. EmacsとMS-DOS (2005/09/19)

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=emacs21&node=MS-DOS"
"texi/emacs21/AJ.EmacsとMS-DOS"へのコメント(無し)

ここでは、(『MS-DOG』とも呼ばれる)MS-DOS『オペレーティングシステム』で 稼働するEmacsの癖について簡単にふれます。 MS-DOS用に作成したEmacsのバイナリは、 Windows 3.x、Windows NT、Windows 9X/ME, Windows 2000、OS-2上で DOSアプリケーションとしても動作します。 MS-DOS用に作成したEmacsを使っている限り、 本章の情報はこれらすべてのシステムにあてはまります。

Windows NT/MEやWindows 9X/MEに専用のEmacsを作ることも可能です。 その場合には、本章のほとんどは関係ありません。 長いファイル名、複数のフレーム、スクロールバー、マウスメニュー、 サブプロセスの利用を含めて、本書の他の部分で説明した動作に 近い動作をします。 しかし、テキストファイルとバイナリファイルに関する節は適用できます。 また、本章の最後の2つの節は、Windows 版だけに適用できます。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

AJ.1 MS-DOSのキーボードとマウス (2005/05/08)

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=emacs21&node=MS-DOS%20Input"
"texi/emacs21/AJ.1MS-DOSのキーボードとマウス"へのコメント(無し)

PCのキーボードの左側のALTキーは、METAキーに割り当てられます。 SUPERキーとHYPERキーのエミュレーションには、選択肢が2つあります。 変数dos-hyper-keydos-super-keyを1にすれば、 右側のCTRLキーを選びます。 変数dos-hyper-keydos-super-keyを2にすれば、 右側のALTキーを選びます。 dos-super-keydos-hyper-keyのいずれも1でなければ、 デフォルトで右側のALTキーもMETAに割り当てられます。 しかし、MS-DOSの国際化キーボード用プログラム `KEYB.COM'をインストールしてある場合は、 右側のALTMETAには割り当てません。 というのは、米国配列のキーボードでない場合、 右側のALT~@として使われるからです。 この場合には、左側のALTのみをMETAとして使えます。

変数dos-keypad-modeは、 数字キーパッド上のキーが返すキーコードを制御する変数です。 ファイル`_emacs'につぎの行を入れておけば、 ENTERキーがC-jとして働くように定義できます。

 
;; Make the ENTER key from the numeric keypad act as C-j.
;; 数字キーパッドのEnterキーをC-jとして動作させる。
(define-key function-key-map [kp-enter] [?\C-j])

(ほとんどのワークステーションでの呼称から) EmacsでDELと呼ばれるキーは、PCではBS(バックスペース)です。 このため、PC特有の端末初期化においては、 BSキーはDELとして動作するようにしています。 同じ理由から、DELキーは C-dとして動作するようにしてあります。

MS-DOS用のEmacsでは、 C-BREAKをC-gのような中断文字として認識します。 これは、Emacsが入力を読もうとしないと C-gが打鍵されたことを検出できないからです。 そのため、動作中のコマンドを止めるためにC-gを使えません (see 節 AE.7 中断とアボート (2004/03/29))。 対照的に、C-BREAKは (他のシステムでのC-gのように)打鍵するとすぐに検出されるので、 動作中のコマンドを停止したり緊急脱出したりするために使えます (see 節 AE.8.8 緊急脱出)。

MS-DOS用Emacsは、(デフォルトの端末だけで)マウスを使えます。 メニューやメニューバー(see 節 B.4 メニューバー)の利用を含めて、 マウスコマンドはドキュメントどおりに動作します。 MS-DOS用Emacsではスクロールバーは使えません。 PCのマウスには、通常、2つのボタンしかありません。 これらはMouse-1Mouse-2として動作しますが、 2つのボタンを同時に押せばMouse-3として動作します。もしマウスに3ボタンがあ れば,Emacs は起動時に認識し,3つのボタンに X と同様の機能を割り当てます.

メニューバーやポップアップメニューで表示されるヘルプはそれぞれのメニュー上にマウ スポインタを置くとエコー領域に表示されます.マウスを置くと,強調表示されるテキス ト (see 節 Q.3 マウスで参照を辿る) もサポートされています.

いくつかのマウスドライバはマウスのボタン数を正しく報告しません.例えば,あるホイー ルマウスは3つのボタンを持っているのですが,Emacs には2つしかないと伝えられます. ホイールを押せば,中ボタンとして機能するのですが,それが伝わらないのです.こういっ た場合には,コマンド M-x msdos-set-mouse-buttons を使って Emacs にいくつの マウスボタンがあるか伝えることができます.この設定を永続的に有効にさせるためには 初期化ファイル `_emacs' に以下を追加します.

 
;; 2ボタンマウスとして扱う
(msdos-set-mouse-buttons 2)

MS-DOS用EmacsがWindows上で動作している場合には、 クリップボードの操作を利用できます。 キルリングにテキストを置いたり、 キルリングからテキストをヤンクしたりするコマンドでは、 Xウィンドウシステムの場合と同様に、 まずWindowsのクリップボードを調べます(see 節 Q.1 編集用マウスコマンド)。 Windows上のMS-DOS用Emacsは、 一次セレクションとカットバッファのみを利用し、 二次セレクションはつねに空です。

Windowsで実装されているクリップボードの参照方法のため、 クリップボードに置けるテキストの長さは、 Emacsが利用できるDOSの空きメモリ量に制限されます。 通常、620Kバイトまでのテキストをクリップボードに置けますが、 この上限はシステムの設定に依存し、 他のプログラムのサブプロセスとしてEmacsを実行しているときには少なくなります。 削除したテキストがクリップボードに入りきらなければ、 Emacsはその旨のメッセージを出力して、 テキストをクリップボードへ置きません。

Windowsのクリップボードにはナル文字を入れられません。 キルしたテキストにナル文字が含まれる場合には、 Emacsはそのようなテキストをクリップボードへ置きません。 さらに、エコー領域には、その旨、メッセージを表示します。

変数dos-display-scancodesの値がnil以外のときには、 キーを打つたびに、Emacsは各キーのASCII(コードの)値と キーボードスキャンコードを出力します。 この機能は、デバッグ用のコマンドview-lossageを補佐します。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

AJ.2 MS-DOSの画面 (2005/05/08)

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=emacs21&node=MS-DOS%20Display"
"texi/emacs21/AJ.2MS-DOSの画面"へのコメント(無し)

MS-DOSの画面では、ボールド体(太字体)やイタリック体(斜体)などの フォントの変種を使えませんが、 個々に前景色と背景色を指定できるフェイスを複数個使えます。 したがって、関連するフェイスに異なる表示色を定義すれば、 (font-lock、エンリッチ(enriched)モードなどの) フォントを用いるEmacsのパッケージの全機能を利用できます。 コマンドlist-colors-display(see 節 Q.10 フレームパラメータの設定)と コマンドlist-faces-display(see 節 Q.13 複数タイプフェイスの利用)を使えば、 利用可能なフェイスと表示色、それらの見え方を知ることができます。

本章のAJ.6 MS-DOSでの国際化対応 (2005/09/18)では、 DOSの画面に組み込まれたフォントでは表せない 字形や文字をEmacsがどのように表示するかを説明します。

Emacs が起動すると,カーソル形状を四角に変えます.これは,ボックスカーソルがデフォ ルトである他のシステムと同じです.このデフォルト形状は default-frame-alist のパラメータ cursor-type を変更することで縦線 に変更することができます (see 節 Q.6 フレームの作成).MS-DOS 端末は縦棒カーソルを サポートしませんので,カーソルは水平であり,フレームパラメータで設定されていれば, パラメータ width が高さを決定します.このため,barhbar カーソルは MS-DOS では同じ効果になります.延長として,バーカーソルは 幅だけでなく,カーソルの開始位置も設定できます.

 
 '(cursor-type bar width . start)

加えて,width がマイナスであれば,カーソルバーは文字の頂上から始まります.

MS-DOS 端末では1度に1つのフレームだけを表示できます.Emacs のフレーム機能は MS-DOS 上ではテキスト端末と同じように動作します(see 節 Q. フレームとXウィンドウシステム).Emacs を MS-Windows の DOSから起動すると,見えているフレームを画面全体より小さくはできま すが,それでも、一度に1つのフレームしか表示できません。

コマンドmode4350は43行表示と50行表示を切り替えますが、 ハードウェアに依存します。 コマンドmode25は、デフォルトの80x25の画面サイズに切り替えます。

デフォルトでは、Emacsは80桁で、25行、28行、35行、40行、43行、50行の 画面サイズしか知りません。 しかし、ビデオアダプタに別の画面サイズに切り替える特別な ビデオモードがあれば、Emacsでもそれらを利用できます。 Emacsにフレームサイズをnm桁に切り替える指示をすると、 screen-dimensions-nxmという変数があるかどうか調べます。 変数があれば、その値(整数である必要がある)を 切り替え先のビデオモードとして使います。 (Emacsは、 screen-dimensions-nxmの値をレジスタALに入れ、 BIOSの関数Set Video Modeを呼び出し、ビデオモードを切り替えます。) たとえば、ビデオモードを85にすると66x80の画面に切り替わるアダプタがあるとします。 `_emacs'につぎの行を加えれば、 Emacsでこの画面サイズを使えるようになります。

 
(setq screen-dimensions-66x80 85)

MS-DOS用Emacsでは、 フレームサイズは利用可能な特定のサイズにしか設定できませんから、 フレームサイズの変更要求すべてに答えられるわけではありません。 使えないサイズが要求されると、 Emacsは指定されたサイズのつぎに大きいサイズを選びます。 たとえば、36x80のフレームを要求すると、かわりに、40x80になります。

変数screen-dimensions-nxmは、 指定サイズに正確に一致するときだけ使われます。 利用可能なつぎに大きなサイズの候補を探すときには無視します。 上述の例では、VGAで38x80を使えて、 変数screen-dimensions-38x80に適切な値を定義したとしても、 36x80のフレームを要求した場合には、40x80の画面になってしまいます。 このような場合に38x80のサイズにしたければ、 変数screen-dimensions-36x80にも screen-dimensions-38x80と同じビデオモードの値を入れます。

MS-DOSでは、フレームサイズを変更すると、 他のすべてのフレームのサイズも変更してしまいます。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

AJ.3 MS-DOSにおけるファイル名 (2005/05/08)

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=emacs21&node=MS-DOS%20File%20Names"
"texi/emacs21/AJ.3MS-DOSにおけるファイル名"へのコメント(無し)

他のシステムではファイル名の構成要素の区切りにはスラッシュを使いますが、 MS-DOSでは、普通、バックスラッシュ`\'を使います。 MS-DOS用Emacsでは、スラッシュもバックスラッシュも使えて、 さらに、ファイル名に含まれるドライブ名も理解します。

MS-DOSでは、ファイル名に大文字小文字の区別はなく 8文字に制限されますが、ピリオドとさらに3文字を付加できます。 Emacsは他のシステム向けのファイル名を扱ううえで、 これらの制限を熟知しています。 たとえば、ドット`.'で始まるファイル名は、 MS-DOSでは正しくないので、Emacsはそれを透過的に下線`_'に変換します。 したがって、デフォルトの初期化ファイル(see 節 AE.6 初期化ファイル`~/.emacs')は、 MS-DOSでは`_emacs'と呼ばれます。 ピリオドの前後の文字数制限を越えた部分は、 通常、MS-DOSが無視します。 したがって、ファイル`LongFileName.EvenLongerExtension'を訪れると、 実際には`longfile.eve'を訪れることになりますが、 モード行にはもとの長い名前が表示されます。 これ以外には、MS-DOSにおいて正しいファイル名を指定するのは、 ユーザーの責任です。 上述した透過的な変換は、Emacsに組み込まれたファイル名にのみに作用します。

MS-DOSでの上述のファイル名の制限のために、 もとのファイル名の文字をいくつか捨てずに バックアップファイル(see 節 N.3.1.1 単一バックアップファイルと番号付きバックアップファイル)の名前を構成することは不可能です。 たとえば、バックアップを1つしか使っていなくても、 `docs.txt'のバックアップファイルの名前は `docs.tx~'となります。

Windows 9x,Windows ME,Windows 2000上のDOSアプリケーションとしてEmacsを実行する場合には、 長いファイル名の使用を有効にできます。 そうすると、Emacsは、ファイル名を切り詰めたり小文字に変換したりせずに、 指定したとおりのファイル名をそのまま使います。 長いファイル名の使用を有効にするには、 Emacsを起動するまえに、環境変数LFNに`y'と設定します。 残念ながら、Windows NTではDOSプログラムから長いファイル名を使えませんので、 MS-DOS用Emacsからは短い8+3の別名しか見えません。

MS-DOS has no notion of home directory, so Emacs on MS-DOS pretends that the directory where it is installed is the value of HOME environment variable. That is, if your Emacs binary, `emacs.exe', is in the directory `c:/utils/emacs/bin', then Emacs acts as if HOME were set to `c:/utils/emacs'. In particular, that is where Emacs looks for the init file `_emacs'. With this in mind, you can use `~' in file names as an alias for the home directory, as you would on GNU or Unix. You can also set HOME variable in the environment before starting Emacs; its value will then override the above default behavior. MS-DOSにはホームディレクトリという概念がないので、 MS-DOS用Emacsでは、Emacsをインストールしてあるディレクトリを 環境変数HOMEの値であるということにします。 つまり、Emacsのバイナリ`emacs.exe'が ディレクトリ`c:/utils/emacs/bin'に置いてあるとすれば、 Emacsは、環境変数HOMEが`c:/utils/emacs'と 設定されているかのようにふるまいます。 特に、ここが初期化ファイル`_emacs'を探す場所となります。 このことを心に留めておけば、GNU や UNIXでのように、 ホームディレクトリの別名としてファイル名に`~'を使えます。 Emacsを起動するまえに環境変数HOMEを設定することもでき、 その場合には、上述のデフォルトのふるまいに優先します。

DJGPPのエミュレーションライブラリの機能では 入出力装置はディレクトリ`/dev'に置かれていると仮定するので、 MS-DOS用Emacsはディレクトリ名`/dev'を特別扱いします。 いかなるディスク上でも`/dev'というディレクトリ名を使わないように 忠告しておきます。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

AJ.4 テキストファイルとバイナリファイル (2005/05/08)

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=emacs21&node=Text%20and%20Binary"
"texi/emacs21/AJ.4テキストファイルとバイナリファイル"へのコメント(無し)

GNU Emacsでは、テキスト行の区切りとして改行文字を使います。 これは、GNU や UNIXでの習慣です.

MS-DOSとMS-Windowsでは、テキスト行の区切りとして、 通常、復帰・行送りの2文字列を使います。 (行送りは改行と同じ文字です。) したがって、Emacs において典型的なファイルを便利に編集するには、 これらの行末(end-of-line、EOL)文字列を変換する必要があります。 Emacsは通常つぎのようにします。 ファイルを読み込むときには復帰・行送りを改行に変換し、 ファイルを書き出すときには改行を復帰・行送りに変換します。 国際文字コードの変換を扱う機構でもこの変換を行います (see 節 R.7 コーディングシステム)。

ほとんどのファイルにおけるこの特別な書式変換のために、 Emacsが報告する文字位置(see 節 D.9 カーソル位置の情報 (2004/03/27))は、 オペレーティングシステム上でのファイルサイズ情報と食い違います。

さらに、Emacsは、ファイルの内容から行区切りとして 復帰・行送りでなく改行を用いていると判断すると、 ファイルの読み書きにおいて変換を行いません。 したがって、特に努力しなくても、 GNUとUNIXシステムからのファイルをMS-DOS上で読んだり編集でき、 それらのファイルの行末は編集した後もUNIX流の行末のままです。

モード行にはカレントバッファで行末変換を行ったかどうか表示されます。MS-DOS の行 末をバッファで使っている時には,モードラインの先頭付近の文字コードの後にバックス ラッシュ `\' が表示されます (see 節 B.3 モード行).行末変換が実行されなければ, バックスラッシュの代わりに `(Unix)' が表示され,通常の復帰・行送りではない ことを知らせます.

ファイルを開き,行末のスタイルが DOS か Unix であるかを指定するには,文字コード を指定します (see 節 R.9 コーディングシステムの指定).例えば,C-x RET c unix RET C-x C-f foobar.txt とすると,ファイル `foobar.txt' を行末の指定 無しで開きます.もし,いくつかの行が復帰・行送りであれば,Emacs はその行の終わり に `^M' を表示します.同様に,C-x RET f を使って,Emacs に行末 を指定して保存させることができます.例えば,Unix の行末でバッファを保存したい時 には,C-x RET f unix RET C-x C-s とします.もし,DOS の行末を 持つファイルを開いているのであれば,Unixの行末に変換されて,保存されます.このコ マンドは dos2unix のように効率的に Unix の行末に変換します.

NFSやSambaを用いてGNUやUNIXシステムを使った コンピュータ上のファイルシステムを参照するとき、 これらのファイルシステム上のどのファイルに対しては、 新規作成時でなくても、Emacsは行末変換を行うべきではありません。 こうするためには、 該当するファイルシステムを無変換の ファイルシステムと指定するために、 関数add-untranslated-filesystemを呼びます。 この関数は、ファイルシステム名である引数を1つとりますが、 これにはドライブ名やディレクトリ名を含めることもできます。 たとえば、

 
(add-untranslated-filesystem "Z:")

は、ドライブZを無変換のファイルシステムとして指定しますし、

 
(add-untranslated-filesystem "Z:\\foo")

は、ドライブZ上のディレクトリ`\foo'を 無変換のファイルシステムとして指定します。

個人の`_emacs'ファイルや サイトの全ユーザーに便利なように`site-start.el'の中で、 add-untranslated-filesystemを使うことが多いでしょう。

add-untranslated-filesystemの効果を取り消すには、 関数remote-untranslated-filesystemを使います。 この関数は、まえにadd-untranslated-filesystemに使ったのと 同じ文字列を引数としてとります。

あるファイルシステムを無変換として指定すると文字コードだけでなく行末にも影響しま せん.特に,Emacs は 新しいファイルを作る時には Unix の行末で作成します. See 節 R.7 コーディングシステム

内容がテキストではないある種のファイルは,変換すべきではありません.したがって, MS-DOS 用 Emacs はある種のファイルをバイナリファイル として区別します.(こ の区別はMS-DOSのものではなく、Emacsがもたらすものです).バイナリファイルには実行 プログラム,圧縮されたファイルなどがあります.Emacs はあるファイルをバイナリとし て認識するかどうかをファイル名を元に決定します.変数 file-name-buffer-file-type-alist はバイナリファイルであるファイル名を決定 します.もしファイル名がバイナリファイル名の1つに一致すれば (その連想リストが特 定のタイプ (pattern . t) であると),Emacs はそのファイルを文字コー ド no-conversion (see 節 R.7 コーディングシステム) を使って読み書きし,行末変換だけでなくすべ ての文字コード変換を無効にします. file-name-buffer-file-type-alist は `CONFIG.SYS' のようにDOS の復帰・ 行送りを持つテキストファイルも含みます.Emacs はそのファイルをいつも DOS の行末 で書き込みます.

もし無変換のあるファイルが file-name-buffer-file-type-alist の1つに一致す れば,行末変換は file-name-buffer-file-type-alist で決定されます.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

AJ.5 印刷とMS-DOS

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=emacs21&node=MS-DOS%20Printing"
"texi/emacs21/AJ.5印刷とMS-DOS"へのコメント(無し)

lpr-buffer(@xref{Hardcopy})や ps-print-buffer(@xref{Postscript})のような印刷コマンドは、 UNIX流のプログラムlprがない場合には、 プリンタポートに直接出力を送ればMS-DOSやMS-Windowsでも動作します。 このふるまいは、UNIX上のlprでの印刷 (@xref{Hardcopy}、@xref{Postscript Variables}) を制御する変数と同じ変数で制御されますが、 MS-DOSやMS-Windows上でのこれらの変数のデフォルト値は、 UNIX上での値と同じではありません。

DOS流の通常の印刷のように、ローカルのプリンタを使いたい場合には、 Lisp変数lpr-command""(デフォルト値)を設定し、 printer-nameにはプリンタポートの名前を設定します。 たとえば、ローカルのプリンタポートならば(デフォルト値の)"PRN""LPT2"、シリアルプリンタならば"COM1"です。 printer-nameにはファイル名も設定できます。 その場合には、『印刷』結果は、そのファイルに追加書きされます。 printer-name"NUL"を設定すると、 印刷結果は(システムの空デバイスに送られて)黙って捨てられます。

MS-Windowsでは、Windowsのネットワークソフトウェアをインストールしてあれば、 printer-nameに、他のマシンとの共用プリンタのUNC共用名 (たとえば"//joes_pc/hp4si")を設定すれば、 そのプリンタを利用することもできます。 (スラッシュでもバックスラッシュでもかまいません。) 共用プリンタの名前を調べるには、 DOSコマンドプロンプトで`net view'を実行してサーバー一覧を取得してから、 `net view server-name'を実行して サーバーが共有するプリンタ(とディレクトリ)の名前を調べます。

printer-nameにファイル名を設定するときには、 絶対ファイル名を使うのが最良です。 Emacsは、カレントバッファのデフォルトディレクトリに応じて 作業ディレクトリを変更します。 printer-nameのファイル名が相対的であると、 印刷を行ったバッファのディレクトリごとに、 そのような名前のファイルができてしまいます。

コマンドprint-bufferprint-regionは、 各印刷ページに見出しを付けるために、 prプログラムを呼び出したり、 lprプログラムに対して特別なフラグを使います。 MS-DOSやMS-Windowsには、通常、これらのコマンドはありませんから、 デフォルトでは、変数lpr-headers-switchesは、 ページ見出しを付ける要求を無視するように設定してあります。 したがって、print-bufferprint-regionは、 それぞれ、lpr-bufferlpr-regionと同じ出力になります。 (たとえばGNU Textutilsなどの)適当なprプログラムがあるならば、 lpr-headers-switchesnilを設定します。 すると、Emacsはページ見出しを付けるためにprを呼び出し、 printer-nameの指定に従って出力結果を印刷します。

lprと同じ動作をするlprがある場合には、 変数lpr-command"lpr"と設定できます。 すると、他のシステムと同様に、Emacsはlprを使って印刷します。 (プログラム名がlprでない場合には、 lpr-commandにはプログラムを探す場所を設定する。) lpr-command""以外の場合には、 変数lpr-switchesには標準的な意味があります。 変数printer-nameの値が文字列である場合には、 UNIXの場合と同様に、lprのオプション-Pの値として使われます。

同様の一連の変数、ps-lpr-commandps-lpr-switchesps-printer-name(@xref{Postscript Variables})は、 PostScriptファイルの印刷方法を定義します。 これらの変数は、上に述べた非PostScript印刷用の対応する変数と 同じように使われます。 つまり、ps-printer-nameの値は、 非PostScript印刷でのprinter-nameの使い方と同様に、 PostScript出力の送り先の装置(やファイル)の名前として使われます。 (つまり、別々の2つのポートに2台のプリンタを接続してあり、 その一方がPostScriptプリンタの場合、異なる2組の変数群を使える。)

変数ps-lpr-commandのデフォルト値は""であり、 PostScript出力をps-printer-nameで指定するプリンタポートへ 送ることを意味します。 しかし、ps-lpr-commandには、PostScriptファイルを受理する プログラムの名前を設定してもかまいません。 つまり、非PostScriptプリンタがある場合、 この変数に(Ghostscriptなどの)PostScriptインタープリタプログラムの 名前を設定できます。 インタープリタプログラムに渡す必要があるオプションは、 ps-lpr-switchesを用いて指定します。 (ps-printer-nameの値が文字列の場合、その値は、 オプション-Pの値として、オプション列に付加される。 これは、lprを使う場合にだけ有用であろう。 というのは、インタープリタを使う場合、典型的には、 ps-printer-nameには文字列以外を設定して無視させる。)

たとえば、ポート`LPT2'に接続したEpsonプリンタに印刷するために Ghostscriptを使うには、つぎの内容を個人のファイル`_emacs'に入れます。

 
(setq ps-printer-name t)  ; Ghostscriptは -P を理解しない
(setq ps-lpr-command "c:/gs/gs386")
(setq ps-lpr-switches '("-q" "-dNOPAUSE"
                        "-sDEVICE=epson"
                        "-r240x72"
                        "-sOutputFile=LPT2"
                        "-Ic:/gs"))

(この例では、 ディレクトリ`"c:/gs"'にGhostscriptをインストールしてあると仮定。)

MS-DOSとMS-Windowsでは、後方互換のために、 dos-printer(やdos-ps-printer)の値を設定してあると、 printer-name(やps-printer-name)の値を上書きします。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

AJ.6 MS-DOSでの国際化対応 (2005/09/18)

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=emacs21&node=MS-DOS%20and%20MULE"
"texi/emacs21/AJ.6MS-DOSでの国際化対応"へのコメント(無し)

MS-DOS上のEmacsは、GNU や UNIX や他のプラットフォーム上と同じ 国際化文字集合を扱えます(see 節 R. 国際化文字集合の使い方 (2005/09/19))。 これには、異なる文字集合のあいだの変換を行うコーディングシステムも含みます。 しかしながら、MS-DOS/MS-Windowsと他のシステムとの非互換性に起因する DOSに固有な特色があり、理解しておく必要があります。 本節では、これらの特色について述べます。

M-x dos-codepage-setup
Emacs画面とコーディングシステムを カレントDOSコードページに適したものに設定する。

M-x codepage-setup
特定のDOSコードページ用のコーディングシステムを作成する。

MS-DOSは、一度には256文字から成る単一の文字集合を扱えるように 設計されていますが、さまざまな文字集合から選択できます。 代替文字集合は、DOSコードページと呼ばれます。 各コードページは、128個の全ASCII文字を含みますが、 残りの128文字(コード128〜255)は、コードページごとに異なります。 各DOSコードページは、850や862などの3桁の数字で識別します。

同時に複数のフォントを使えるXに比べると、 MS-DOSでは普通1つのセッションでは複数のコードページを使えません。 MS-DOSはシステムブート時に単一のコードページをロードするように設計されています。 コードページを変更するためにMS-DOSをリブートする必要があります (65)。 MS-Windowsなどの他のシステムでDOSプログラムを実行する場合にも、 同様の制約が課せられます。

MS-DOS上でオプション`--unibyte' (see 節 AF.2 初期化オプション)を指定してEmacsを起動すると、 Emacsは、いかなる変換も非ASCII文字には行いません。 非ASCII文字はそのまま読み書きし、 画面には8ビットコードをそのまま送ります。 つまり、MS-DOS上のユニバイトEmacsは、 なんであれカレントコードページを使いますが、 それ以外の文字を表現することはできません。

MS-DOS上でのマルチバイト操作には、 Emacsは、選択されているDOSコードページで表示できる文字群を 知っておく必要があります。 そのため、起動後、選択しているコードページ番号をシステムに問い合わせ、 変数dos-codepageにその番号を保存します。 実際に使っているコードページとは異なっていても、 カレントコードページのデフォルト値437を返すシステムもあります。 (典型的には、ディスプレイ装置に組み込まれたコードページを使用すると 発生する。) 個人の初期化ファイルで変数dos-codepageを設定すれば、 Emacsが使うコードページ(番号)を別のものに指定できる。

マルチバイトEmacsは、特定のDOSコードページだけを扱えます。 これらには、日本語用コードページ932のような極東の文字を表示できものや、 単一のISO 8859文字集合を符号化できるものが含まれます。

極東用コードページは、 それらの国々用のMULE文字集合の1つを直接表示できますから、 Emacsは、コードページで扱える 適切な端末コーディングシステムを設定するだけです。 本節の残りで述べる特別な機能は、 ISO 8859文字集合を符号化するコードページに関することです。

ISO文字集合の1つに対応したコードページに対しては、 Emacsはコードページ番号に基づいた文字集合名を知っています。 Emacsは、カレントコードページを用いたファイルの読み書きを扱う コーディングシステムを自動的に作成し、 デフォルトでこのコーディングシステムを使います。 コードページ番号をnnnとすると、このようなコーディングシステムの 名前はcpnnnです。 (66)

すべてのcpnnnコーディングシステムは、 モード行の表示に(『DOS』の)文字`D'を使います。 端末コーディングシステムとファイル入出力用のデフォルトの コーディングシステムは、起動時に、 正しくcpnnnコーディングシステムに設定されますから、 MS-DOSでは、モード行は普通`-DD\-'で始まります。 See 節 B.3 モード行。 極東用DOS端末は、cpnnnコーディングシステムを使用せず、 そのため、初期のモード行はEmacsのデフォルトのようになります。

コードページ番号は、使用する文字群を指定しますから、 Emacsは、その文字群用の言語環境を選択するために set-language-environmentを自動的に実行します (see 節 R.3 言語環境)。

バッファ内に異なるISO 8859文字集合に属する文字、 すなわち、選択しているDOSコードページで扱えない文字が含まれる場合、 Emacsはその文字をASCII文字の列で表示します。 たとえば、カレントコードページに文字`ò' (アクサングレーブ付きの小文字の`o')の字形がないときには、 中括弧で囲って1文字であることを表して、 `{`o}'と表示します。 (このようにすると、ギリシャ文字やヘブライ文字などの非Latin文字のなかには、 とても見難くなるのもがあるが、その言語を知っている人には 少なくとも読める。) 1文字でも画面上は数桁を占めますが、 実際には単一の文字であり、Emacsのすべてのコマンドも1文字として扱います。

DOSコードページ内のすべての文字がISO 8859文字に対応するわけではなく、 箱を描くための文字や他の図形用文字もあります。Emacsではこれらの文字を eight-bit-controleight-bit-graphic と呼ばれる2つの特別な 文字に割り当てられます.そして,それらをIME字形として表示します.しかし,これら の文字は他のシステムでは違ったように表示されるかもしれないということに注意すべき です.したがって,異なるOSにコピーされるような場合や他のDOSマシンであっても異な る文字コードを使っているような場合には,テキストでそれらの文字の使用を避けるべ きです.

Emacsは、ISO 8859以外の他の多く文字集合を扱えますが、 それらをMS-DOS上では表示できません。 そのようなマルチバイト文字がバッファ内にあると、 MS-DOS上のEmacsは、変数dos-unsupported-character-glyphの 指定どおりに表示します。 デフォルトでは、その字形は、白抜きの三角形です。 コマンドC-u C-x =を使って、そのような文字の 実際の文字コードと文字集合を表示してください。 See 節 D.9 カーソル位置の情報 (2004/03/27)

デフォルトでは、Emacsはカレントコードページを扱えるコーディングシステムを 定義します。 (他国のDOSマシンで書いたファイルを訪問するなどの) 他のコードページ用のコーディングシステムを定義するには、 コマンドM-x codepage-setupを使います。 これは、3桁のコードページ番号を問い合わせてきますが、補完を使えます。 そして、指定したコードページ用のコーディングシステムを作成します。 これで、新たなコーディングシステムを使ってファイルを読み書きできますが、 このコーディングシステムを使うには、 ファイルコマンドで明示する必要があります(see 節 R.9 コーディングシステムの指定)。

これらのコーディングシステムは、 DOSコードページで符号化したファイルを 他のオペレーティングシステム上のEmacsで訪問する場合にも利用できます。

MS-Windows は独自のコードページを持ちます.これはDOSのコードページとは異なるもの です.例えば,DOSコードページの850はWindowsコードページの1252と同じ文字を提供し ます.DOSコードページの855はWindowsコードページの1251と同じ文字を提供するなど. MS-Windows版のEmacsは`-nw'を付けて起動すると,表示に現在のコードページを使 用します.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

AJ.7 サブプロセス(MS-DOS) (2005/09/19)

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=emacs21&node=MS-DOS%20Processes"
"texi/emacs21/AJ.7サブプロセス(MS-DOS)"へのコメント(無し)

MS-DOSはシングルプロセスの『オペレーティングシステム』なので、 非同期なサブプロセスは利用できません。 特に、シェル(shell)モードやその派生モードは動きません。 shellモードやGUDなどの非同期のサブプロセスを用いたEmacsの機能のほとんどは、 MS-DOSでは動きません。 疑うならば試してみてください。 動作不能なコマンドは、「非同期サブプロセスを使えない」旨の エラーメッセージを出力します。

MS-DOS用Emacsでも、 M-x compileによるコンパイル、 M-x grepによるファイルの探索、 M-x diffによるファイルの比較は動作しますが、 これらは下位プロセスを同期して走らせます。 つまり、下位プロセスが終了するまではいっさい編集はできません。

ispellを同期して走らせることでスペルチェックも動作します.他のプラットフォー ムで非同期で動作させるよりも遅くなります.

MS-DOSモードでは動作しないshellモードの代わりに,M-x eshellを利用できます. これにより,完全にEmacs Lispで書かれた Posix 風の Eshell パッケージを利用できま す.

対照的に、Windows専用にコンパイルしたEmacsでは、 非同期プロセスを使えます。 See 節 AJ.8 サブプロセス(Windows 9X/ME ,Windows NT/2K) (2005/09/19)

lpr-buffer(@xref{Hardcopy})や ps-print-buffer(@xref{Postscript})のような印刷コマンドは、 MS-DOSではプリンタポートの1つに出力を送ることで動作します。 See 節 AJ.5 印刷とMS-DOS

MS-DOSで同期的にサブプロセスを動かす場合には、 プログラムが確実に終了し、しかも、キーボードからまったく入力しないことを 確認してください。 MS-DOSにはプロセスを終了させる一般的な方法がないので、 プログラムがみずから終了できない場合には、 それを終了させることができなくなります。 このような場合、 C-cC-BREAKを押すと助かる場合もあります。

MS-DOSでは、他のマシンのファイルを参照することはできません。 MS-DOSにネットワーク機能が組み込まれていなければ、 メイルの送信、Webの閲覧、リモートログインなどの ネットワーク向けのコマンドも使えません。

MS-DOSでのdiredは、 他のシステムではシステムのlsコマンドを使う場面で パッケージls-lispを使います。 したがって、MS-DOSのdiredでは 変数dired-listing-switchesに設定できるオプションは限られます。 使えるオプションは、 `-A'、`-a'、`-c'、`-i'、`-r'、`-S'、 `-s'、`-t'、`-u'です。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

AJ.8 サブプロセス(Windows 9X/ME ,Windows NT/2K) (2005/09/19)

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=emacs21&node=Windows%20Processes"
"texi/emacs21/AJ.8サブプロセス(Windows9X/ME,WindowsNT/2K)"へのコメント(無し)

(DOS版と対比して)Windows専用にコンパイルしたEmacsでは、 非同期のサブプロセスを完全に使えます。 Windows版では、Windows 9X ,Windows NT/2Kで32ビットのWindowsアプリケーションを実行している限りは、 同期であれ非同期であれサブプロセスはうまく動作します。 しかし、サブプロセスでDOSアプリケーションを実行すると、 アプリケーションの実行に問題を生じたり実行できなかったりします。 さらに、2つのDOSアプリケーションを同時に2つのサブプロセスで実行すると、 システムをリブートしなければならなくなります。

Windows 95の標準のコマンドインタープリタ (および、ほとんどのコマンド行ユーティリティ)はDOSアプリケーションなので、 この種のシステムを使う場合には上記の問題は重要になります。 しかし、これに関してわれわれにできることは何もなく、 Microsoftだけが修正できるのです。

DOSアプリケーションのサブプロセスを1つだけ実行するならば、 『行儀がよく』て、しかも、画面を直接操作するなどの 非標準的な動作をしない限りは、サブプロセスは予想どおりに動作するはずです。 CPUモニタ(監視)アプリケーションを使うと、 DOSアプリケーションが停止しているときでさえも、 マシンは100%ビジーになりますが、 これはCPUモニタがプロセッサの負荷を調べる方法に起因します。

別のサブプロセスでDOSアプリケーションを実行する場合には、 まえもってDOSアプリケーションを終了しておく必要があります。 Emacsは、DOSのサブプロセスに割り込んだり停止させることができません。 このようなサブプロセスを終了する唯一の方法は、 そのプログラムに終了を指示するコマンドを与えることです。

別々のサブプロセスにおいて2つのDOSアプリケーションを同時に実行しようとすると、 一方あるいは両方が非同期であるとしても、 2番目に起動したものは最初のものが終了するまで休止してしまいます。

最初のサブプロセスを操作できて終了を指示できるならば、 2番目のサブプロセスは正常に実行を継続するはずです。 しかし、2番目が同期サブプロセスであれば、 最初のサブプロセスが終了するまではEmacs自体が固まってしまいます。 ユーザー入力なしに終了できない場合には、 Windows 9Xを使っている限りリブート以外の選択はありません。 Windows NT/2Kであれば、プロセスを調べるアプリケーションを使って、 適当なntvdmを終了させます(するとDOSの2つのサブプロセスも終了します)。

このような状況でWindows 9Xをリブートすることが必要になったときには、 Startメニューの中のShutdownコマンドを使ってはいけません。 たいていの場合、システムが固まってしまいます。 かわりに、CTL-ALT-DELを打鍵してShutdownを選びます。 処理に数分かかる場合もありますが、多くの場合、機能してくれます。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

AJ.9 Windowsのシステムメニューの利用 (2005/05/08)

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=emacs21&node=Windows%20System%20Menu"
"texi/emacs21/AJ.9Windowsのシステムメニューの利用"へのコメント(無し)

Windows専用にコンパイルしたEmacsでは、 ALTキーを押してWindowsのメニューを立ち上げる機能を切ってあります。 これは、EmacsではALTMETAの働きをするからです。 Emacsを利用しているときには、 ユーザーはしばしばいったんMETAキーを押してから何もせずに放します。 この動作でWindowsのメニューが立ち上がってしまうと、 以降のコマンドの意味が変ってしまいます。 多くのユーザーにはこれでは邪魔でしょう。

w32-pass-alt-to-systemnil以外の値を設定すれば、 ALTキーを押したときの処理はWindowsのデフォルトに戻ります。


[ << ] [ >> ]           [表紙] [目次] [索引] [検索] [上端 / 下端] [?]