Emacs 20 Antinews (Emacs 21 付属)
時代に逆行する皆さんへ、Emacs ヴァージョン 20 へのダウングレード情報を
お届けします。Emacs 21 のさまざまな機能が省かれたことによる単純さをお
楽しみください。
-
表示エンジンは、可変サイズの文字やテキスト以外のものを表示する機能が省
略され、著しく単純化されました。これにより、Emacs 21 のような複雑な表
示レイアウトを防ぎます。例えば:
-
可変サイズ文字表示機能は Emacs 20 ではサポートされません。大きな文字は
使うことができず、イタリック体フォントの表示はとても読みにくくなります。
とはいっても、サイズがばらばらなテキストというのは、どうせ読みにくいも
のです。フレーム中の全文字が、同じ高さと幅で、きちんとグリッドに沿って
表示されていた方が、テキストは読みやすいに決まっています。
-
もはや Emacs は画像を表示しませんし、音を鳴らすこともありません。あな
たがテキストエディタに望むように、ただテキストだけを
表示します。
-
他の X ウィンドウのアプリケーションとの互換性のため、フェイスに対する
フォントの指定には、XLFD フォント名を用います。すなわち、フェイスを組
み合わせた際に、フォントの属性を混合することはできません。とはいえ、混
合は経済的ではないことが実証されています。フェイスの継承も取り除かれま
したので、"多すぎるフェイス" に悩まされることもありません。
-
3D、打ち消し線、上線など、見栄えに関するフェイスの属性が、いくつか省か
れました。
-
Emacs は、 X ツールキットのものではない、"粗末だが使いものにはなる" 独
自のスクロールバーを備えています。メニューのトグルボタンとラジオボタン
は、他のメニュー項目と全く同じ見掛けになりました。これによりメニューは
単純になり、必要以上に目立って他の項目の邪魔にならないようになりました。
-
ツールバーもツールチップもなくなりました。特に、GUD
(Grand Unified Debugger) モードで、変数名をクリックして変数の値
をツールチップ表示することができなくなりました。代わりに、Emacs 20 が
提供するデバッガへの直接インタフェースにて、display foo や
print bar など適切なコマンドをデバッガに送ってください。こ
れら命令の方が、その単語から、それが何をするのか意味がより自明です。
-
テキスト端末で色を表示することはできません。どうしても色を表
示したくて、しかし X を走らせることができない場合には、DOS エミュレー
タ上で MS-DOG 版の Emacs でも使っててください。
-
モードラインは、情報の表示に徹するため、マウスに反応しなくなりました。
バッファの移動、書き変え不可や変更済みの状態のトグル、マイナーモードの
ON/OFF には、キーボードからコマンドを打ってください。
-
X 上でのホイール付きマウスはサポートされません。時代をさかのぼるほど、
スクロールはどんどん遅くなっていきますし、ホイールつきのマウスは見かけ
ないものになっていくからです。代わりに Emacs 20 では C-v、
M-v キーを使ってスクロールしてください。(スクロールバーを使
うこともできますが、キーボードを使うことを薦めます。なぜならもっと以前
の Emacs ではそれすらサポートされなくなっていくだろうからです。)
-
ビジー状態を示すカーソルは省かれました。ディスプレイの解像度はどんどん
荒くなっていっており、それを表示するのが厳しくなってきたからです。端末
が提供する標準の明滅カーソルを使ってください。
-
スクロールバーやメニューの色といった、Emacs の見かけのいくらかは、X の
リソースだけからしか調節できないようになりました。色表示は X 上でしか
サポートされないので、X のやり方以外でそれを調節できる意味はないからで
す。X の奥義に通じていない方々のために、デフォルトで、みんな気に入るい
い感じの色が出るようになっています。
-
Emacs 20 では、C-n でバッファの最下端を越えて下の行に進もう
とすると、改行文字が挿入されます。
-
変数
show-trailing-whitespace は特別な意味を持たなくなり
ました。行末の空白文字は常に正しく表示されます -- ただの空白として。行
がスペースや TAB で終わっていないかどうかは、その行で C-e
を打ってみると分かります。同様に、バッファの終わりの空行に目印は付きま
せん。バッファの終わりは M-> を押して確認してください。:-)
-
行間のスペースは常に、フォントのデザインとウィンドウマネージャの設定に
従うことになりました。これによって、テキストの表示は常に予測どおりにな
ります。:-)
-
Emacs 20 では多国語編集の機能が簡略化されています。Emacs 19 ほどラディ
カルな簡略化ではないものの、以下のようなうっとうしい機能を省略すること
ができました。:
-
Emacs 参照カードの翻訳版は配布パッケージに含まれなくなりました。かつて
私たちは、計算機ユーザには英語を使って欲しいと思っていたからです。
-
混乱を避けるため、多くの言語のサポートが省略されました。例えばポー
ランド語、ケルト語 (Latin-8) はサポートされません。
Latin-9 環境も省かれました、かつてはユーロ記号なんて必要なかったからで
す。
-
Emacs 20 は、バッファを読むのに使っていたコード系がそのまま使える場合
でも、バッファの保存時には常にコード系を尋ねるようになりました。普段使っ
ているコード系が適当かどうか確認することもしません。
-
文字セットとコード系に関する詳細を表示する、
list-charset-chars, describe-character-set
といったコマンド、 C-u C-x = といったキーシーケンスはもはや
存在しません。ASCII 以外の文字については、言わぬが花なのです。
-
端末のコード系を CCL ベースのものにすることはできないため、
KOI8 や DOS/Windows コードページのコードを出力するキーボー
ドは直接はサポートされません。代わりに Leim パッケージの入力メソッドを
使ってください。
-
時代を遡ってみると、いくつかのシステムは重要でないかヴェイパーウェアの
段階になります。よって Emacs 20 は以下のものをサポートしません。:
-
Emacs 20 は IA64 アーキテクチャの GNU/Linux 上ではビルドできません。ま
た、Solaris や Irix などの64ビット OS 上であっても、64ビット Emacs を
ビルドすることはできません。
-
LynxOS も、Machintosh もサポートされません。当時それらの OS は、既に存
在していたにもかかわらず。
-
メニューバーの項目は、他の GUI のプログラムとず
いぶん違ったものになっています。統一されたルックアンドフィールというも
のは退屈だし、Emacs の比類なき機能には比類なきメニューバー項目が必要だ
と考えるからです。
-
メニューバーの `Options' メニューで設定した内容は保存され
ず、毎回新しいセッションを開始するたびに全てのオプションを設定しなおさ
なければなりません。とはいっても、推奨する使用法に従い、ログアウトする
まで1つの Emacs を使いつづけるようにしたなら、設定のやり直しはそんなに
頻繁でもないはずです。
-
ユーザの初期化ファイルをロードしている途中でエラーが発生しても、Emacs
20 はバッファをポップアップしてエラーメッセージを表示しません。代わり
に、ただ何かエラーが発生したと報告するのみです。初期化ファイルのどこで
エラーが起こったのかを特定するには、
(message "foo") のよ
うなコードを慎重に挿入して、`*Messages*' バッファに書いた
メッセージが表れているか確認するしかありません。
-
いくつかのコマンドは、もはや Transient Mark モードを特別扱いしません。
例えば
ispell は、Transient Mark モードが有効であっても、
マーク中にリージョン中だけをスペルチェックしようとせず、バッファ全体を
スペルチェックします。(Transient Mark モードは Emacs の精神からいささ
か外れるものなので、もっと初期のヴァージョンではそれを取り除こうかと考
えています。)
-
メニューバーを表示していない状態では、C-Down-Mouse-3 は、メ
ニューバーを表示していたときに表示したようなメニューを表示しません。
-
Emacs 20 では、テキスト端末でもウィンドウシステム上でも、
delete キーは DEL キーと全く同じように働き、カー
ソルのひとつ後ろの文字を削除するよう統一されました。これは、
delete と書かれたキーが、ウィンドウシステム下ではひとつ前の
文字を削除し、テキスト端末上ではひとつ後ろの文字を削除する、という、
Emacs 21 の矛盾を取り除いたものです。
-
バックアップファイルを指定したサブディレクトリ (変数
backup-directory-alist で指定) に作成する機能は省略されま
した。これによって、バックアップファイルを探す手間が削減されます。いつ
もオリジナルと同じディレクトリにあるのですから。
-
Emacs はもはや、互換性のない Emacs によってコンパイルされ、実行できな
いバイトコードを含む Lisp ファイルのロードを拒否しません。かわって、そ
のようなバイトコードに遭遇するとコアダンプします。とはいえ、これはそう
そう起こることではありませんし、遠い過去に Emacs の全てのヴァージョン
が統一されたら、全く発生しなくなります。
-
C-x 5 1 コマンドは省略されました。現在のフレーム以外の全て
のフレームを消したいときには、ひとつずつ消してください。
-
CC モードはいまや、統一のため、インデントスタイルといったカスタマイズ
可能なオプションを、ただひとつだけ保持します。例えば、Java 用にスタイ
ルを選択すると、C や C++ のバッファにも同じスタイルが使われるようにな
ります。
-
Isearch は、マッチするほかの部分をハイライトしません。現在のマッチだけ
を表示し、あなたの注意をそらしません。インクリメンタルサーチ中のエコー
エリアでの Mouse-2 はエラーを発生し、現在の選択している文字
列をを検索文字列に加えることはしません。同じことは M-y でで
きます。
-
ange-ftp でリモートのファイルを編集する際に、ポート番号を
指定できる機能は省略されました。代わりに Emacs 20 では、ドキュメントに
書かれていない ange-ftp-normal-login という関数でポートを
指定することができます。(ソースをいじれってことさ!)
-
Emacs 20 はリモートのファイルのタイムスタンプの変更をチェックしません。
かつてあった古い FTP プログラムは、どのみち、タイムスタンプを返してく
れないからです。`^M' 文字を行末に付加する Windows スタイ
ルの FTP クライアントは、Emacs 20 の
ange-ftp では特殊な
挙動を示します。予期しない結果を引き起こして、人生を楽しませてくれるで
しょう。
-
多くの複雑な表示機能、例えばマウスに反応してハイライトするリージョン、
メニュー項目の上でポップアップするヘルプ文字列といったものは、MS-DOS
ヴァージョンでは動作しません。MS-DOS 上ではスペルチェックも動作しませ
んし、Eshell が存在しないので、まともに動くshell モードもありません。
これは、ダム端末に似せて作られたという MS-DOS の精神にのっとっています。
-
woman パッケージは省略されましたので、POSIX 標準でないシ
ステム上でマニュアルページを読むには、真の man (コマンド) が
必要です。(マッチョではない人は Info でも読んでてください。)
-
recentf も省略されました。なぜなら、頻繁に編集するファイ
ルの名前くらい覚えておけるだろうと思うからです。ディスクの容量もどんど
ん少なくなっているので、どうせファイルは今より少ない数しかなくなるので
す。この機能がなくなっても、気付く人もいないでしょう。
-
field プロパティは Emacs 20 にはありません。よって、Emacs
のバッファの背後で外部プログラムを動かすさまざまなパッケージは、一般に、
ユーザの入力によるテキストと、サブプログラムの出力とを区別することがで
きません。それでもこの区別を行いたい場合は、Emacs 20 が提供する変数
comint-prompt-regexp を使って、入力からプロンプト文字列を
検出してみてください。
-
Delphi のソース、 PostScript ファイル、コンテキスト diff、
`TODO' ファイルを編集するためのメジャーモードは省略されました。
代わりに Fundamental モードを使ってください。
-
他にも、Emacs 21 であなたの暮らしを必要以上に混乱させてしまった多くの
パッケージが、Emacs 20 には含まれていません。Ebrowse で C++ のクラスを
ブラウズすることも、SQL データベースに接続することも、LDAP や他のディ
レクトリサービスにアクセスすることも、Eshell でシェルコマンドと Lisp
関数を調和させることもできません。
-
減少を続けるメモリ容量とディスク容量に対応して、Emacs 20 では、他にも
多くの関数やファイルが省略されました。