Настройки пакета для конкретного языка в Sublime Text

Как сделать так, чтобы настройки пакета отличались в зависимости от языка? Общие настройки Sublime Text легко изменить в зависимости от языка (например, я могу использовать Python.sublime-settings, чтобы установить количество пробелов для отступа, специфичное для Python). Но я не могу понять, как изменить настройку для конкретного пакета (чьи настройки, похоже, находятся в другой области действия, чем общие настройки приложения).

В частности, я пытаюсь изменить параметр show_transferred_text в SublimeREPL. В R мне нужно, чтобы это было «ложно», а в Python мне нужно, чтобы это было «правда». Есть ли что-то, что я могу добавить к строке «show_transferred_text»: true в моих настройках Python.sublime, чтобы указать, что это параметр для SublimeREPL? Такая установка не меняет параметр SublimeREPL, опять же я предполагаю, что настройки для конкретного пакета находятся в другой области.

Это дает начало, которое позволило бы мне написать подключаемый модуль для этого, но мне интересно, поддерживается ли он уже более просто в ST. Есть ли область пакета или что-то, что я могу добавить к ключу, который может позволить мне напрямую устанавливать ключи пакета?


person cauchy    schedule 17.10.2013    source источник


Ответы (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)

Но мне все равно хотелось бы узнать, можно ли это сделать без плагина!

person cauchy    schedule 17.10.2013
comment
Я просто писал вам ответ - насколько мне известно, невозможно определить параметры REPL для конкретного языка, не делая это так, как вы только что сделали. Хороший плагин, кстати, но небольшое замечание — следуя PEP8, вы действительно должны делать отступы в 4 пробела вместо 2 :) - person MattDMo; 18.10.2013
comment
Не стесняйтесь открывать вопрос на GitHub, автор довольно отзывчив, но я не знаю, сколько времени ему потребуется, чтобы реализовать что-то подобное. Конечно, предоставленный код всегда помогает ускорить процесс! - person MattDMo; 18.10.2013
comment
Спасибо за помощь! Я бы открыл проблему, но это похоже на проблему Sublime Text, а не на проблему SublimeREPL - я могу себе представить, что нужно другое поведение пакета для конкретного языка. (И я обратил внимание на PEP8, но я могу иметь дело только с 80 символами или 4 пробелами, а не с обоими, и я выбираю 80 символов, потому что я использую 2 пробела еще до рождения Python!) - person cauchy; 18.10.2013