背景
- 我正在为Vim创建一个最近使用的函数浏览器插件。
- 我需要找到光标所在的当前函数的名称。
- 对于其他语言,我可以搜索“{}”附件,但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
我想编写一个返回位置函数名称的函数(示例中为“文件位置”)
def get_function_scope(sourceFile, lineNumber, columnNumber):
pass
因此,对于上面的例子,我想要像......
这样的东西
fxnName = get_function_scope("foo.py", lineNumber=9, columnNumber=4)
print fxnName
# "foo"
途径
- Exuberant CTags为我提供了一个很好的所有函数/类/方法位置列表,但不是每个函数占用的作用域的行号。
- 即使代码不是“实时”,也不确定检查是否有帮助?
- 我正在考虑从缩进向后工作,直到我达到函数/方法定义。
是否有一种我不知道的标准方法?