C/C++ソース作成支援


 C/C++のソースコードを記述するための機能です。まだ、もうしわけ程度の機能しか実装していませんが、 これからだんだん充実してきています。


■ 予約語の色表示

 予約語を通常のテキストとは異なる色で表示することが可能です。 設定方法は予約語の色表示を参照。

■ カッコの対応(showmatch)

 共通プロパティの編集タブで、『 ){] 入力時:対応するカッコに一時移動』オプションをONにしておくと、 (半角)閉じカッコを入力した瞬間に、対応する開きカッコにカーソルを一時的に移動します。 カッコの対応が間違っていないかどうかがすぐにわかります。

 vi モードであれば、:set sm でこのオプションをONにすることができます。

■ 対応するカッコへの移動

 カーソルが(半角)カッコにあるときに Ctrl + ] を入力すると、対応するカッコにカーソルを移動します。

 vi モードであれば % で同様の操作が可能です。

■ 参照入力(abbreviation)

英字で始まる英数字、または数字の(半角)文字列の参照入力(英単語の意味は違うが、abbreviation とも呼ばれる)機能を実装した。 この機能はC/C++のソースコードをエディットしている時にほんとに便利で、以下の様な仕様である。

  • カーソル位置の直前の英字で始まる英数字列、または数字の(半角)文字列をキー文字列とする。
  • 後方参照(Ctrl+L)の場合は、ドキュメントの初めに向かって、前方参照(Ctrl+M)の場合は、 ドキュメントの終わりに向かってキー文字列を検索し、それと一致する文字列をカーソル位置に挿入する。

使用例として、以下のような場合、(■ はカーソルを表す)

    extern void getNthItem(const char *itemList, int ix, CString &item);
    extern int getItemsCount(const char *itemList);

    void CViviView::doBlsInput(int next)
    {
        get■
Ctrl+L を入力すると、"get" をキーにして、検索を行い、getItemsCount をカーソル位置に入力する。

    extern void getNthItem(const char *itemList, int ix, CString &item);
    extern int getItemsCount(const char *itemList);

    void CViviView::doBlsInput(int next)
    {
        getItemsCount■
もう一度、Ctrl+L を入力すると、次にマッチする getNthItem に置き換わる。

    extern void getNthItem(const char *itemList, int ix, CString &item);
    extern int getItemsCount(const char *itemList);

    void CViviView::doBlsInput(int next)
    {
        getNthItem■
行きすぎた場合は、Ctrl+M で戻ることが出来る。

■ {, } 自動インデント

 タイプ別プロパティのレイアウトタブで『{, } 自動インデント』 オプションをONに設定しておくと、(空白類を除いた)行頭で '}' を入力したときに、そのカッコに対応する '{' のある行のインデントに合うように、行頭の空白類を調節します。

 たとえば、

    if( foo == bar ) {
        hoge();
        ■

 という状態で '}' を入力すると、以下の様になります。

    if( foo == bar ) {
        hoge();
    }■

 また、(コメント類を除く)行末が '{' のときに改行を行うと、インデントを+1します。

    if( foo == bar ) {■

 改行を行うと、以下の様になります。

    if( foo == bar ) {
        ■

■ '#' 入力時の行頭空白類削除

 タイプ別プロパティのレイアウトタブで『行頭での '#':空白類を削除』オプションをONに設定しておくと、 空白類を除いた行頭で '#' を入力したときに、行のはじめの空白類を削除します。

 たとえば、

void f()
{
    if( foo == bar ) {
        hoge();
        ■

 という状態で '#' を入力すると、以下の様になります。

void f()
{
    if( foo == bar ) {
        hoge();
#■