@creatoroftheworld

Как привязать к хоткею разные команды в зависимости от синтаксиса?

В моем случае, надо чтоб если жму ctrl+q в js файле, то выполнялся макрос console.log, а в другом типе документа, происходило что-то другое
{ 
    "keys": ["ctrl+q"],
    "command": "run_macro_file",
    "args": {"file": "Packages/User/console.sublime-macro", 
    "syntax": "Packages/HTML/HTML.sublime-settings",  // * ???
  }

Гугл говорит, что нужно вот так, но такого файла нет
  • Вопрос задан
  • 203 просмотра
Пригласить эксперта
Ответы на вопрос 1
args - это аргументы команды, а вам нужен context
sublimetext.info/docs/en/reference/key_bindings.html
https://forum.sublimetext.com/t/per-syntax-key-bin...

Конкретно selector - это scope, который как раз определяет язык

Вот пример для HTML:
{
	"keys": ["ctrl+shift+enter"], 
	"command": "insert_snippet",
	"args" : {
		"contents": "<br/>"
	},
	"context": [
		{ "key": "selector", "operator": "equal", "operand": "text.html" }
	]
},


Какой именно scope у JS - не знаю
Наверное что-то типа text.javascript или text.js

У себя проверил такой keymap в юзерском `Default (Windows).sublime-keymap`:

[
	{
		"keys": ["ctrl+k", "alt+k"],
		"command": "set_layout",
		"args":
		{
			"cols": [0.0, 1.0],
			"rows": [0.0, 1.0],
			"cells": [[0, 0, 1, 1]]
		},
		"context": [
			{ "key": "selector", "operator": "equal", "operand": "source.c++" }
		]
	}
]


Выставил синтаксис Haskell - не работает
Выставил C++ - работает
Ответ написан
Ваш ответ на вопрос

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

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