私はvimでYCM経由でjediを使用していusages
ますが、jediHttpサーバーでエンドポイントを使用することに関して、私のプロジェクトで奇妙な動作が見られます。基本的に、クラスまたは関数のプロジェクトでの使用箇所のごく一部しか見つかりません。現在のファイルのすべての使用箇所は検出されますが、他のファイルの大部分は検出されません。コマンドはGoTo
正常に機能し、期待どおりにプロジェクト内の任意の場所に新しいバッファーを開きます。ただし、定義から始めてusages
、GoToReferences
コマンドを使用してすべてを表示しようとすると、実際の使用量の約 20% しか生成されません。
動作を再現するためにダミープロジェクトを作成しようとしましたが、うまくいったようです。簡単なプロジェクト構造は次のとおりです。
> tree -I __pycache__
.
├── setup.py
└── test_jedi
├── classes.py
├── __init__.py
├── mod1
│ ├── __init__.py
│ └── recessed.py
└── script.py
2 directories, 6 files
これらのファイルの内容は次のとおりです。
クラス.py
class Foo:
def __init__(self, a):
self.a = a
def make_a(self):
print('hello')
mod1/recessed.py:
from test_jedi.classes import Foo
Foo(5).make_a()
print('Ran this')
script.py:
from classes import Foo
a = Foo(5)
a.make_a()
これで、バッファ内のrecessed.pyを使用してvim内からGoTo
onを使用しFoo
て、バッファをすぐに開くことができclasses.py
ます。次にバッファGoToReferences
から試すと、 inと inのみが取得されます。ジェダイが使用法を表示しない理由がわかりませんclasses.py
usages
script.py
classes.py
recessed.py
これは、以下を示すクイックフィックス バッファです。
classes.py|2 col 7| class Foo
script.py|2 col 21| from classes import Foo
script.py|5 col 5| a = Foo(5)
しかし、明らかに の使用法を持つ mod1/recessed.py への参照はありませんFoo
。
何か案は?