Emacs 29で導入される予定のおもしろい機能の紹介


気付いたらEmacsのバージョンも次は29というところまで進んできました。 最近あまりいじれていなかったのですが、NEWSを見てみるといろいろとこんな機能が入ったのかと思うのが多々あったのでご紹介します。

現時点では、Emacs 29がリリースされる日はわかりませんが、楽しみに待ちたいと思います。

というわけで、本稿はHEADのetc/NEWSからピックアップしてのご紹介となります。

https://emba.gnu.org/emacs/emacs/-/blob/master/etc/NEWS

フォントサイズの変更(グローバル反映)

C-x C-M-+C-x C-M-- で全てのバッファのフォントサイズが変更できるようになりました。 これまで、 C-x C-+ C-x C-- でカレントバッファのフォントサイズは変更できましたが、 それのグローバル版になります。

使い道が思いつくようなつかないようなという感じですが、プレゼンする時などにはよさそうですね。

コマンド実行 M-xとM-X

これまであったインタラクティブなコマンドを実行する M-x (executive-extended-command) がありましたが、 類似のコマンドとして M-X が追加されました。 これは M-x が全てのコマンドを実行できるのに対して、 M-X はカレントバッファに関係あるコマンドだけが候補になります。

Scratchバッファでそれぞれ実行してみると、 M-X のほうがコマンドの候補がはじめから絞られてることがわかります。

正直、絞り込みだったらIvyなりVerticoなり、その他絞り込みインタフェースが充実してるのでそちらを使うかな。 絞りこむには多少はコマンドを覚えてないといけないので、どうしても思いだせないときは役に立つかも。

行の複製 duplicate-line/duplicate-dwim

duplicate-line duplicate-dwim が追加されます。 その名の通り行の複製や、選択箇所をいいかんじに複製してくれます。

emacs lispの手習いで書いたりすると思いますが、まさか公式採用されるとは思わなかったですね。 あまり頭を使わずに編集する場合に複製して差分だけいじりたいって思うことはありつつ、 自分はコマンドを自作してこなかったので結構うれしいです。

Emacsの再起動 restart-emacs

restart-emacs は、その名の通りEmacsを再起動するコマンドです。 再起動時は同じコマンドライン引数で起動してくれるようです。

パッケージいじってるときは結構再起動させて反映チェックすることが多いので、 嬉しいといえば嬉しいのかな……?

パッケージの更新 package-update

(追記) こちらリリース前にコマンドが修正されて、 package-upgrade になったようです。(追記ここまで)

これまでpackage.elでインストールしたパッケージを更新したい場合は、 M-x list-packages して アップデートしたいものを選んで実行する必要がありました。 これが package-update コマンドで実現できるようになります。 M-x package-update すると、アップデートできるパッケージが候補に出てくるので、 そこから更新したいものを選んで実行すると簡単に更新できます。

すべての更新可能なパッケージを更新する package-update-all もあります。

これまでパッケージの更新は、 package-refresh-contents して、 list-packages して U で一括選択して x で実行となんだかんだ面倒だったので、 これが package-refresh-contents package-update-all で済むのは多少楽になりそうです。 未確認なのは、list-packagesだとparadoxが使えて並列アップデートができているはずなので package-update-all でもそれが利くのかどうか。 モードラインにはその表示がでなかったので数が多いと、もしかしたらlist-packagesの方が良いってこともありそうです。

(追記) 何度でも蘇えるさ scratch-buffer

Emacs起動時に生成され、Lispのちょっとした動作確認などにも使える *scratch* バッファですが、 誤って消してしまって途方にくれたことある方もいるのではないでしょうか? 私はあります。

なんとそんな場合でも安心。 scratchバッファを再生成してくれる scratch-buffer コマンドが追加されました。 そもそもバッファ名が重要なので、 *scratch* という名前でバッファを作ればよいということが Emacs-JP Slackで流れててそれ自体も目が点だったのですが、これで気軽にスクラッチできますね。

まとめ

今回は、Emacs 29の新機能から、本筋ではないちょっと面白系の更新をご紹介しました。 実はEmacs 29は、linumが撤廃されるとか結構アグレッシブな変更もあるようなので、 その辺も別途確認していきたいと思います。


See also

comments powered by Disqus