Emacs Lisp モードを便利にする機能 3 選(auto-complete, eldoc, rainbow-delimiters)

今回は Emacs Lisp を編集する上で役に立つ機能を 3 つ(+1) 紹介します。

機能 概要
auto-complete 補完候補のポップアップ表示
eldoc 関数定義の表示
rainbow-delimiters-mode 括弧をレベルに応じて色分け
rainbow-mode 色名に色を付ける

auto-complete と eldoc は Emacs Lisp 編集用機能ですが、それ以外の言語でも使えるものがあります。
rainbow-delimiters-mode は Lisp 以外にも括弧の多い言語には使えると思います。
rainbow-mode は名前が似ていて紛らわしいかなと思って、ついでで紹介しました。 こちらは CSS や html モードで役に立つ機能です。


なお、それぞれの機能はパッケージを使ってインストールします。 パッケージ管理機能については以前の記事をご覧ください。 また、 Emacs Lisp 用以外では、どんな言語のパッケージがあるかはパッケージの一覧で、 "auto-complete", "ac" や "eldoc" などで検索してみてください。

auto-complete

emacs-lisp モードでは通常 M-TAB を使って補完を行います。 auto-complete を入れると Visual Studio のようなポップアップを使った補完ができるようになります。

使い方

使用する場合には、まず auto-complete-mode(マイナーモード) にします。
後述する設定をすれば emacs-lisp-mode などで auto-complete-mode になると思います。 モード行に AC と出ていれば、 auto-complete-mode です。


このモードでは何かを入力した時、補完候補が表示されます。
ここで、 TAB を押すと確定します。
emacs_ac_first.png

そのまま、もうちょっと待っていると補完候補のポップアップが表示されます。 ここでは TAB で補完候補を順次選んでいきます。
emacs_ac.png


なお、 auto-complete の作者の方は日本人なので、詳しいマニュアルもあります。

設定

auto-complete はパッケージを使ってインストールすることができます。

auto-complete をパッケージでインストールした後、 以下の記述を ~/.emacs.d/init.el に追加します。 これで emacs lisp のファイルを開くと auto-complete モードとなります。
(add-hook 'emacs-lisp-mode-hook '(lambda ()
                                   (require 'auto-complete)
                                   (auto-complete-mode t)
                                   ))
auto-complete には Emacs Lisp だけでなく、他の言語でも使用できるものあると最初に書きましたが、 それらを一つ一つ設定をしていくのは面倒です。
次のように記述すると auto-complete-config に登録されているモードであれば、 auto-complete-mode になります。
(require 'auto-complete-config)
(ac-config-default)

eldoc

eldoc は入力中に関数の定義を表示してくれます。 また、 eldoc-extension を入れることで、機能を少し拡張することができます。

使い方

eldoc-mode ではモード行に ElDoc と出ます。
このモードになっていれば、入力時などに関数定義がミニバッファーに表示されます。
emacs_eldoc.png

eldoc-extension も入れていると、定義の後に簡単な説明が追加されます。
カーソル位置の太字がハイライトに変わる機能もあるらしいのですが、 私の環境ではハイライトには変わりませんでした。 ただ、変えたい場合は設定で変えることもできます。

設定

eldoc はデフォルトでインストールされていると思います。 パッケージで eldoc-extension をインストールします。
その後、以下の記述を ~/.emacs.d/init.el に追加します。
(add-hook 'emacs-lisp-mode-hook '(lambda ()
                                   (require 'eldoc-extension)
                                   (eldoc-mode t)
                                   ))
また、 Emacs のカスタマイズ機能を使えば、カーソル位置の太字を任意の Face に変更することができます。
M-x customize-group eldoc でカスタマイズ画面を開いた後、 [Eldoc Highlight Function Argument] の項目で設定します。

emacs_eldoc_customize.png

rainbow-delimiters-mode

rainbow-delimiters-mode では深さレベルに応じて括弧を色分けして表示してくれます。

rainbow-delimiters-mode

デフォルトの色は若干色の違いが分かりづらいかもしれませんが、 M-x customize-group rainbow-delimiters-mode で色を変更することもできます。


rainbow-delimiters-mode のパッケージをインストールした後、 ~/.emacs.d/init.el に使用したいモードで有効になるように設定を記述します。
 ;; rainbow-delimiters-mode
 (defun my-rainbow-delimiters-mode-turn-on ()
   (rainbow-delimiters-mode t))  
 (add-hook 'emacs-lisp-mode-hook 'my-rainbow-delimiters-mode-turn-on)
 ;; (add-hook 'c-mode-common-hook 'my-rainbow-delimiters-mode-turn-on)
 ;;        :
ただし、 rainbow-delimiters-mode が有効になっていると、 以前紹介した htmlize を使ったコードハイライトの html の取得でエラーとなります。
一旦、 rainbow-delimiters-mode を無効にする必要があるのが、ちょっと面倒くさいです。

rainbow-mode

rainbow-mode は "blue" や "#0044CC" のような色の表記に対して、その色をつけます。
Emacs rainbow-mode


rainbow-mode のパッケージをインストールした後、 ~/.emacs.d/init.el に使用したいモードで有効になるように設定を記述します。
 ;; rainbow-mode
 (defun my-rainbow-mode-turn-on ()
   (rainbow-mode t))  
 (add-hook 'css-mode-hook 'my-rainbow-mode-turn-on)
 (add-hook 'html-mode-hook 'my-rainbow-mode-turn-on)


関連記事
スポンサーサイト
Prev.    Category    Next 

Facebook コメント


コメント

コメントの投稿

Font & Icon
非公開コメント

このページをシェア
アクセスカウンター
アクセスランキング
[ジャンルランキング]
コンピュータ
44位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
6位
アクセスランキングを見る>>
カレンダー(アーカイブ)
プルダウン 降順 昇順 年別

05月 | 2017年06月 | 07月
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -


はてな新着記事
はてな人気記事
ブロとも申請フォーム
プロフィール

yohshiy

Author:yohshiy
職業プログラマー。
仕事は主に C++ ですが、軽い言語マニアなので、色々使っています。

はてブ:yohshiy のブックマーク
Twitter:@yohshiy

サイト紹介
プログラミング好きのブログです。プログラミング関連の話題や公開ソフトの開発記などを雑多に書いてます。ただ、たまに英語やネット系の話になることも。