バックグラウンド
- Vim 用の Most Recent Used Function Browser プラグインを作成しています。
- カーソルがある現在の関数の名前を見つける必要があります。
- 他の言語では、「{ }」の囲みを検索できますが、python は空白/タブを使用します。
例
これらの関数が foo.py にあるとします...
def foo(file):
fileLines = []
with open(file, 'r') as f:
for line in f:
fileLines.append(line)
def nested_function():
pass
# FILE POSITION
for line in fileLines:
print line
位置の関数名を返す関数を書きたい(例では「FILE POSITION」)
def get_function_scope(sourceFile, lineNumber, columnNumber):
pass
したがって、上記の例では、次のようなものが必要です...
fxnName = get_function_scope("foo.py", lineNumber=9, columnNumber=4)
print fxnName
# "foo"
アプローチ
- Exuberant CTags は、すべての関数/クラス/メソッドの場所の優れたリストを提供しますが、各関数が占めるスコープの行番号は提供しません。
- コードが「ライブ」でなくても、検査が役立つかどうかわかりませんか?
- 関数/メソッドの定義に到達するまで、インデントから逆方向に作業することを考えています。
私が気付いていないこれを行う標準的な方法はありますか?