[Docker] Cloud9にコード補完機能「c9.ide.language.codeintel」を追加する

オンライン版のCloud9であれば既に入っている機能ですが、Dockerで構築したオリジナル版の場合、コード補完機能がデフォルトで入っていません。今回は、コード補完機能「c9.ide.language.codeintel」を追加していきます。

Dockerイメージ

先日の記事「[Docker] Cloud9 + PHP 7 環境を軽量なAlpine Linuxで構築する」で作ったオリジナルDockerイメージを利用します。

ディレクトリ構成

cloud9
└── .gitignore
└── c9_config
    └── .nakignore
    └── metadata
    └── project.settings
    └── state.settings
└── Dockerfile //<--追記
└── docker-compose.yml

ディレクトリ構成も一緒です。

Dockerfileにc9.ide.language.codeintelをインストールするパートを追記します。

Dockerfile

基本的には、公式Githubレポジトリの通りです。

ベースがAlpine Linuxなので、pipのインストール部分が公式のドキュメントと異なります。
ベースイメージにUbuntuやDebianなどを使っている場合は、下記のAlpine Linux特有というところを、apt-getあたりに置き換えればうまくいくと思います。

RUN apk --update add py-pip //Alpine Linux特有

RUN pip install -U virtualenv
RUN virtualenv --python=python2 $HOME/.c9/python2
RUN source $HOME/.c9/python2/bin/activate

RUN apk --update add python-dev //Alpine Linux特有

RUN mkdir /tmp/codeintel
RUN pip download -d /tmp/codeintel codeintel==0.9.3

RUN cd /tmp/codeintel && tar xf CodeIntel-0.9.3.tar.gz && mv CodeIntel-0.9.3/SilverCity CodeIntel-0.9.3/silvercity && tar czf CodeIntel-0.9.3.tar.gz CodeIntel-0.9.3
RUN pip install -U --no-index --find-links=/tmp/codeintel codeintel

イメージを再ビルド && コンテナ再起動

docker-composeで構築する場合は、「dockercompose build」を、単純にイメージを作成する場合は、「docker build .」でイメージを作成します。

作成後はコンテナを再起動 or 再作成します。

確認

Cloud9の画面をリロードして、試しに何かのコードを入力してみます。

上のスクリーンショットはPHPですが、「for」と打つと候補が出てきてタブで選択すれば「foreach」の入力補完がされます。

補完されると、$variableにフォーカスが当たっているので、「変数名を入力してタブ、変数名を入力してタブ」で、サクッとforeach文章が作成できます。これは便利!


Cloud9にコード補完機能「c9.ide.language.codeintel」を追加しました。

Dockerイメージのサイズが300MBくらい上がってしまいますが、コードを素早く打てるので、サイズアップ以上のメリットがありますね。