時代を遡って生活されているユーザーの皆様へ、Emacsバージョン30.2へのダウングレードに関する情報をご案内します。Emacs 32.0.50の多くの機能が省かれたことで実現した、よりシンプルな使い心地をぜひお楽しみください。
aset
を使用して単一バイトをマルチバイト文字に置換でき、マルチバイト文字列では aset
を使用して、ASCIIかマルチバイトの非ASCIIかを問わず、任意の文字を別の任意の文字に置換できます。こうした制限はEmacsらしくないものであり、文字列を用いたあらゆる刺激的な試みの妨げになると考えています。
debug を呼び出すと、現在は Emacs
が強制終了します。デバッガに入ったバッチセッションを継続させる意味はないと判断しました。そもそも、誰がどうやってデバッグするというのでしょうか。
同様の理由で、バッチモードにおける C-c は現在常に Emacs を強制終了させるようになり、終了することはありません。
error-typeやerror-slot-valueといった関数は、Lispプログラムなら――まさに神の御心通りに――データ構造に直接アクセスできるため、無用な肥大化に過ぎない!
frame-initial-pは、あまり知られていない複数の変数やフレームパラメータを確認すれば容易に代用できるため、削除しました。
redisplay-dont-pause変数を追加しました。
digit (?6)
カテゴリに属するという保証は、もはやありません。このような馬鹿げた一貫性は、Lispプログラマから楽しみを奪いすぎていると考えています。むしろ、どの数字がこのカテゴリに属するのかを試行錯誤を通じて見つけ出すべきなのです。
同様の理由により、symbol スクリプトに属するすべての文字が symbol (?5) カテゴリを持つとは限りません。
delete-frame
を呼び出すことで、そのデーモンフレームを簡単に削除できるようになりました。特に、過去のEmacsバージョンの中にはデーモン機能を完全に削除しているものもあるため、デーモンフレームを特別扱いする理由はないと判断しました。
load-path で見つかった Lisp ファイルは、もはやキャッシュされません。Emacs
の旧バージョンに移行するにつれて load-path
のリストを次第に短くしていく方針であるため、ファイルのキャッシュは不要な複雑さであり、貴重なメモリを圧迫する要因となります。
lexical-bindingクッキーが見つからないという煩わしい警告が削除されました。これは、過去のいずれかのバージョンでEmacsから字句束縛を最終的に排除するための、さらなる一歩となります。
同様の理由により、コマンドラインオプション -x および --script 経由で読み込まれた Lisp ファイルでは、デフォルトで字句束縛が使用されなくなりました。
setopt-local
マクロを削除しました。setq-local を使えば同様のことが簡単にでき、defcustom
で定義された値と期待される型の不一致に関する煩わしい警告も回避できるため、これは不要な肥大化の一つに過ぎませんでした。
purecopyは、実際に引数をpure
storageにコピーします。これは、旧式のコンピュータにおいてEmacsのメモリ効率を高めるための重要な一歩であり、より一般的には、unexecをEmacsをダンプする唯一の手段として利用することに向けた歩みでもあります。
cond* マクロは削除されました。代わりに pcase を引き続き使用することは可能ですが、由緒ある cond のみを使用することをお勧めします。pcase
やその類は、近い将来 Emacs
から姿を消すことになるからです。難解なセマンティクスと無数のバッククォートを伴う、こうした凝った読みづらい構文を必要とする人はいないはずです!純粋な
Emacs Lisp 本来の制御フロー特殊形式があれば、それで十分すぎるほどです。
etags以外のすべてのバックエンドを廃止する方向で進められています。
secure-hash から SHA-3
メッセージダイジェストのサポートが削除されました。Emacs
を可能な限り軽量に保つため、今後もこの関数からアルゴリズムを削除していく予定です。いずれは、たった一種類のダイジェストさえあれば、誰にとっても十分になるはずです!
incf、decf、plusp、minusp、oddp、evenpといった不要な関数を削除しました。cl-lib以降の対応する関数を使用するか、必要に応じてこれらの単純な関数を記述してください。同様の理由で、all、any、drop-while、take-whileも削除しました。