Приветы всем!
Как-то не доходили руки до постов на тему тулинга. Што ш, будем сегодня разбираться, как завести иосные проекты в курсоре! 🚘
Начнём издалека и вспомним, что Apple нам так-то выкатили Swift Language Server Protocol. Эта вещица позволяет наделить любой редактор возможностью
понимать свифтовый код.
Очень грубо говоря - эта штука умеет взять все файлики проекта, скормить его компилятору и подвестить нам ошибки. Есть только один нюанс - она нихрена не знает про системные фреймворки. Всякие
DispatchQueue.main.async и т.д. для него выглядит как бред сумашедшего.
И это по факту полная руина попыток сбежать из икскода. Мы можем писать на свифте в том же VS Code, но не можем писать под иос 😤.
Чуть позже кто-то весьма умный заметил, что современные проекты уже давно не набор файлов, собирающиеся компилятором в бинарник. Сейчас везде целые билд системы. Они знают как запускать код, его тесты, какие есть зависимости и откуда они тянутся.
Так появился Build Server Protocol. Если LSP мог предоставить нам автокомплит только в рамках существующего кода, то BSP уже знает буквально всё о нашем проекте и соотвественно уровень автокомплита совершенно иной.
Пару лет назад кто-то обнаружил поддержку BSP в Xcode. Так появился проект
xcode-build-server. Это позволило наконец иметь нормальный автокомплит в других редакторах. Ничего более он не умеет, но многим уже и этого достаточно. Я пытался его использовать годик назад, но как-то не срослось.
И вот недавно увидел проект
Sweetpad. Это расширение для VS Code. Он умеет не только показывать хороший автокомплит, но и полноценно запускать проект без захода в икскод.
Сегодня решил дать ему шанс и поработал весь день из курсора.
Вкратце
- заебись 🎧.
С кайфом поработал целый день. В икскод заходил только для дебага. Вообще и дебаг должен был нормально работать - я проверял на тестовом проекте. Но не так нет, на моём проекте дебаг не то чтобы сильно полезная вещь.
Кто ещё не понял - эта херня очень сильно бустит возможности вайбкодерства в курсоре. Если раньше нейронка генерировала код исключительно на основе текста, то теперь курсор может понять, что скомпилируется, что нет и внести соответствующие правки.
Такие дела! ☕️