4

私はvimでYCM経由でjediを使用していusagesますが、jediHttpサーバーでエンドポイントを使用することに関して、私のプロジェクトで奇妙な動作が見られます。基本的に、クラスまたは関数のプロジェクトでの使用箇所のごく一部しか見つかりません。現在のファイルのすべての使用箇所は検出されますが、他のファイルの大部分は検出されません。コマンドはGoTo正常に機能し、期待どおりにプロジェクト内の任意の場所に新しいバッファーを開きます。ただし、定義から始めてusagesGoToReferencesコマンドを使用してすべてを表示しようとすると、実際の使用量の約 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内からGoToonを使用しFooて、バッファをすぐに開くことができclasses.pyます。次にバッファGoToReferencesから試すと、 inと inのみが取得されます。ジェダイが使用法を表示しない理由がわかりませんclasses.pyusagesscript.pyclasses.pyrecessed.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

何か案は?

4

2 に答える 2