Pythonコードでcscope
を使用して正常に管理した人はいますか?VIM 7.2と最新バージョンのcscope
をインストールしています、ただし、コードのタグが正しく取得されません(常に数行ずれています)。pycscope
スクリプトを試しましたが、その出力は最新バージョンのcscope
ではサポートされていません。
何か案は?または、ブラウジングの代替手段Python VIMを使用したコード?(cscope
の単純なタグ以外にctags
が提供する追加機能に特に興味があります)
cscope
のメンテナとのやり取りから、このツールはPythonで動作するように設計されておらず、その互換性を実装する予定はありません。現在機能しているものは、明らかに誤って機能しており、機能し続けるという約束はまったくありません。pycscope
の古いバージョンを使用しているようです。最新バージョン0.3は、cscope
DBでサポートされています。 pycscope
の作者は、cscope
のソースコードを読んでcscope
DBの出力形式を理解したと私に話しました。その形式は意図的に文書化されていませんが、それでも現在はpycsope
0.3で動作します。これは、私が使用するソリューションです。残念ながら、報奨金が宣言された後でも他の回答は助けを提供しなかったので、私はこの回答を受け入れるつもりです。賛成の答えはないので、正直なところ、賞金がどこに行くのかわかりません。
編集:私はステップバイステップでプロセスを実行するつもりです:
exhuberant ctags、オプションがあります:-x
Alternatively, ctags can generate a cross reference file which lists,
in human readable form, information about the various source objects
found in a set of language files.
これが問題の鍵です。
ctags -x $(ls **/*.py); # replace with find if no zsh
既知の形式でソースオブジェクトのデータベースを提供します。
man ctags; # make sure you use exuberant ctags!
Gnu Globalは、「すぐに使える」タイプのファイルだけに限定されていません。通常のファイル形式であればどれでも使用できます。
また、マニュアルのセクション3.7で説明されているようにグローバルに付属しているgtags-cscopeを使用して、gtagsを使用したショートカットを作成することもできます。 Global/gtagsがオブジェクトを取得するために解析できるctags表形式ファイルの入力になります。または、既知の形式のctagsファイルと一緒にpycscopeのソースを使用して、vimcscopeコマンドの入力を取得できます。
if_cscope.txt。
いずれにせよ、それはかなり実行可能です。
それ以来、間違いなく可能です
z3c.recipe.tags
on pypiは、ctagsとidutilsの両方を使用して、ビルドアウト用のタグファイルを作成します。これは、後で調査する方法です。
もちろん、以下のgreputilsスクリプトをいつでも使用できます。これは、idutilsをサポートしています。idutilsはpythonで動作することがわかっています。それが失敗した場合は、今年からpython、idutils、vimを使用するvimentryと呼ばれるものもあります。
うまくいけば、これはあなたの問題であなたを助けます、私は確かに私を助けました。私は今夜、巨大なpycscopeでかなり悲しかったでしょう。
これは私にとってはうまくいくようです:
pythonコードのトップディレクトリに移動します。cscope.files
というファイルを作成します。
find . -name '*.py' > cscope.files
cscope -R
相互参照が適切に構築されない場合は、最初にcscope -b
を実行する必要がある場合があります。
素晴らしい Python-mode-klen プラグインがあります。それとrope(pythonリファクタリングライブラリ)がインストールされている場合、特定の用語の定義に進むのは<C-c>g
または<C-c>rag
と同じくらい簡単です(最初はファイルタイプマッピング、2番目はグローバルマッピングです)。もっと便利な機能がありますが、私には役に立たないものもあります。それらはすべて無効にできます。 cscope-intro で見つかった質問のリストからの機能:
-
が表示されます(ただし、正しい場所を指しているため)。多分それは修正されるでしょう。それほど多くはありませんが、ropevimの使用経験はあまりありません。
私はあなたが得たのと同じ質問を受けました、インターネットを閲覧した後、私はこれを修正する方法を見つけました:
pythonスクリプト:cscope_scan.py
import os
codeRootDir = os.getcwd()
__revision__ = '0.1'
__author__ = 'lxd'
FILE_TYPE_LIST= ['py']
if __name__ == '__main__':
import os
f = open('cscope.files','w')
for root,dirs,files in os.walk(codeRootDir):
for file in files:
for file_type in FILE_TYPE_LIST:
if file.split('.')[-1] == file_type:
f.write('%s\n' %os.path.join(root,file))
f.close()
cmd = 'cscope -bk'
os.system(cmd)
コードのルートフォルダの下でこのスクリプトを実行すると、cscope.files
が生成され、次にcscope -b
が実行されます。コンピュータがどうなるかわかりません。最後の2行はうまく機能していませんが、手動でcscope -bk
を入力してもかまいません:)