Настройка подкладки в пакете Anaconda Sublime - PullRequest
0 голосов
/ 25 февраля 2020

Я использую пакет Anaconda для Sublime 3, и он отлично работает. Моя единственная проблема заключается в том, что при подсвечивании все виды ошибок, предупреждений и рекомендаций PEP8 выделяются одним и тем же цветом - белым. Я хотел бы изменить это так, чтобы ошибки были красными, предупреждения были желтыми и т.д. c ... Но я не могу понять, как это сделать. Я нашел этот ресурс, который в основном говорит мне добавить некоторый XML код в мою текущую тему, чтобы изменить цвет подкладки, но я попытался сделать это, и он ничего не сделал.

все, что я считаю, что теперь темы используют json, а не XML, в именах файлов типа ".sublime-color-схема" или ".sublime-theme". Таким образом, я нашел пользовательскую тему, которая действительно имела файл «.tmtheme», и вставил XML код, указанный здесь , но линтинг все еще был полностью белым.

Затем я попытался перевести это XML код в json и вставка его в файл ".sublime-color-схема", но опять же, линтинг был белым. Чтобы быть точным, я вставил его в запись "rules" :[], так как это, казалось, соответствовало формату.

Любой, кто имеет больше опыта, может сказать мне, что я делаю неправильно, или указать мне другой способ изменения цвет подкладки? Мне известен такой пакет, как SublimeLinter, но я бы предпочел придерживаться встроенного линтера в пакете Anaconda, так как он отлично сочетается с окраской.

1 Ответ

1 голос
/ 27 февраля 2020

Как вы заметили, в Sublime Text есть два различных типа цветовых схем:

  1. Формат tmTheme, который представляет собой файл XML plist. Этот формат все еще поддерживается, но на данный момент считается устаревшим форматом файла.

  2. Формат sublime-color-scheme, который представляет собой файл JSON. Этот формат может делать все, что может делать формат tmTheme, и имеет дополнительные возможности, которых нет у файлов tmTheme.

ПРИМЕЧАНИЕ. Несмотря на название, tmTheme файлы являются цветовыми схемами, а не Темами. Формат, к сожалению, назван, но в Sublime Text Theme - это совсем другая вещь, которая стилизирует приложение в целом.

Это различие не особенно важно здесь, но оно может застать вас врасплох, если вы go ищете информацию, потому что иногда вы в конечном итоге находите информацию, которая, кажется, ни к чему не относится.

Трудно сказать точно, что вы могли сделать неправильно, так как вы не включили контент, который вы пытались добавить в файлы. Как правило, я ожидаю, что все, что вы добавили туда, будет либо работать, либо вызывать какую-либо ошибку (либо всплывающее окно, либо в консоли Sublime), исключая любые проблемы конфигурации с самим пакетом.

Как добавленное примечание Я не использую этот пакет (или линтеры в целом), поэтому для целей тестирования настройки Anaconda, с которыми я тестировал, являются стандартными, за исключением следующих двух настроек:

    // The default is "basic", but that seemed too generic for testing
    "anaconda_gutter_theme": "bright",

    // I don't use linters, but I happened to have pylint already installed
    // so this was the path of least resistance.
    "use_pylint": true,

Как вы go о добавление дополнительных правил в вашу цветовую схему зависит в первую очередь от того, где ваша цветовая схема живет. В частности, если вы создали свою собственную цветовую схему, которая хранится в вашем пакете User, шаги отличаются от тех, которые вы используете, используя цветовую схему, предоставленную кем-то другим (Sublime Text или какой-то пакет, который вы установили) .

Поскольку большинство людей, как правило, используют уже существующие цветовые схемы, которые они получили откуда-то еще, мы сначала рассмотрим их.

Правила цвета, которые приведены на странице, на которую вы ссылаетесь, в формате tmTheme XML и выглядят так:

<!-- Anaconda -->
<dict>
  <key>name</key>
  <string>anaconda Error Outline</string>
  <key>scope</key>
  <string>anaconda.outline.illegal</string>
  <key>settings</key>
  <dict>
      <key>background</key>
      <string>#FF4A52</string>
      <key>foreground</key>
      <string>#FFFFFF</string>
  </dict>
</dict>
<dict>
  <key>name</key>
  <string>anaconda Error Underline</string>
  <key>scope</key>
  <string>anaconda.underline.illegal</string>
  <key>settings</key>
  <dict>
      <key>background</key>
      <string>#FF0000</string>
  </dict>
</dict>
<dict>
  <key>name</key>
  <string>anaconda Warning Outline</string>
  <key>scope</key>
  <string>anaconda.outline.warning</string>
  <key>settings</key>
  <dict>
      <key>background</key>
      <string>#DF9400</string>
      <key>foreground</key>
      <string>#FFFFFF</string>
  </dict>
</dict>
<dict>
  <key>name</key>
  <string>anaconda Warning Underline</string>
  <key>scope</key>
  <string>anaconda.underline.warning</string>
  <key>settings</key>
  <dict>
      <key>background</key>
      <string>#FF0000</string>
  </dict>
</dict>
<dict>
  <key>name</key>
  <string>anaconda Violation Outline</string>
  <key>scope</key>
  <string>anaconda.outline.violation</string>
  <key>settings</key>
  <dict>
      <key>background</key>
      <string>#ffffff33</string>
      <key>foreground</key>
      <string>#FFFFFF</string>
  </dict>
</dict>
<dict>
  <key>name</key>
  <string>anaconda Violation Underline</string>
  <key>scope</key>
  <string>anaconda.underline.violation</string>
  <key>settings</key>
  <dict>
      <key>background</key>
      <string>#FF0000</string>
  </dict>
</dict>

Чтобы добавить эти правила, нам нужно сначала преобразовать их в формат sublime-color-scheme JSON, даже если ваша цветовая схема tmTheme . Метод, используемый для настройки цветовой схемы, заключается в создании файла в пакете User с дополнительным содержимым, и этот файл всегда имеет формат sublime-color-scheme.

Преобразование этих правил в новый JSON формат sublime-color-scheme выглядит следующим образом:

{
    "name": "anaconda Error Outline",
    "scope": "anaconda.outline.illegal",
    "foreground": "#FFFFFF",
    "background": "#FF4A52"
},
{
    "name": "anaconda Error Underline",
    "scope": "anaconda.underline.illegal",
    "background": "#FF0000"
},
{
    "name": "anaconda Warning Outline",
    "scope": "anaconda.outline.warning",
    "foreground": "#FFFFFF",
    "background": "#DF9400"
},
{
    "name": "anaconda Warning Underline",
    "scope": "anaconda.underline.warning",
    "background": "#FF0000"
},
{
    "name": "anaconda Violation Outline",
    "scope": "anaconda.outline.violation",
    "foreground": "#FFFFFF",
    "background": "#ffffff33"
},
{
    "name": "anaconda Violation Underline",
    "scope": "anaconda.underline.violation",
    "background": "#FF0000"
},

В зависимости от вашей фактической цветовой схемы, цвета здесь могут быть или не быть подходящими, поэтому вам придется поиграть с чтобы они выглядели так, как вы хотите. Это также потребует знания того, что классифицируется как illegal против warning против violation, а также того, как вы настроили стиль подкладки Anaconda. Ваши правила могут потребовать foreground, background или both в зависимости от того, как вы их настроили.

С этим контентом в руках, мы готовы начать. Чтобы выполнить настройку, вам нужно знать, как называется ваша цветовая схема. Вы можете получить это, используя Preferences > Settings и взглянув на настройку color_scheme (если вы используете настройки синтаксиса c, откройте файл этого типа и используйте Preferences > Settings - syntax specific и получите оттуда цветовую схему) ,

Интересующая нас часть - это имя файла; нас не волнует, в каком пакете он может сказать, в котором он живет, только имя самого файла. Нам также не важно, какое расширение имеет файл, потому что мы все равно будем предполагать, что это расширение sublime-color-scheme.

Например, с настройкой, заданной следующим образом, имя цветовой схемы это Cobalt, и это все, что нас волнует.

    "color_scheme": "Packages/Color Scheme - Legacy/Cobalt.tmTheme",

При такой цветовой схеме, приведенной выше конфигурации и некотором примере кода результаты, которые я вижу в буфере, таковы:

Cobalt Sample without adjustments

Чтобы установить новые правила, нам нужно создать файл sublime-color-scheme в пакете User, названный в соответствии с нашей цветовой схемой. Так что в этом случае это будет Cobalt.sublime-color-scheme. Если вы не уверены, где находится ваш пакет User, вы можете использовать Preferences > Browse Packages, чтобы найти его.

Содержимое файла, который вы создаете, должно выглядеть следующим образом (вставьте содержимое сверху соответствующим образом ; для краткости я не включаю его снова здесь):

{
    "rules": [
        // Paste the JSON rules above here
    ]
}

Как только вы сохраните файл, он вступит в силу. В результате получается следующее:

Cobalt with new rules

Предполагается, что вы используете цветовую схему, созданную вами самостоятельно, которая входит в пакет User, это не будет работать, и вместо этого вам нужно будет добавить правила непосредственно в файл цветовой схемы в пакете User. Это также будет иметь место, если у вас есть файл «заплатки», подобный этому, уже в вашем пакете User (например, если вы добавляете дополнительные цветовые правила для чего-то другого).

Если ваша пользовательская цветовая схема в формате sublime-color-scheme, тогда вы можете просто добавить эти правила в раздел rules вашей цветовой схемы, как указано выше, чтобы они вступили в силу.

Если ваша цветовая схема имеет формат tmTheme, тогда вместо этого вам нужно будет скопировать XML версию настроек в вашу цветовую схему. Вот как это сделать не так просто, как в случае файла в формате sublime-color-scheme из-за природы файла XML.

В этом случае вместо этого вам нужно будет заметить, что каждое правило представляет собой тег <dict></dict> с указанными c ключами, а затем проверить цветовую схему, чтобы увидеть, где оно имеет аналогичные цветовые правила, и ввести ваши в правильное местоположение.

Вообще говоря, если вы ошибетесь, цветовая схема будет проигнорирована (все станет черно-белым), и вы получите диалоговое окно с сообщением об ошибке, что-то пошло не так.

Дополнительную информацию о том, как работают цветовые схемы, как применять цвета и т. Д. c, можно найти в этом видеоролике о цветовых схемах в Sublime Text (с заявлением об отказе от ответственности, автором которого я являюсь видео, о которых идет речь).

...