Чтобы открыть файл без расширения и изменить его язык - PullRequest
0 голосов
/ 31 марта 2020

Следующий код (вы должны запустить его с cmd.exe) открывает Sublime Text и меняет язык на JSON:

sublime_text.exe -n -w --command "set_file_type {\"syntax\": \"Packages/JavaScript/JSON.sublime-syntax\"}"

Однако мне нужно немного изменить его поведение. Следует изменить язык открытого файла. Файл README без расширения.

sublime_text.exe C:\test\README -n -w --command "set_file_type {\"syntax\": \"Packages/JavaScript/JSON.sublime-syntax\"}"

По некоторым причинам он не работает. Язык по-прежнему "Простой текст". Что я делаю не так?

1 Ответ

1 голос
/ 01 апреля 2020

Когда я пытаюсь это сделать, я вижу, что он устанавливает синтаксис вкладки, которая была активна до того, как я выполнил команду.

Это говорит нам о том, что команда, указанная в командной строке, выполняется перед файлом загружен, вероятно, потому что ST делает это асинхронно.

Для меня, возможно заставить его работать, используя отдельный вызов:

subl C:\test\README && subl --command "set_file_type { \"syntax\": \"Packages/JavaScript/JSON.sublime-syntax\" }"

Обратите внимание, что я не использую -w , поскольку это будет ждать закрытия файла перед выполнением команды.

Кроме того, вы можете установить синтаксис нового файла напрямую, используя команду new_file:

subl --command "new_file { \"syntax\": \"Packages/JavaScript/JSON.sublime-syntax\" }"

Очевидно, , если вы хотите это в новом окне, вы можете оставить аргумент -n. И если вы хотите, чтобы Sublime Text не возвращал управление оболочке до тех пор, пока вы не закроете файл, то вы также можете сохранить -w, но, как я вижу, это работает, только если вы открываете файл, а не при создании новый. И если вы используете -w, вы не сможете изменить синтаксис из командной строки. Возможно, вам лучше использовать такой плагин, как ApplySyntax, либо самостоятельно написать небольшой скрипт Python, чтобы установить тип файла при открытии файла с путем C:\test\README et c.

.
...