Skip to main content
 首页 » 编程设计

python之Sublime Text 中特定于语言的包设置

2025年05月04日8jirigala

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

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

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

请您参考如下方法:

好吧,我继续写了一个简短的插件来做到这一点。如果其他人需要做这样的事情,修改起来很简单。它只是 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) 

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