В 2017 году появились сообщения о начале работы по реализации LSP (Language Server Protocol) в GCC и тогда же появились первые патчи POC реализации. А каков нынешний статус LSP в GCC? Он уже реализован или должен появиться в GCC 11 или ещё не скоро?
Я сейчас уже не найду так быстро, но в районе 2005, когда поднимался вопрос о запиливании дампа AST и экспорта ошибок в машинно-читаемом формате, многие разработчики GCC были резко против из-за возможности использования этих фич в проприетарных IDE для парсинга кода. Там вроде даже RMS засветился.
Какие-то перцы ещё запилили убожество в виде gccxml как решение проблемы. Ну а потом появился clang, который это легко позволяет делать, и все забили на интеграцию gcc жирный болт.
By default, code completion is fully provided by Clangd. CLion still uses the build-in engine to complete symbols for non-included files if Clangd-based completion fails to provide anything. In the case of a crash or another serious issue, CLion switches to the built-in engine as well.
Подозреваю, что LSP для раста ещё в достаточном сыром состоянии: нет большой выгоды от переиспользования - ведь придётся как-то и свой код адаптировать.
Я так понимаю, JetBrains просто написали своё потому что могут.
Ну я примерно так же думаю. Если могут (себе позволить), то пишут сами. Видать решили, что догонять и перегонять clangd нерентабельно. Растовым плагином явно небольшая команда занимается (судя по гитхабу - два человека), велосипедить без нужны не стали бы (наверное). Ну и когда плагин начинали писать, то rls был в явно худшем состоянии, чем сейчас (а rust-analyzer, наверное, вообще не было).
P.S. Использую как раз плагин от джетбрейнс и тоже «всё работает».
Потому что нужно было. И они не оценили, что с lsp внезапно любой конкурент получает тот же (или около того) функционал просто так, а им, в свою очередь и время, пришлось делать свои велосипеды под каждый язык.
Разве на тот момент, когда они запиливали поддержку Rust, RLS ещё не было?
Так-то да, я общался с парой чуваков оттуда, и они были крайне недовольны существованием LSP. Тем более, что реализации LSP обычно основаны на коде компилятора соответствующего языка, а ЖБ приходится половину компилятора под каждый язык самим делать.
немного не в тему, но раз ты им пользуешься, поясни по хардкору, как там нормально настроить автодополнение? Суть такова, когда ты что-то набираешь, это убожество пытается угадать что ты набираешь, когда ты ставишь space, оно автодополняет тем, чем смогло, а не тем, что я набирал, и приходится либо перед каждым space или enter ему по esc долбить или вообще выключить это убожество. Как его по человечески настроить?