G. Emacs 18ニュース(の反対)
過去の世界に住むユーザたちへ、Emacsバージョン18へのダウングレード情報
を送ります。Emacs 19特有の機能が沢山なくなって、素晴らしくも単純になった
世界をお楽しみください。
G.1 Lispに残っていた古い機能
Emacsバージョン18でなくなったり変更された関数は以下のとおりです。
G.2 コンパイル機能の変更
-
Emacs 18ではインライン関数はありません。関数呼出しを実現するコードを必要
以上に大きくしてしまうことが判明したからです。(サイズが小さいのもEmacs
18の新しい特徴の一つです)
-
特殊形式
eval-when-compile
とeval-and-compile
はなくなりまし
た。compile-defun
コマンドもなくなりました。
-
同一ディレクトリに`.elc'ファイルとそれより新しい`.el'ファイル
があっても、Lispファイルやライブラリのロード時にそれについての警告はしな
いようになりました。うるさいもんね。
-
バイトコード関数を表す特別なデータ型はなくなりました。コンパイルされた関
数は関数
bytecode
を起動することによって動くようになりました。この
関数はバイトコード・インタプリタを起動します。
G.3 浮動小数点数
Emacs 18では浮動小数点数を扱う組込みの機能はなくなりました。代わりに浮
動小数点数をエミュレートする使いやすいLispプログラムがあります。でも、こ
れを使うにはプログラムを書かなきゃなりませんが。
なんにせよ、マクロや関数、述語などは浮動小数点数の存在を考える必
要がなくなりました。
-
関数
string-to-number
、述語floatp
、変数
float-output-format
はなくなりました。
-
関数
float
、truncate
、floor
、ceil
、
round
、logb
はなくなりました。同様にabs
、cos
、
sin
、tan
、acos
、asin
、atan
、
exp
、expt
、log10
、log
、sqrt
もなくな
りました。
-
format
関数は、浮動小数点数の印字を指示する`%e'、`%f'、
`%g'を扱わなくなりました。message
についても同様です。
G.4 基本編集関数の変更
G.5 テキスト属性
テキスト属性はなくなりました。
G.6 ファイル関連の機能
ファイル関連の関数の多くが削除されたり単純化されました。変更内容の概略を
以下に示します。
-
関数
file-accessible-directory-p
、file-truename
、
make-directory
、delete-directory
、
set-visited-file-modtime
、
write-region
、write-contents-hooks
、after-save-hook
、
directory-abbrev-alist
、abbreviate-file-name
、
set-default-file-modes
、default-file-modes
、
unix-sync
はなくなりました。
-
read-file-name
の"initial file name"引数はなくなりました。
-
それから、
file-attributes
から返されるリストの12番目の要素は削除さ
れました。
-
directory-files
は常にファイル名のリストをソートするようになりまし
た。滅茶苦茶な順番に並んだファイル名を見せるのはユーザ・フレンドリーじゃ
ないですから。
-
変数
write-contents-hooks
、local-write-file-hooks
はなくな
りました。
G.7 魔力をもつファイル名
魔法のファイル名はなくなりました。すまん。マジックポイントを全部使い切っ
てしまったのだ。
G.8 フレーム
Emacs 18ではフレームは一つしかありません。フレーム関連の関数は全て削除
されました。
G.9 X Window System関連の機能
大艦巨砲主義を排し、EmacsとXとの関係を単純化することに成功しました。
-
関数
mouse-position
とset-mouse-position
、特殊形式
track-mouse
はなくなりました。
-
同様に、関数
x-set-selection
、x-set-cut-buffer
、
x-open-connection
、x-close-current-connection
はEmacs
Lisp 18から全て削除されました。
-
Xサーバとスクリーンに関する情報を扱う関数群がばっさり削除され、すべての
サーバと平等につき合えるようになりました。削除された関数は、
x-display-screens
、x-server-version
、
x-server-vendor
、x-display-pixel-height
、
x-display-mm-height
、x-display-pixel-width
、
x-display-mm-width
、x-display-backing-store
、
x-display-save-under
、x-display-planes
、
x-display-visual-class
、x-display-color-p
、
x-display-color-cells
です。
-
それから、変数
x-no-window-manager
と関数x-synchronize
、
x-get-resource
が削除されました。
-
x-display-color-p
は、名前がx-color-display-p
に変更され
ました。x-color-defined-p
は廃止されました。
-
x-popup-menu
の1番目の引数としてキーマップを渡すことはできなくな
りました。
-
関数
x-rebind-key
とx-rebind-keys
は削除されました。
-
x-parse-geometry
は廃止されました。
G.10 便利になったウィンドウ操作
Emacs 18がある今となっては、Emacs 19のウィンドウはいろいろな面で時代遅
れとなりました。我々はウィンドウ操作について全面的な見直しを行ない、以下
のような変更を施しました。
-
関数
window-at
、window-minibuffer-p
、
set-window-dedicated-p
、
window-dedicated-p
、coordinates-in-window-p
、
walk-windows
、window-end
を削除
しました。
-
変数
pop-up-frames
、pop-up-frame-function
、
other-window-scroll-buffer
、display-buffer-function
を削除
しました。
-
フレームはEmacs version 18ではオブジェクトではなくなったので、関数
minibuffer-window
の引数としてフレームを渡すことはできなくなりま
した。この関数はミニバッファが使用しているウィンドウを返します。
-
フレームは一つしかないので、関数
next-window
と
previous-window
はall-frames引数を受け取らなくなりました。
-
関数
get-lru-window
、get-largest-window
、
get-buffer-window
、get-buffer-window
も、調べるべきフレー
ムは一つしかないので、オプション引数all-framesを取らなくなりまし
た。
G.11 表示機能
-
オーバレイやフェースはなくなりました。
-
後のバージョンでは現在の行番号の表示に使われているモード行構成要素
`%l'は削除されました。変数
line-number-mode
と
line-number-display-limit
は削除されました。
-
baud-rate
は変数ではなく関数になりました。
-
nil
一つだけを引数にしてmessage
を呼ぶことはできなくなりまし
た。つまり、ミニバッファの内容が確実に表示されているようにすることはでき
なくなりました。
-
変数
temp-buffer-show-function
の名前は
temp-buffer-show-hook
に変更されました。
-
関数
force-mode-line-update
は削除されました。代わりに以下のような
式を使用してください。
| (set-buffer-modified-p (buffer-modified-p))
|
-
表示テーブルはなくなりました。ASCIIは本来あるべき姿で表示されるよう
になりました。
G.12 入力イベントの扱い
入力イベントについてもっとも大きな変更は、ファンクション・キーとマウス
に関するイベントが削除されたことでしょう。入力イベントは文字だけになった
のです。それに、文字は0から127の範囲のコードとメタ・ビットとで表現される
ようになりました。これらの変更により、単純化が非常に大きく進みました。
-
define-key
やglobal-set-key
、read-key-sequence
、
local-set-key
のような関数はEmacs 19では文字列またはベクタを受
けつけるようになっていましたが、文字列のみを受けつけるようになりました。
-
説明文字列に関する関数(
single-key-description
、
key-description
など)もベクタは受けつけずに文字列だけを受けつける
ようになりました。
-
関数
read-event
、event-start
、posn-window
、
posn-point
、posn-col-row
、posn-timestamp
、
scroll-bar-scale
、event-end
は文字イベントには意味がないの
で削除されました。
-
unread-command-events
とlast-event-frame
変数は削除されま
した。
-
関数
this-command-keys
とrecent-keys
は常に文字列を返すように
なりました。同様に、キーボード・マクロの定義にもベクタは使用できず、文字
列のみしか使用できなくなりました。
-
文字イベントでは意味がないので、対話引数の指定子として`e'は使用でき
なくなりました。
-
Emacs 18では、メタ文字を文字オブジェクトとして、文字列と同じく、128と
ASCIIコードとの和で表現するようになりました。
G.13 メニュー
-
メニューをキーマップとして定義することはできなくなりました。それぞれの仕
組みにはそれぞれの特性に合わせてプログラム・インタフェースを用意するのが
よいシステム設計であり、それでこそ両方式の利点を活かせるのです。キーマッ
プとメニューの統合による単純化には無理があると我々は考えています。
-
Emacs 18では、メニューはマウスでのみ使用できるようになりました。キーボー
ドでのメニュー操作は非常に多くのユーザを大混乱におとしいれることになって
しまいます。
-
Emacs 18ではメニュー・バーはなくなりました。メニュー・バー関連の全ての関
数と変数は削除されました。
G.14 ミニバッファ関連の変更
-
ミニバッファでのヒストリ機能はなくなりました。また、ミニバッファでの入力
関数
read-from-minibuffer
とcompleting-read
のオプション引数
histを削除しました。
-
read-from-minibuffer
などのミニバッファでの入力関数のinitial
引数として、(string . position)
の形式のコンス・セルを
渡すことはできなくなりました。
-
関数
read-no-blanks-input
のinitial引数は必須になりました。
G.15 コマンド定義に関する新機能
-
対話引数の指定子として`@'は使用できなくなりました。
-
Emacs 18では、対話引数の指定のプロンプト文字列として、書式指定と
同様な`%'-指定子は使用できなくなりました。
-
属性
enable-recursive-minibuffers
は意味を持たなくなりました。
G.16 入力からの読込みに関して削除された機能
-
関数
set-input-mode
の3番目の引数(meta)は削除されました。代わ
りに、変数meta-flag
が追加されました。この変数をt
にセットす
るとMetaキーが有効になり、nil
なら無効になります。変数
meta-flag
で指定できるのはこの2種類だけです。
-
また、変数
extra-keyboard-modifiers
も削除されました。
-
関数
keyboard-translate
、変数num-input-keys
と
function-key-map
は削除されました。
G.17 構文テーブルに関して削除された機能
-
関数
skip-syntax-forward
、skip-syntax-backward
、
forward-comment
は削除されました。
-
"接頭辞構文(prefix syntax)"を表す構文フラグはなくなりました。また、も
う一つのコメント形式を表すフラグもなくなりました。Emacs 18では、構文テー
ブルにはそれぞれ1種類ずつしかコメント形式を持てません。
-
変数
words-include-escapes
はなくなりました。
G.18 ケース・テーブル
-
ケース・テーブルはEmacs 18ではなくなりました。そのため、関連する関数
set-standard-case-table
、standard-case-table
、
current-case-table
、set-case-table
、
set-case-syntax-pair
は削除されました。
G.19 バッファを扱う機能
-
バッファ関連の関数
buffer-modified-tick
と
generate-new-buffer-name
は削除されました。
-
buffer-disable-undo
の名前はbuffer-flush-undo
に変更され
ました。わかりやすい名前になった、でしょ?
-
Emacs 18では関数
other-buffer
は引数を一つしか取らないようになり
ました。
-
関数
rename-buffer
の引数として、すでに存在しているバッファ名を
渡すことはできなくなりました。
-
ローカル変数
list-buffers-directory
は削除されました。
-
フック
kill-buffer-hook
はなくなりました。
G.20 ローカル変数について
-
関数
kill-all-local-variables
は、常にカレント・バッファにローカル
な変数全てを消し去るようになりました。
-
voidである変数をバッファローカルにした際に、その変数の値が
nil
になるようになりました。
-
変数のグローバルな値がvoidであることはなくなったので、関数
default-boundp
は削除されました。
-
特殊形式
defconst
とdefvar
は、変数がカレント・バッファにロー
カルなとき、変数のグローバルな値ではなくローカルな値をセットするようになり
ました。
G.21 サブプロセス関連の機能
-
call-process
とcall-process-region
はサブプロセスの終了ステー
タスを返さないようになりました。きっとうまく実行されますよ。信じてくださ
い。
-
非同期プロセス関連の標準機能はVMSの上では使用できなくなり、代わりに、VMS
向けに特別に設計された非同期プロセス関数群が追加されました。でも、VMSで
しか使えない機能のドキュメントをわざわざ書くのも面倒なので、すいません。
ルーク、ソースを使え。
-
関数
signal-process
は削除されました。
-
トランザクション待ち行列の機能は廃止されました。関連する関数
tq-create
、tq-enqueue
、tq-close
は削除されました。
G.22 時刻、時間、遅延の扱い
-
関数
current-time
、current-time-zone
、run-at-time
、
cancel-timer
は削除されました。
-
関数
current-time-string
はオプション引数を取らなくなりました。
-
関数
sit-for
とsleep-for
はミリ秒単位での時間指定を行なう
ためのオプション引数を取らないようになりました。また、sit-for
の
三つ目のオプション引数nodispはなくなりました。
-
accept-process-output
関数の二つ目と三つ目のオプション引数はな
くなりました。引数はプロセス一つだけになりました。
G.23 Lispデバッガからなくなった機能
-
Emacs 18では、起きたエラーの種類によってデバッガの起動を抑制することはで
きなくなりました。変数
debug-on-error
の値が非nil
ならば、エ
ラーの種類によらず必ずデバッガが立ち上がるようになりました。
-
変数
command-debug-status
と関数backtrace-frame
は削除さ
れました。
G.24 メモリ割り当てに関する変更
-
関数
memory-limit
は削除されました。
-
Emacs 18では浮動小数点数は扱えないので、
garbage-collect
の返すリ
ストは浮動小数点数に関する情報を含まないようになりました。
G.25 フックに関する変更
-
フック
auto-save-hook
、pre-abbrev-expand-hook
、
pre-command-hook
、post-command-hook
は削除されました。
-
変数
revert-buffer-insert-file-contents-function
は削除されました。
-
また、関数
add-hook
も削除され、フックの追加は手で行なわなくてはな
らなくなりました。確実な動作を望むのであれば、フック変数の設定には旧来の
方法を取ってください。つまり、関数のリストではなく、関数一つだけを入れる
ようにしてください。まあ、強制するわけではありませんが。
-
変数
lisp-indent-hook
の名前はlisp-indent-function
に変更
されました。
-
変数
auto-fill-function
の名前はauto-fill-hook
に変更され
ました。
-
blink-paren-function
の名前はblink-paren-hook
に変更され
ました。
-
変数
temp-buffer-show-function
の名前は
temp-buffer-show-hook
に変更されました。
This document was generated by Yasutaka SHINDOH on September, 29 2006 using texi2html 1.76.