【问题标题】:Sublime Text 3: How does one tinker with the goto_definition command?Sublime Text 3:如何修改 goto_definition 命令?
【发布时间】:2014-08-23 20:18:29
【问题描述】:

这不是键盘重新映射请求。我目前的困境是无法编辑goto_definition 命令(默认绑定到F12)。如果我能找到它的 .py 文件,这将(希望)是小菜一碟。

我的项目范围更大,需要我修改 goto_definition 的功能,使其更接近 CodeWright 中的等效功能。我在 ST3 工作,不能恢复到 ST2。

让我更清楚地阐述我的障碍:

  • 找到包含goto_definition在运行时使用的信息的.py文件。

  • 将该命令的性质修改为更灵活一点:

    • 基本上,有几种方法,EditElementHandleRMSBsplineCurveCRGetElementDescrPGetModelRef,以及其他几个类似性质的方法。

    • 其中一些附加了“标签”,如果方法名称要带有标签,它将是以下四个之一:CRCPRP.

    • 还有这些名称的方法,无标签。

    • CodeWright 将程序员带到定义中的行为是指向等效的方法名称,不带标签,即使光标当前位于带有标签的方法名称上。 em>

    • 如果我在光标位于“已标记”方法名称时点击F12(回想一下:goto_definition),Sublime 无法找到原始方法。

这是理想的情况:我的光标位于名为 EditElem|entHandleR 的方法中(| 表示光标),我点击了F12。然后 Sublime 将我带到 EditElementHandle 定义。

【问题讨论】:

    标签: python plugins command sublimetext3


    【解决方案1】:

    不幸的是,goto_definition 不是用 Python 实现的,它是 Sublime 编译的可执行文件的一部分(主要用 C++ 编写),所以它不是用户可修改的。但是,有几个可用的代码智能插件,包括SublimeCodeIntelAnaconda,可能更符合您的需求。代码智能不是魔术,它只是使用(在您的情况下是模糊的)搜索来匹配光标下的内容与语言库索引中的内容。您所要做的就是稍微改变搜索逻辑以检查您的“标签”之一是否存在,然后忽略它。您甚至可以为 goto_definition 编写一个包装器来为您执行此操作,而无需费心学习大型代码库。 Sublime 的 API 应该会有所帮助,应该仔细查看 sublime.pysublime_plugin.py 的来源,因为有一些未记录的函数。

    【讨论】:

    • “不幸的是,goto_definition 没有在 Python 中实现” - 这不是真的 - 它在 Packages/Default/symbol.py
    • @KeithHall 现在为什么我在 2 1/2 年前搜索时找不到它?我想我会重写我的答案。感谢您的提醒!
    猜你喜欢
    • 2016-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-17
    • 2016-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多