Автор Тема: подсветка строки в одинарных кавычках  (Прочитано 7518 раз)

baleew

  • Сообщений: 6
Уважаемые специалисты и продвинутые пользователи ST, окажите техническую помощь в освоении техникой.
Ищу и не нахожу, (вероятно какая-то уж очень редкая потребность) как настроить подсветку синтаксиса для этого редактора, в каком месте искать и что настраивать? Очень нужна (к примеру) возможность разной подсветки строк в одинарных (') и двойных (") кавычках.
Может у кого-то есть опыт, не откажите в помощи новичку.

Loac

  • Administrator
  • Сообщений: 598
Re: подсветка строки в одинарных кавычках
« Ответ #1 : Июня 03, 2014, 11:11:39 »
Подсветка синтаксиса *.tmTheme работает в паре с форматом языка *.tmLanguage. Формат языка определяет какие именно структуры есть в коде (типы данных, ключевые слова, логические операторы и так далее), а файл подсветки содержит описание оформления для каждой из структур.

Проще всего загрузить в редактор TmTheme Editor свою подсветку и отредактировать.

Внизу страницы есть статусная строка, которая при наведении курсора на участок кода, будет отображать его селектор. Селекторы, это названия тех структур, что описаны в *.tmLanguage. Они перечислены через пробел и имеют приоритет.

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

1. Отредактируй существующий селектор String. Название может быть произвольным, а сам селектор string.quoted.double.
2. Добавь новый селектор String quoted single с селектором string.quoted.single.
3. Если тебе надо изменить подсветку только в конкретном языке, добавь дополнительный селектор text.html.mt string.quoted.double.
4. Чтобы увидеть добавленные селекторы, нажми сверху кнопку Save.
« Последнее редактирование: Июня 03, 2014, 11:16:46 от Loac »

baleew

  • Сообщений: 6
Re: подсветка строки в одинарных кавычках
« Ответ #2 : Июня 03, 2014, 18:47:00 »
Спасибо огромное! Всё предельно ясно с *.tmTheme, с этим я разобрался, но с *.tmLanguage  похоже у меня не получается. Как я понял эти настройки можно менять в Syntax specific - User, но как взять нужное из основного файла я не могу понять. Или его (.tmLanguage) надо сначала специально загрузить в ~/Library/Application Support/Sublime Text 3/Packages, а потом править?

Loac

  • Administrator
  • Сообщений: 598
Re: подсветка строки в одинарных кавычках
« Ответ #3 : Июня 04, 2014, 10:43:08 »
Файлы *.tmLanguage находятся в плагинах:

- CSS.sublime-package/CSS.tmLanguage
- HTML.sublime-package/HTML.tmLanguage
- и так далее.

Сами *.sublime-package можно распаковать любым разархиватором и посмотреть его скрипты и параметры.

Syntax Specific - User – это один из пользовательских файлов настроек. В нам можно задавать теже самые параметры, что и в Settings - User, но он имеет больший приоритет и будет работать только с тем типом файлов, для которых создан.

Если тебе нужна подсветка для какого-то специфического языка, можно попробовать сделать свой собственный tmLanguage или найти готовый. Если это что-то более менее распространенное, то наверняка уже кто-то это сделал :)

baleew

  • Сообщений: 6
Re: подсветка строки в одинарных кавычках
« Ответ #4 : Июня 04, 2014, 12:08:52 »
ААА! вот оно, то чего я не понимал, как вынуть скрипт из упаковки. Спасибо большое, теперь может разберусь если посмотрю на сам скрипт. Насчет определенного языка понятно, а вот если такая возможность (хоть в теории), чтоб например сделать селекторы string1, string2 и т.д., описать их в пользовательском скрипте и чтоб эти условия выполнялись для всех типов файлов.

В общем ничего такого особенного мне не надо, просто я долгое время использовал другой редактор и там есть подсветка нескольких видов строк (в зависимости от окружающих кавычек) и теперь мне этого сильно не хватает. Хотя конечно можно привыкнуть постепенно, но вот с PHP (где кавычки имеют определенное значение) мне очень трудно, приходится всматриваться.

Насчет "кто-то" сделал -- это первое о чем я подумал, прежде чем начал пробовать делать самостоятельно, но увы… пока ничего не нашел. Может ты где-то встречал?
Спасибо тебе, дружище! Очень помог.

Loac

  • Administrator
  • Сообщений: 598
Re: подсветка строки в одинарных кавычках
« Ответ #5 : Июня 04, 2014, 12:24:40 »
Цитировать
Насчет определенного языка понятно, а вот если такая возможность (хоть в теории), чтоб например сделать селекторы string1, string2 и т.д., описать их в пользовательском скрипте и чтоб эти условия выполнялись для всех типов файлов.

Селекторы работают отдельно. Когда ты в меню выбираешь, например, View > Syntax > HTML, то подключается HTML.tmLanguage. Для CSS – CSS.tmLanguage и так далее. Одновременно их включить нельзя.
« Последнее редактирование: Июня 04, 2014, 12:33:47 от Loac »

baleew

  • Сообщений: 6
Re: подсветка строки в одинарных кавычках
« Ответ #6 : Июня 04, 2014, 13:51:38 »
Нет, не так -то это просто как показалось. Все что я смог увидеть в ~/Library/Application Support/Sublime Text 3/Cache/JavaScript -- это файл JavaScript.tmLanguage.cache, поробовал установить пакет с JavaScriptNext - ES6 Syntax, думал он будет какким-то другим, но такой же файл *.cache. Внутри он двоичный, распаковать его чем-то у меня не получилось, пробовал убрать расширение, *.tmLanguage ассоциируется только с TextMate, но ничего с ним не делает просто не видит. Может я что-то не так делаю, и есть для распаковки пакетов какие-то специальные средства? В ST2 все файлы в Packages/JavaScript видны, может надо там взять файл синтаксиса и потом уже положить его в ST3 Packages/User вручную? Словом -- ничего не получилось у меня.
Если я правильно понял, файл синтаксиса языка должен быть обыкновенным plist  и его как текст можно править?
« Последнее редактирование: Июня 04, 2014, 13:56:08 от baleew »

Loac

  • Administrator
  • Сообщений: 598
Re: подсветка строки в одинарных кавычках
« Ответ #7 : Июня 04, 2014, 14:12:35 »
Почему ты что-то пытаешься найти в кеше?

Выбери в меню Preferences > Browse Packages... и ты окажешься в папке для установки плагинов. Скачиваешь Java​Script​Next - ES6 Syntax и распаковываешь ее сюда. Лучше переименовать в JavaScriptNext, чтобы не путаться. Внутри папки все найдешь.

Если ты будешь ставить плагин через Package Control, то плагин загрузится уровнем выше, в папку Installed Packages. В этом случае, чтобы добраться до его содержимого, нужно будет распаковать JavaScriptNext - ES6 Syntax.sublime-package.

*.tmLanguage – это XML-файлы. Открываются любым текстовым редактором.
« Последнее редактирование: Июня 04, 2014, 14:14:07 от Loac »

baleew

  • Сообщений: 6
Re: подсветка строки в одинарных кавычках
« Ответ #8 : Июня 04, 2014, 14:45:14 »
Да, ты прав, как всегда, я не там искал. Теперь нашел, распаковал увидел искомое.
И последний вопрос, если позволишь, этот файл (или его кусок) нужно куда-то положить в специальное место или прямо в нем редактировать?

Loac

  • Administrator
  • Сообщений: 598
Re: подсветка строки в одинарных кавычках
« Ответ #9 : Июня 04, 2014, 14:51:55 »
Если хочешь подогнать под себя какой-то плагин, лучше установить его вручную. Тогда ты сможешь редактировать его файлы. Если что-то испортишь, просто скачаешь снова.

Файлы *.tmLanguage и *. tmTheme можно положить по отдельности в пользовательскую папку (которая User). Тогда редактор подхватит файл синтаксиса в общий список, а подсветка будет доступна из отедльного подменю Preferences > Color Scheme > User > ...

Но если это целый плагин, лучше оставить все в его папке.
« Последнее редактирование: Июня 04, 2014, 14:58:00 от Loac »

baleew

  • Сообщений: 6
Re: подсветка строки в одинарных кавычках
« Ответ #10 : Июня 04, 2014, 15:25:55 »
Ну нет, о подгонке плагинов я пока ещё и не помышляю, мне бы с подсветкой синтаксиса разобраться для начала. Или ты имеешь ввиду, что в некоторых случаях язык с подсветкой может быть как плагин собран? Конечно, судя по всему Sublime Text мощный механизм, но недели мне не хватило чтоб разобраться в его тонкостях.
Спасибо тебе за тех.поддержку!

Loac

  • Administrator
  • Сообщений: 598
Re: подсветка строки в одинарных кавычках
« Ответ #11 : Июня 04, 2014, 15:56:10 »
Я имел ввиду, что, в данном случае, нет смысла вытаскивать файлы *.tmLanguage и *. tmTheme в отдельную папку, если тебя все равно не устраивает как они настроены.

Это больше актуально для плагинов, которые идут в комплекте с редактором. В этом случае, ты просто потеряешь свои изменения после следующего обновления.

Пожалуйста :)
« Последнее редактирование: Июня 04, 2014, 15:58:25 от Loac »