【问题标题】:Sublime Text selection using Lua/love2d使用 Lua/love2d 选择 Sublime 文本
【发布时间】:2014-07-22 21:50:46
【问题描述】:

说我有这行代码:

Object.Property.field;
Object.Property:FunctionName();

在我所有崇高的语言中,如果我要在任一行上双击“属性”,它只会选择那个词。 出于某种原因,我的 lua/lua love2d 语法突出显示选择了整行到“:”

如何更改此行为,使其仅选择单个单词?

【问题讨论】:

  • 你使用什么语法?是 Sublime 自带的默认Lua,还是你安装了插件?如果您确实安装了插件,它的名称和 URL 是什么?

标签: lua sublimetext2 sublimetext love2d


【解决方案1】:

发生这种情况的原因是Lua Love 插件的一个有点奇怪的添加,我假设你正在使用它。您使用的是 Sublime 2,因此选择 Preferences -> Browse Packages... 打开您的 Packages 文件夹,然后打开 Lua Love 子文件夹。有一个文件叫completions.py,里面有这样的内容:

#completions.py
import sublime
import sublime_plugin
import re

class LoveCompletions(sublime_plugin.EventListener):
    ST = 3000 if sublime.version() == '' else int(sublime.version())

    def on_query_completions(self, view, prefix, locations):
        if self.ST < 3000 and ("lua" in view.scope_name(locations[0])):
            seps = view.settings().get("word_separators")
            seps = seps.replace('.', '')
            view.settings().set("word_separators", seps)

即使您不了解 Python,也很容易理解其中的逻辑。它将变量ST 设置为Sublime 的版本,如果您使用ST3(当前版本为3061)则为3000+,而ST2 为2221(我认为)。然后它会设置一个事件侦听器(该进程始终在后台运行)检查 Sublime 版本是否小于 3000(您使用的是 ST2)并且您在当前范围内有 lua(基本上,您的文件是source.luasource.lua.love,如果您使用插件的语言定义)。如果这两个都为真,它会从您的"word_separators" 设置中删除. 字符,该设置在Preferences -&gt; Settings-Default 中定义并且可以在Preferences -&gt; Settings-User 中被覆盖.

word_separators 设置控制在双击选择单词时哪些字符被视为单词分隔符。它的默认值为./\\()\"'-:,.;&lt;&gt;~!@#$%^&amp;*|+=[]{}`~?,例如,如果你双击foo-barfoo部分,Sublime只会选择foo,但是如果你双击@987654343的foo部分@Sublime 将选择整个事物(因为 -word_separators 中)。 . 默认在word_separators 中,所以在foo.bar 中双击foo 只会选择foo,我认为这是大多数人的预期行为。但是,这个可爱的小插件从 Sublime Text 2 中的 word_separators 中删除了 .,因此在您的情况下,单击 Property 会选择从“单词”开头(Object 之前的空格)到下一个单词的所有内容分隔符 - :,在您的第二个示例中。

好的,所以我们知道问题出在哪里,我们该如何解决?首先,当您在Packages/Lua Love 中时,只需完全删除completions.py。这样做并没有什么坏处,事实上它实际上是在造成伤害。确保在删除文件后重新启动 Sublime。接下来,打开 Preferences -&gt; Settings-User 并将 . 添加回 word_separators 列表中,在开始和结束双引号之间的任何位置。保存该文件,返回到您的源代码,双击应该会再次正常运行。

祝你好运!


编辑

我提交了这个pull request 以从插件的Github repo 中删除completions.py 文件,它刚刚被合并,所以希望将来的用户不必处理这个:)

【讨论】:

  • 哇! +1 信息,+1 解决方案,+1 请求,但今天没有给你的注释!我的 Preferences-settings-user 没有“word_separators”应该这样做吗?
  • @user3700360 如果word_separators 不在其中,请不要担心。只需删除Packages/Lua Love/completions.py,重新启动Sublime,就可以了。
猜你喜欢
  • 1970-01-01
  • 2016-04-14
  • 2012-04-08
  • 2021-03-11
  • 2016-04-21
  • 2013-05-12
  • 2013-11-12
  • 2020-07-19
  • 2020-01-03
相关资源
最近更新 更多