物置き

ファイルを開いたら追加インクルードディレクトリへのパスを自動で追加するスクリプトを書いてみた

C/C++ファイルを開いたタイミングで、
近隣のディレクトリにあるVisualStudioのプロジェクトファイル(またはソリューションファイル)を探して解析し、
プロジェクトの追加インクルードディレクトリと、
そのVisualStudioのバージョンのシステムインクルードディレクトリを
「setlocal path+= ...」します。


(とはいえ、いま手元にVisualStudioがインストールされた環境がないので動作確認ができていなかったりします。set pathはされているので、一応動作はするはず・・)
(2008-09-22)VisualStudioがある環境で動かしてみたら、いろいろ問題あったので修正。
とりあえず、期待通りに動作するようになった。

ダウンロード

ダウンロード

これを使うと何がうれしいのか?

VisualStudioプロジェクトの管理下にあるソースファイルであれば、
特に何も設定しなくても、gfキーでそのファイルを開くことができるようになります。

ViauslStudioのバージョンも見ているので、

#include <stdio.h>

とか

#include <afx.h>

などといった、VisualStudioが提供するライブラリのヘッダファイルも
いちいちset pathすることなく、
そのプロジェクトが対応するVisualStudioのバージョンのヘッダファイルにジャンプすることができます。

インストール方法

~/vimfiles以下にファイルを展開してください。
(当然のことながら、Windows限定です)

要+pythonです。

対応するVisualStudioのバージョン

2003,2005,2008。
2002でも動作するかもしれないけど、対象外。

制約

ViauslStudioのプロジェクト設定上では、$(VCInstallDir)や$(SolutionDir)などのマクロを
使用することができますが、これについては$(VCInstallDir)と$(VSInstallDir)しか対応していません。
他のマクロがつかわれていた場合、そのマクロを含むパス自体を除外します。

パラメータ

g:vsautopath_enable

機能を利用するかどうか。
0で無効、それ以外の値で有効となります。

g:vsautopath_defaultVSVersion

もし、VisualStudioのプロジェクトファイルを見付けられず、
バージョンを特定できなかった場合に、どのViauslStudioのバージョンを適用するかを指定します。

開いたソースファイルに対応するプロジェクトファイルを見付けられなかった場合、
気休めに、ここで設定したViauslStudioバージョンのシステムインクルードディレクトリを「set path+=...」します。

このパラメータを指定しなかった場合には、
その環境にインストールされた最も新しいバージョンを自動的に選択して、
「set path +=...」 します。

g:vsautopath_vcprojSearchPath

プロジェクトファイルを検索する際、ここで指定したディレクトリを探すようにします。
,区切りで複数のパスを記述することができます。

基本的にはプロジェクトファイルの検索対象パスは、下記の通りです。

たとえば、下記のようなディレクトリ構成の場合、

c:\a\b\src.cpp
       sub\

検索対象となるディレクトリは下記のようになります。

  • c:\a\b
  • c:\a
  • c:\
  • c:\a\b\sub

もし、プロジェクトファイルの置き場所がc:\a\prjectDir\project.vcprojの場合、
これでは見付けることができません。
こういう場合に、

let g:vsautopath_vcprojSearchPath='..\projectDir'

と.vimrcに書いておくことで、
c:\a\b\prjectDir\project.vcprojを検出することができるようになります。