GNU Emacs 23.1 は 2009年7月にリリースされましたが、2011年3月 GNU Emacs 23.3 がリリースされたのを機に、重い腰を上げ 22 から移行することにしました。
今さら感がありますが、 22.3 から 23.3 への移行の個人的なメモです。
追加・変更されたメジャーモードについては量が多いので省略しました。
詳しくは C-h n で表示される NEWS に全て書いてあります。
リージョン (選択範囲) 関連
- transient-mark-mode
- マイナーモード。デフォルトで t になった。
- shift-select-mode
- マイナーモード。デフォルトで t 。シフト押しながらカーソル移動で範囲選択。
- set-mark-default-inactive
- 変数。デフォルトで nil。 t ならば C-@ 2回で範囲をハイライト。 Emacs 22 では t の挙動がデフォルトだったが、 23 ではその挙動を変える変数として用意された。
- select-active-regions
- 変数。デフォルトで nil 。 t ならば範囲選択するだけでキルリングにコピー。
- use-empty-active-region
- 変数。デフォルトで nil 。 t ならば範囲に対して実行するコマンドが、空の範囲に対しても実行されるようになる。
- use-region-p
- 関数。範囲指定済みなら t を返す。空の範囲の場合は use-empty-active-region の値に依存。
- region-active-p
- 関数。範囲指定済みなら t を返す。
- (interactive "^")
-
interactive で ^ を指定できるようになった。 shift-select-mode が non-nil の場合、関数 handle-shift-selection を呼ぶ。
^ が使われている C-M-f (forward-sexp) を例にすると、以下の4パターンで範囲の変化の仕方に違いが出る。- 範囲を選択してから C-M-f (範囲を拡大する)
- 範囲を選択してから shift + C-M-f (範囲の開始位置を変更)
- shift + カーソルで範囲を選択してから C-M-f (範囲を無効にする)
- shift + カーソルで範囲を選択してから shift + C-M-f (範囲を拡大する)
- C-@ C-@
- 2回で、 Mark, Deactivate mark の繰り返し
- 範囲選択してからTAB
- indent-region
ヘルプ関連
- help-window-select
-
変数。デフォルトで 'other。 'always (t) ならば
*Help*
表示時に常にウィンドウを選択する。 - help-downcase-arguments
-
変数。デフォルトで nil。 t ならば
*Help*
の引数を以前と同じ小文字表記にする。 - help-go-forward
- コマンド。 [back] で戻った時に [forward] で進む。
- This variable is potentially risky when used as a file local variable.
-
ファイルローカル変数として危険かどうかを表示するようになった。
ファイルローカル変数とはファイルの1行目の-*- 変数: 値 -*-
や、最後のLocal Variables:
等のこと。 - This variable was introduced, or its default value was changed, in version 23.1 of Emacs.
-
変数が追加・変更された Emacs のバージョンを表示するようになった。
これは defcustom で :version プロパティを追加した変数のみ有効。
例:(defcustom select-active-regions nil "If non-nil, an active region automatically sets the primary selection." :type 'boolean :group 'killing :version "23.1")
;; 現在読み込み済の (intern された) シンボルで、 defcustom が :version ;; プロパティを付加したものを列挙する。下の例では 23 から始まるものだけを抽出。 (let (symbols version) (mapatoms (lambda (x) (setq version (get x 'custom-version)) (when (and version (string-match "^23" version)) (setq symbols (cons x symbols))))) (insert (mapconcat 'symbol-name (sort symbols 'string<) "\n")))
Dired 関連
- M-s f C-s
- dired-isearch-filenames
- M-s f C-M-s
- dired-isearch-filenames-regexp
- M-s a C-s
- dired-do-isearch. buffer-menu や ibuffer でも似た挙動。
- M-s a C-M-s
- dired-do-isearch-regexp. buffer-menu や ibuffer でも似た挙動。
- C-x C-q
- wdired
- その他
- Dired からシェルコマンドを実行 (!, &) する時に、候補 (guess) を M-n で選ぶようになった。
追加されたマイナーモード
- goto-address-mode
- デフォルトでオフ。バッファの URL をボタン化する。
- minibuffer-depth-indicate-mode
- デフォルトでオフ。 minibuffer の深度を表示する。 enable-recursive-minibuffers が non-nil の場合のみ有効。
- visual-line-mode, global-visual-line-mode
- デフォルトでオフ。 C-a, C-e が見た目の行で実行される。オンにした時、フリンジの矢印を消さずに元のままにする場合は、変数 visual-line-fringe-indicators の値を '(left-curly-arrow right-curly-arrow) にする。
- whitespace-mode, global-whitespace-mode
- デフォルトでオフ。タブやスペースの視覚化等。以前のものを一新したらしい。
コマンド
- M-s o
- occur
- M-s w
- isearch-forward-word
- M-s h f
- hi-lock-find-patterns
- M-s h l
- highlight-lines-matching-regexp
- M-s h p
- highlight-phrase
- M-s h r
- highlight-regexp
- M-s h u
- unhighlight-regexp
- M-s h w
- hi-lock-write-interactive-patterns
- isearch 中に M-s o
- occur に切り替える。
- minibuffer で isearch
- 履歴を検索する (minibuf-isearch.el みたいなもの)。
- completion-at-point (M-TAB)
- カーソル位置の単語を補完。
- C-l, M-r
- 連打で middle, top, bottom と変化するようになった。 変数 recenter-positions で順番を指定。
- async-shell-command (M-&)
- 非同期(バックグラウンド)でシェルコマンドを実行。 M-! で末尾に & を付加したものと同じ。
- zrgrep
- 再帰的に gzip ファイルの中身を grep。
- emacs-uptime
- Emacsの稼働時間を返す。
- emacs-init-time
- Emacsの起動にかかった時間を返す。
- display-time-world
- 世界の時刻を表示。
- butterfly
- バタフライ効果でHDDにビットを立てる。 http://xkcd.com/378/
変数 (ユーザーオプション)
- line-move-visual
- デフォルトで t。C-n, C-p が見た目の行で実行される。
- word-wrap
- デフォルトで nil。t ならば単語単位で折り返しをする。スペース区切りなので日本語ではあまり効果がない。
- initial-buffer-choice
- デフォルトで nil。Emacs 起動時のバッファを指定。
- user-emacs-directory
-
デフォルトは
~/.emacs.d/
。 - yank-pop-change-selection
- デフォルトで nil。 t ならば yank-pop した時に他アプリのコピーバッファを同期させる。
- save-interprogram-paste-before-kill
- デフォルトで nil。 t ならば yank だけでなく kill した時にも他アプリのコピーバッファを kill-ring に保存する。
- kill-do-not-save-duplicates
- デフォルトで nil。 t ならば同じ文字列を連続でコピーした場合、重複を保存しない。
- tab-always-indent
- デフォルトで t。 complete を指定できるようになった。
- completions-format
-
デフォルトで nil。 vertical ならば
*Completions*
の並び方が縦に。
Elisp 関連
- 内部コード
- utf-8-emacs に変更。
- display-buffer
- コマンド。 split-window-preferred-function を使うようになった。
- split-window-preferred-function
- 変数。デフォルトで split-window-sensibly 。
- split-height-threshold
- 変数。デフォルトで 80。nil またはフレームの高さがこの値より小さい場合、 split-window-sensibly は上下分割しない。
- split-width-threshold
- 変数。デフォルトで 160。nil またはフレームの幅がこの値より小さい場合、 split-window-sensibly は左右分割しない。
- read-shell-command
- 関数。ミニバッファで外部プログラムを読み取る。補完が効く。 M-!, M-&, M-| や、Dired の !, & 等で補完が効くようになったのも、この関数のおかげ。
- process-lines
- 関数。外部プログラムを実行し、出力の一行ずつをリストにして返す。
- initial-environment
- 変数。環境変数の初期値。
- check-coding-systems-region
- 関数。文字列または範囲の文字コードをチェック。