【问题标题】:Language-specific package settings in Sublime TextSublime Text 中特定语言的包设置
【发布时间】:2013-10-26 10:20:47
【问题描述】:

如何使特定于软件包的设置因语言而异?很容易使一般的 Sublime Text 设置因语言而异(例如,我可以使用 Python.sublime-settings 来设置特定于 Python 的缩进空格数)。但我不知道如何更改特定包的设置(其设置似乎与一般应用程序设置处于不同的范围内)。

我特别想做的是更改 SublimeREPL 中的“show_transferred_text”参数。在 R 中,我需要它为“假”,而在 Python 中,我需要它为“真”。有什么我可以在我的 Python.sublime-settings 中添加到 "show_transferred_text": true 行以表明这是 SublimeREPL 的参数吗?像这样设置它不会改变 SublimeREPL 参数,我再次假设是因为特定于包的设置在不同的范围内。

这提供了一个开始,允许我编写一个插件来执行此操作,但我想知道它是否已经在 ST 中得到更简单的支持。是否有包范围或我可以添加到可能让我直接设置包键的键的东西?

【问题讨论】:

    标签: python sublimetext2 sublimetext sublimerepl


    【解决方案1】:

    好吧,我继续写了一个简短的插件来做到这一点。万一其他人需要做这样的事情,修改起来很简单。它只是 EventListener 的扩展,每次焦点更改时都会调用它。这是我第一次涉足 ST API,所以如果有人看到这个并知道如何使它更简单/更干净,请告诉我!

    import sublime, sublime_plugin
    
    class PythonREPLHelperCommand(sublime_plugin.EventListener):
      def on_activated(self, view):
        syntax = view.settings().get('syntax')
        if syntax=='Packages/Python/Python.tmLanguage':
          plugin_settings = sublime.load_settings('SublimeREPL.sublime-settings')
          plugin_settings.set("show_transferred_text", True)
        else:
          plugin_settings = sublime.load_settings('SublimeREPL.sublime-settings')
          plugin_settings.set("show_transferred_text", False)
    

    但我仍然很想知道是否可以在没有插件的情况下做到这一点!

    【讨论】:

    • 我只是在给你写一个答案——据我所知,如果不按照你刚才的方式来定义特定语言的 REPL 选项是不可能的。好的插件,顺便说一句,但小问题 - 在 PEP8 之后,你真的应该缩进 4 个空格而不是 2 个 :)
    • 欢迎在 GitHub 上打开一个问题,作者反应很好,但我不知道他需要多长时间才能实现这样的东西。当然,贡献代码总是有助于加快进程!
    • 感谢您的帮助!我会打开一个问题,但这似乎是一个 Sublime Text 问题,而不是一个 SublimeREPL 问题——我可以想象想要其他特定于语言的包行为。 (关于 PEP8 的观点,但我只能处理 80 个字符或 4 个空格,不能同时处理两者,我选择 80char 是因为在 Python 诞生之前我就一直使用 2 个空格!)
    猜你喜欢
    • 2013-06-04
    • 2014-04-09
    • 1970-01-01
    • 1970-01-01
    • 2014-05-17
    • 2013-12-20
    • 1970-01-01
    • 2013-09-27
    • 2014-10-30
    相关资源
    最近更新 更多