@creatoroftheworld

Как задать дефолтный синтаксис для новой вкладки Sublime Text 3. Или разрешить использовать сниппеты Emmet'a для синтаксиса Plain Text?

Цель такова: чтоб при создании новой вкладки в sublime был доступен эммет. А значит, здесь два путя:
1. Задать html дефолтным синтаксисом, чего в "preferences" -> "settings - default" нету.
2. Разрешить emmet для синтаксиса Plain Text. В конфиге эммета нашел, что можно вот так:
"syntaxProfiles": {
	"html": "xhtml",
	"css": "css_line",
	"plain text": "xhtml" // * вот тут не хавает, хотя я пробовал по всякому: plain_text, plainText и тд
}

но, в общем, не получается, хотя вроде всё просто. Буду рад, если кто укажет где я затупил^^
  • Вопрос задан
  • 2918 просмотров
Решения вопроса 1
1. Создание собственного плагина

PreferencesBrowse Packages... → в папке User создаём файл default_syntax.pyсо следующим содержимым:

import sublime, sublime_plugin
class DefaultSyntaxCommand(sublime_plugin.EventListener):
	def on_new(self, view):
		view.set_syntax_file('Packages/HTML/HTML.tmLanguage')

Сохраняем. Теперь по умолчанию новые файлы будут открываться с синтаксисом HTML, где работает Emmet.

2. Apply Syntax

Многофункциональный плагин для работы с файлами с автоопределением синтаксисов. В примере показано, что необходимо сделать, для того, чтобы новые файлы открывались в синтаксисе HTML.

Скачиваем ApplySyntax → перезагружаем на всякий случай Sublime Text → PreferencesPackage SettingsApplySyntaxSettings - User → задаём параметру “new_file_syntax”: вместо false значение — путь к файлу синтаксиса без расширения, для HTML это HTML/HTML. В итоге строка будет выглядеть так:

"new_file_syntax": "HTML/HTML",

Сохраняем файл, отныне все новые файлы должны открываться в синтаксисе HTML.

3. AutoSetSyntax

Демонстрация

Пример, когда синтаксис автоматически определяется как Python, ежели мы начинаем новый файл со слова import.

IFizGku.gif
Установка и настройка

Скачиваем плагин AutoSetSyntax через Package ControlPreferencesPackage SettingsApplySyntaxSettings - User → в открывшийся файл вставляем следующий код:

"syntax_mapping": {
    "Packages/Python/Python.sublime-syntax": ["import"],
},

Не путайтесь в JSON-синтаксисе, следите за правильной расстановкой кавычек, скобок и запятых. Например, мой файл AutoSetSyntax.sublime-settings выглядит следующим образом:

{
    "syntax_mapping": {
        "ANSIescape/ANSI.tmLanguage": ["^\\s*\\[SideBarGit@.*\\] git l\\b"],
        "Packages/PHP/PHP.sublime-syntax": ["<\\?php", "<\\?="],
        "Packages/Python/Python.sublime-syntax": ["import"],
    },
    "working_scope": "(?x)^(text.plain | source.diff)\\b"
}

Сохраняем файл → после введения инструкции import синтаксис нового файла должен определиться как Python.

Что означает написанное
  • syntax_mapping — переопределяет синтаксис, если будет введено определённое сочетание
  • Packages/Python/Python.sublime-syntax — путь к файлу синтаксиса, начиная с Packages,
  • import — текст, после введения которого переопределяется синтаксис. Допускается задавать в данном значении не только обычный текст, но и регулярные выражения. Например, значение для PHP — ["<\\?php",]. Обратите внимание, что слэш, экранирующий метасимвол вопросительного знака, необходимо тоже экранировать.

4. Дополнительные ссылки

API Sublime Text 3,
Документация плагина ApplySyntax,
Настройка автоматического определения синтаксиса д...,
В Sublime Text 3 не работает подсветка Babel скрип...,

Спасибо.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы