epojava logo

『epoc/epocc』

  epoc,epoccepojava と同じ設計思想に基づいて作られた C/C++での拡張支援モードです。 是非使ってみてください。

関連URL(ダウンロード/他)

名称URL
epojava epojava
epojava のダウンロード
※ epojava.zip には epojava と epocc のフルセットが入っています。

epoccの特徴

  1. 既存XEmacs/mule に標準装備のc/cc-modeを継承している。
  2. EPO(The Editing Process Organizer) を標準実装している。
  3. 関数一覧の表示(&ファイル内ジャンプ)できる。
  4. ワード検索でファイル間ジャンプできる。
  5. 全行一括インデントができる。
  6. ソースコード整形(美文化)ができる。
  7. menu bar をサポートしている。
  8. 日本発(開発者が日本人で、解説が日本語(重要) ;-)

epoccのインストール&セットアップ

  ダウンロード方法、インストール方法については epojavaと同じです。   以下~/.emacs への追加設定について書きます。

  ジャンプしたいフォルダを以下のように羅列してください。 デフォルトは最低限度の簡単なものしか入っていません。
;; ジャンプフォルダ設定(サンプル1(cygwin の時))
(setq epocc-include
      '("../include" "../src"
	"d:/gnuwin32/b18/include/g++"
	"d:/gnuwin32/b18/H-i386-cygwin32/i386-cygwin32/include"))
  とか……
;; ジャンプフォルダ設定(サンプル2(borland C の時))
(setq epocc-include
      '("../include" "../src" "c:/borland/bcc55/Include"))
  unix 機の場合は以下のような感じでしょうか(たぶん)。
;; ジャンプパスの設定
(setq epocc-include
       '("../include" "../src" "/usr/ucbinclude" "/usr/include"))
  標準で入っているange-ftpという機能を使って、 別ホストの UNIX 機のネットワーク越しにアクセスする場合は、 以下のようになります(※ Solaris の日本語版だとftp が日本語化 されていて問題だった気がしますが、直し方は知りません……)。
;; ジャンプパスの設定
(setq epocc-include
       '("/account@hostname:/home/account/project/include"))
  以上で終了です。

epoccのキーバインディング

  キーバインドは以下のようになっています。
  なお、[prefix]は、通常C-c と読み替えてください(ユーザーが変更できます)。
[prefix] C-t j タイプセッタ(EPO 基本機能)
Makefile を起動します。all や clean を選択できます。
[prefix] ' next-error(EPO 基本機能)
make エラー発生行へのジャンプ。
M-x compile の C/C++版のような機能です。

[prefix] b (EPO 拡張機能)
ブロックの補完入力を行います。
※ yatex の [prefix] b (ビギン)と同等機能です。
[prefix] f (EPO 拡張機能)
関数の補完入力を行います。
[prefix] u アップデートファイル(EPO Java 拡張機能)
バッファーとして開かれている全ファイルに調査を行い、 ディスクに保存されている内容と違う場合、 ディスクの内容を再読み込みします。
タイプセッタ等により、バッファーの変更がある可能性が あるときに使用してみてください。
また、cvs checkout 後などは便利だと思います。
※ 尚この機能はange-ftp環境だと有効に働きません。
※ また、EUC コードのファイルを開いているときに、 再読み込みしたファイルがSJIS のコードに書き換わっていた場合、 Emacs の種類によっては EUC コードで再読み込みしようとして 文字化けが発生する恐れがあります。注意してください。
C-u [prefix] u キルバッファーファイル(EPO Java 拡張機能)
バッファーとして開かれている全ファイルを 強制的にキルバッファーします。
※ ange-ftp環境の時等で使用してみてください。
[prefix] g (EPO C/C++ 拡張機能)
  1. #include "hoge.h" と書いてある行の上で押すとそこへ移動します。
    ここで移動できるのは、変数epocc-includeの中に 書いてあるものだけです。
    逆に言うと書いてあればどこだろうと飛びます。
    同名のファイルがある場合は、epocc-includeの中で 先に書いてある方に飛びます。
  2. //#! file名 と書いてあったら、そこへ移動します。
  3. その他の場合
    1. 拡張子がhoge.C , hoge.cc の時は……
      調査フォルダと調査拡張子(.H .h) を使って順次サーチして当該ファイルがあったら移動します。
    2. 拡張子がhoge.H , hoge.h の時は……
      同様にサーチして(.c .cc .C .cxx .cpp) があったら移動します。
  4. すべての検索に失敗したときはなにもしません……
[prefix] G (大文字です)(EPO C/C++ 拡張機能)
関数と define の一覧を表示します。
[prefix] d (EPO C/C++ 拡張機能)
文字列を検索してその文字列を検出したファイルの一覧を表示します。
  はっきりいって低速ですが fgrep 等の外部コマンドを使用しないので ange-ftp で使用中でも動作します。
  検索の時に入力するメッセージの意味は 以下の通りです。

  • Project :
    検索するときに指定するプロジェクト名。
      include*.h といったヘッダファイル検索、 src*.c,*.cc といったソースファイル検索を行います。
      検索するフォルダは epocc-includeで設定します。 設定方法はセットアップを参照してください。
  • Search word :
    検索に使用する文字列。
[prefix] a (EPO Java 拡張機能)
ファイルを開くためのproject の編集を行ないます。
検索時にはここに記載されている フォルダをターゲットにしますので、 適宜変更してください。
M-q (EPO C/C++ 拡張機能)
上から順番に全ての行に対して [TAB]を打ったのと同等の効果が得られます。 ちょっとこのコマンドは重いのですが、 人間が打つよりかは速いです。;-)
M-Q (EPO C/C++ 拡張機能)
K&Rスタイルにソースコードを修正/美文化します。
ちょっとこのコマンドは M-q より遥かに重いのですが、 プログラムを作成した最後に一度実行することをお勧めします。
修正規則に関しては以下を参照してください。
[prefix] < (EPO CC 拡張機能)
コメントインします。
[prefix] > (EPO CC 拡張機能)
コメントアウトします。
M-x epocc-per-folder-indent (EPO CC 拡張機能)
指定したフォルダ配下の全てのC ソースコードとヘッダファイルを 開き、インデントを付け直します。
ろくでもない間違ったインデントを検出した場合に一挙に 変更がかけられるので大変便利です。

タイプセッタの追加

  新たに何かをプロセス起動 (タイプセッタ)([pre] t)で起動したい。 といった場合、epocc では以下のような文を .emamcs に記述すると [pre] t iで起動することができるようになります。
(setq epocc-append-process-alist
 '((?i (type . compile) 
       (command
	"表示名" "プロセス名" basename))))
  すんません。 本来は epo-c-process-alistに書くべきなのですが、 epocc の方でこれいじってますので……。

ando@park.ruru.ne.jp