Комментарии 14
Расширения в VS Code пишутся на Typescript
JavaScript уже запретили?
нет, не запретили, не стал сильно вдаваться в этот вопрос, так-то, если заморочиться, то можно на чём угодно, по идее, писать, но Typescript будет поудобнее, разве нет?
то можно на чём угодно, по идее, писать
Даже на C++? Расскажите как - мне интересно.
Ну, например, есть такая разновидность расширений - сервер поддержки языка, они работают по определённому протоколу и поэтому абсолютно неважно, на чём они написанны, такая же история и с расширениями типа адаптер отладки.
Опять же, если очень хочется, то можно что-то в ноду завернуть, но это потребует усилий для поддержки на разных платформах. Но, тем не менее, чем-то таким занимается Микрософт в своих расширениях для cmake и c++, если ничего не путаю. В принципе, этому можно посвятить отдельную серию статей, если будет запрос от трудящихся :)
На чём угодно, если оно компилируется в javascript. В том числе и на С++, и на Rust. Я сам вот например собираюсь писать расширение на scala. Единственная возникающая тут проблема это так называемые фасадные библиотеки. Т.е. библиотеки (для С++ это просто заголовочные файлы), удобно описывающие интерфейсы vscode API, в системе типов выбранного языка. Но у scala с этим очень хорошо, фактически там напрямую используются типизированные библиотеки typescript.
Расширение на scala? Очень интересно, а какого рода расширение?
А про библиотеки для С++ - к сожалению, заголовочными файлами тут не обойтись) или я что-то недопонял?)
Расширение на scala? Очень интересно, а какого рода расширение?
Система разработки для своего процессора, встраиваемого в проекты на FPGA. Ассемблер с настраиваемой системой команд, микроассемблер(генератор микрокода), отладчик-эмулятор, отладчик для реального железа. Поскольку процессор пишется на Chisel, который scala-библиотека, я решил пусть и всё будет на scala. Вот примеры расширений на scala:
https://github.com/pme123/vscode-scalajs-hello это проект на sbt
https://github.com/incrementum/vscode-extension-scala-mill это на mill
А про библиотеки для С++ - к сожалению, заголовочными файлами тут не обойтись) или я что-то недопонял?)
Да нет, тут всё прозрачно. С++ прекрасно компилируется в javascript, см. например https://emscripten.org/index.html . Да и у ванильного clang есть бэкэнд, генерирующий javascript https://habr.com/ru/articles/454868/ . Это означает, что всё что Вы напишете на С++ в итоге превратится в javascript и сможет быть выполнено средой vscode. Единственная проблема - расширение должно взаимодействовать со средой. Т.е. как-то вызывать функции её API. Для scala эта проблема давно решена. Есть конвертер интерфейсных библиотек typescript в scala. Да, иногда приходится дорабатывать напильником. Но вобщем-то работает достаточно стабильно. Существует ли такая штука для С++ - не знаю. Если да, то вообще без проблем. Конвертируешь нужные библиотеки typescript в файлы описания классов С++ и вперед. Если нет, придется либо написать такой конвертер самому, либо писать соответствующие h-ники ручками.
Ой, как же хорош Emacs, когда читаешь как писать плагины для других редакторов)
Но пост был познавательным, Я охренел
спасибо, а что именно удивило, если не секрет?
Ну.. Я не думал до этого как работает система плагинов в современных редакторах, а это ну довольно легко, точно легче, чем я(пользователь Emacs) думал — просто регистрируешь команды в json, встроенные UI компоненты легко расширяются. Но в Emacs ещё легче)
Ответ на сообщение ниже: Это не похоже на разработку пакетов в Emacs. Emacs это по сути просто REPL, где ты выполняешь код, например, определяет функцию и можешь моментально юзать, никаких стандартов только фантазия
откомментировал ниже, может это похоже на Emacs?
спасибо большое за статью. Как раз задумывался над какими-то механизмами, которые бы облегчали запоминание всевозможных команд, которых ныне огромное количество. Имею в виду в основном фронтовые фреймворки, где у каждого своя специфика и документация. Было бы здорово через подобные плагины сделать простой способ по выполнению частых команд. подскажите, а для именно для VSCode какие-то ещё есть варианты языков для написания расширений? или в основном Typescript как некий бестпрактис?
Есть такая вещь как Задания (Tasks) , на уровне конфигурационных файлов можно всё сделать, в описании есть опять про TypeScript, но его совершенно необязательно использовать. Или можно взять расширение, которое помогает с ними работать, например, TaskList, описание есть здесь, поставить можно прямо из Кода. Может допишу тут про это подробнее, если есть запрос.
Пишем простые расширения VS Code для автоматизации задач командной строки