ここでは,情報理工学部のプログラミング演習に向けたEmacsのカスタマイズ情報を提供する.
Emacsは極めて高機能なテキストエディタであり,プログラミング作業のための様々な支援機能が用意されているが,適切な設定(カスタマイズ)を施さなければ有効化されずに宝の持ち腐れになってしまう.しかし,その設定を初心者がいきなりゼロから適切に行なうのはハードルが相当高い.
そこで,本ページでは初心者でも簡単に最初のお勧め設定,特に,プログラミング演習でのプログラミング作業にお勧めな設定が出来るユーティリティを用意したので,まず,そちらを利用してEmacs操作に慣れていって欲しい.
2022/04/13: 配布ディスクイメージに含まれるEmacs.appをEmacs 27.2 + Emacs Mac port 8.4ベースに更新しました.Apple Silicon機種向けとIntel機種向けに分かれているので注意してください.
尚,ここで配布しているEmacs.appはこちらのページ記載の手順にて構築したものです.
以下に,Emacsの本体である Emacs.app と設定ユーティリティを同梱したディスクイメージが置いてあるので,このイメージファイルを手元のMacBookへダウンロードしよう.
Emacs for CSEディスクイメージ(macOS 11 Big Sur on Apple Silicon向け)
Intel Macを使用している場合は以下のディスクイメージをダウンロードしてください.
Emacs for CSEディスクイメージ(macOS 11 Big Sur on Intel向け)
ディスクイメージを開くと以下のようなウィンドウが開くので,まず Emacs.app をアプリケーションフォルダへドラッグ&ドロップしてインストールする.
次に,設定ユーティリティ Setup.command を開いて実行する.但し,そのままではmacOSのGateKeeper機能によって普通に開く事が出来ないはずなので,Setup.commandを右クリックして表示されるメニュー(コンテキスト・メニュー)から「開く」を選択する.
本当に開いて良いかどうか確認を求めてくるので「開く」をクリックしよう.
ターミナル・ウィンドウが自動的に一枚開き,セットアップが開始される.
ウィンドウ上に表示されるメッセージをきちんと読み,その指示に従って操作を続行すること.
セットアップが完了したら,アプリケーションフォルダを開き,そこに入っている筈の Emacs.app を開いて起動しよう.これもインストール直後に初めて起動する場合には同じくGateKeeper機能によって普通に開く事が出来ないかも知れないので,
その場合は,Emacs.appアイコンを右クリックして表示されるコンテキスト・メニューから「開く」を選べば良い.
初めてEmacs.appを起動する際には,以下のように表示されるので,
「開く」をクリックするとEmacs.appが起動するはずだ.
尚,正常にEmacs.appが使用できることが確認できたら,内蔵ストレージ容量の節約のため,EmacsForCSEディスクイメージのマウントを解除した後にディスクイメージファイルも削除しよう.もし何らかの理由で再セットアップが必要となったら,本ページからディスクイメージファイルを改めてダウンロードし直せば良いだろう.
また,本設定ユーティリティは,既存のEmacs設定ファイルをバックアップしてから新たに設定ファイルを配置し直し,さらに,バックアップ先はユーティリティのターミナルウィンドウ上のメッセージとして表示される.従って,自分で色々と独自カスタマイズに挑戦してみた結果,よく分からなくてEmacsが正しく機能しない状態になったとしてもユーティリティを再実行すれば正常な状態へ復旧出来る事を覚えておくと良いだろう.
本ユーティリティでは,以下のディレクトリ・ファイルが作成される(一部,省略).
~/.emacs.d ~/.emacs.d/init.el ~/.emacs.d/conf ~/.emacs.d/conf/*.el ~/.emacs.d/elisp ~/.emacs.d/elisp/*.el
カスタマイズの本当の詳細については,これらのファイル内容を参照して欲しいが,以下に本ユーティリティによるカスタマイズ概略を記載しておく.
ファイル内容は,こちらのリンクを参照のこと.
Emacsは elisp と呼ばれるプログラミング言語(Lispの方言)により様々な機能拡張を行なうことが出来るが,それを記述したファイルを配置しておく場所(ディレクトリ)をロードパスと呼ぶ.
Emacsはオープンソースソフトウェアであり,様々な派生パッケージ版があり,また,macOS環境自体にもターミナル上だけで動作するEmacs 22が附属しているが,これらはそれぞれ微妙に挙動や機能が異なっている(このあたりがEmacsが難しいと思われたり,敬遠されたりする一因かもしれない).そのため,現在のmacOSで動作するメジャーなEmacsパッケージを識別して,それぞれに適した設定ファイルを選択して読み込むようにしている.
本ユーティリティによるカスタマイズに加えて,各自の個人的カスタマイズも追加したい場合は,以下の行より下に追加するようにして,
;;;;;;;; 各個人の追加設定はこの行より下に書き込む ;;;;;;;;;;;;;;;;;;;;;;;;
かつ,次の行よりも上に記述するとよいだろう
;;;;;;;; 各個人の追加設定はここまで ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
既に,幾つかのサンプルがコメントアウトされた状態になっている筈なので,その記述を参考にするとよいだろう.尚,elispでは, ; (semi-colon) 以降の部分はコメント文と見做されることに注意して欲しい.
このファイルにはプログラミング演習にお勧めの各種設定が詰め込まれている.皆さんがプログラミング演習でのプログラミング作業を行なうにあたり,特に関係が深い部分を以下に列挙する.
ファイル内容は,こちらのリンクを参照のこと.
キーボード操作をmacOS標準になるべく近づけるようにしている.また,Emacsはフォント設定を適切に行なうのが容易でないが,本カスタマイズでは文字サイズ 14point, 英数フォント Menlo, 日本語フォント Hiragino Maru Gothic ProN を指定している.視力が悪くて,もう少しフォントを大きくしたい場合は,フォント設定している箇所の次行に「老眼向け」と記されている行があるので,コメント記号編集して設定を入れ替えると 16 point サイズに変更できる.
パッケージ管理システムについては,本ページ末尾で説明しているので,そちらを参照のこと.
日本語入力時と英数入力時でカーソル色を変えたりしている.また,透明度を調整して,ウィンドウが少し透けるようにもしている.(尚,個人的には世の中の色んなモノは透けてるのがイイと思う (^^;;
カーソルが位置している行をハイライトしてカーソルを見つけやすくしている.
C言語のソースコードの書き方は,括弧の配置やインデント深さなどが異なる幾つかの代表的スタイルがあるが,本カスタマイズでは次のように設定している.
C, C++ではK&Rスタイルで記述し,Javaでは標準Javaスタイルにて記述
TAB文字幅を 8 (尚,Emacsの標準値も8となっている.)
インデント幅を 4文字単位
インデントをTAB文字でなくスペース文字で表現
対応する括弧を強調表示(括弧の閉じ忘れなどが見つけやすくなるであろう.)
行番号を左側に表示 (4桁表示),尚,ファンクションキー F5 押下にて行番号表示をON/OFF出来る.
日本語入力時と英数入力時でカーソル色を変えている.また,透明度を調整して,ウィンドウの下がやや透けるようにしてあるので,下に重なったウィンドウに表示された内容を確認しながら作業出来るだろう.
カーソルが位置している行をハイライトしてカーソルを見つけやすくしている.
C言語ソースプログラムを作成する際,適切な字下げ(インデント)はプログラムを見やすく理解しやすくするために重要だ.しかし,色々試行錯誤して直しているうちにインデントが乱れてしまうことが良くあるのも事実だ.その乱れを手作業でコツコツ直すのも面倒臭いので,一発でソースプログラム全体のインデントをやり直せる機能を用意した.ファンクションキー F6 押下にて実行されるので,是非活用して欲しい.
ASCII文字ではない,いわゆる「全角文字」,特に記号類がソースプログラムに紛れ込むとプログラムが上手く動かなくて悩む場合がある.本カスタマイズでは,それらの記号類・空白・英数字を赤くハイライト表示するようにして気が付き易くしている.
Hungry Deleteを有効化してあるので,空白文字を削除する場合,DELキーで可能限り一気に削除されるので驚かないようにされたい.
この設定ファイルは過去の後方互換性のため,古いCarbon Emacsパッケージに向けた設定を残してあるものに過ぎないので,本ページで配布しているインストーラに含まれるEmacs.appを使う場合には全く無関係である.
ファイル内容は,こちらのリンクを参照のこと.
この設定ファイルはmacOSに附属している少し古いEmacs 22が起動された場合に参照される.ターミナル上でコマンド emacs を実行するとターミナル内でEmacsが使えるが,それがmacOS附属のEmacs 22だ.何らかの理由でそちらを使わねばならない場合に備えて,最低限の設定だけを施すようにしている.
ファイル内容は,こちらのリンクを参照のこと.
Emacs 24以降のバージョンでは,Emacsを機能拡張するelispライブラリをパッケージ単位としてインターネット上のレポジトリサイトよりダウンロードして,導入・アップデート・管理出来るパッケージマネージャ package.el が附属している.このパッケージマネージャを使うとEmacs標準ではサポートされていない様々な拡張機能を簡単にインストールして使えるように出来る.
package.elに対応したパッケージを配布しているサイトは有名なところが幾つかあるが,本設定ユーティリティでは初心者でも安心して使える安定したパッケージを配布している ELPA と MELPA Stable のみをレポジトリとするようにしてある.
ここでパッケージ管理システムを使ってみる例として,情報理工学部で開講されている幾つかの講義・演習科目で学ぶPHP言語の編集操作を快適にしてくれるphp-modeを導入してみよう.PHPは既にWeb系開発言語として十分にメジャーながら,未だEmacs標準ではphp-modeは附属してこないので,手動操作にて追加する必要があり,これがあると無いではPHP言語プログラム編集の快適さが雲泥の差となると思うので,是非,試してみて欲しい.
以下を実行すると利用可能なパッケージの一覧が表示される.
M-x package-list-packages
この一覧上でキー操作すれば,パッケージのインストール・アップデート・アンインストール出来る.
操作手順としては,
といった手順となる.
パッケージ一覧上でのキー操作は以下の通りだ.
キー | 操作 |
`r` | パッケージ一覧の更新 |
`x` | マークに対応する処理を実行 |
`U` | アップグレード (Upgrade) |
`i` | インストールマークをつける |
`d` | 削除マークをつける |
`~` | 古いパッケージに削除マークをつける |
`u` | マークを除去する |
`?` | パッケージ概要を表示 |
`n` | 次の行へ移動 |
`p` | 前の行へ移動 |
`h` | ヘルプを表示 |
ここでphp-modeをインストールしてみよう.パッケージ一覧をスクロールさせてphp-modeを探す.(インクリメンタルサーチしても良い.)
php-modeパッケージが見つかったら,それにカーソル行を合わせてから, i キーを押して「インストール・マーク」を付けよう.もし,間違ったパッケージにマークしてしまったら, u キーでマークを外せるから慌てなくて大丈夫だ.
php-modeパッケージに I (アイ)マークが付けられた事を確認したら,インストール操作を実行する.
x キー (eXecute) をタイプすると,
ミニバッファに実行確認の yes or no が表示されるので yes とタイプしてからリターンキーを押す.自動的にインターネット上のレポジトリからパッケージファイルがダウンロードされてインストール処理が開始される筈だ.
無事インストールが完了したら q キー (Quit) をタイプすると元の画面に戻る.
尚,インストールしたパッケージは,そのままではまだ使えない.パッケージを使うために最も簡単な方法は,一旦,Emacs.appを終了させて再度起動し直すことだろう.再起動後にはインストールしたパッケージがちゃんと機能するようになっているはずだ,例えばphp-modeが機能しているなら,PHPプログラムを読み込んた編集画面は以下のように表示されるだろう.
php-modeが正常に機能しているとEmacsのモードラインに PHP と表示される.
パッケージマネージャでインストールされた拡張パッケージは必要に応じて最新版へのアップデートやアンインストールすることも出来る.パッケージ一覧を表示させると,その下の方に既にインストール済みパッケージがリストされる (Status欄にinstalledと表示されている) ので,
このリストから上記で解説しているインストール手順の「マークを付ける」箇所にて,Uキー (Update,アップデート) やdキー(Delete,アンインストール)をタイプしてマークしてから,xキーをタイプする.
ミニバッファに yes or no と表示されるから,yes とタイプしてからリターンキーを押せば処理が開始される.
本カスタマイズでは,パッケージになっていないelisp拡張ライブラリについては,以下のディレクトリに配置することが想定されている.
~/.emacs.d/elisp
ここに,使いたいelispライブラリファイルを配置して,さらにinit.elの追加個人設定にライブラリの使用に必要な設定を記述すれば使えるはずだ.また,必要ならバイトコンパイルしても良いだろう.(バイトコンパイルの意味と操作は自分で調べて下さい.意味が分からないなら,そのまま使い続ければ宜しい.)
尚,本設定ユーティリティでは上記のディレクトリに drill-instructor.el (通称,鬼軍曹.el) という拡張ライブラリ(ドMな拘束ライブラリと言うべきかも?)を配置するようになっており,また,各自のinit.elファイルにはこのライブラリを使用するための設定サンプルをコメントアウトした状態で記載してあるので,各自のelisp拡張ライブラリを設定する参考にして欲しい.
以上
参考URL
http://emacs-jp.github.io/packages/package-management/package-el.html