Я не могу найти никакой четкой документации по этому поводу, поэтому надеюсь, что кто-нибудь знает ответ. Может ли параметр vscode editor.codeActionsOnSave указывать на произвольные команды, определенные расширениями vscode, или вы можете использовать только такие вещи, как source.organizeImports? Я пытаюсь запустить команду из расширения, которая работает при запуске с помощью сочетания клавиш (в данном случае vsSharper.sortUsings), но когда я добавляю либо
"editor.codeActionsOnSave": [ "vsSharper.sortUsings" ]
или
"editor.codeActionsOnSave": {
"vsSharper.sortUsings": "always"
}
в моем файле settings.json команда не запускается, и мои операторы использования не сортируются по расширению. Однако я не понимаю, почему, поскольку в документации этого другого расширения, кажется, указано, что это должно быть возможно (этот параметр указывает на команду расширения): https://biomejs.dev/reference/vscode/#fix-on-save
Или попробуйте sourceOrganizeImports.vsSharper.sortUsings. Судя по дистрибутивному коду, они действительно создают codeActions.
Я добавил некоторый код в свое расширение vscode, чтобы перечислить зарегистрированные действия кода для C#, и запустил его в отладчике, и я вижу его как vsSharper.sortUsings (imgur.com/a/DiJ3ecZ), и я вижу его зарегистрированным как вы тоже указали, в коде dist. Почти начинаю задаваться вопросом, есть ли у меня какая-то другая проблема, которая мешает этому работать. Также попробовал ваши предложения, но они тоже не сработали (даже попробовал source.organizeImports.vsSharper.sortUsings на случай, если в вашем предложении была опечатка). Буду продолжать копать и отчитываться.
Приятно знать, что расширения не поддерживают это автоматически из коробки, спасибо за разъяснения по этому поводу!





Какие «команды» можно выполнить через editor.codeActionsOnSave?
Никто. Действия кода и команды — это две разные вещи. Если только разработчик расширения не заставляет реализацию действия кода выполнять то же самое, что и команда/вызывать команду.
Для реализации расширения некоторыми из связанных API являются CodeActionProvider<T> и RegisterCommand.
Если вы хотите узнать, какие действия с кодом предоставляет расширение, проверьте его документацию. Если они не задокументированы, вы потенциально можете найти информацию об этом, прочитав исходный код, но поскольку провайдер может делать все, что захочет (например, делать внешние вызовы JS, например, к двоичному файлу программы без отладочной информации), вы с этим тоже может не повезти. Попробуйте также активировать подсказки в теле editor.codeActionsOnSave в settings.json.
Попробуйте запустить их как
source.vsSharper.sortUsings. Расширения могут заставить свои команды работать какcodeActions, но они должны это делать — это происходит не со всеми командами, созданными расширением. Если в README об этом ничего не сказано, возможно, они не сделали того, что было необходимо.