Почему для языка emacs-lisp нет протокола языкового сервера?
Например, пакет lsp-mode для Emacs содержит поддержку многих языков с их языковыми серверами. Но нет emacs-lisp.
Почему это так?
То же самое касается и пакета eglot.





Если для данного языка нет доступного языкового сервера, это происходит потому, что никто не был достаточно мотивирован, чтобы приложить усилия для его написания.
Я уверен, что если кто-нибудь захочет этого достаточно сильно, они напишут; но очень немногие люди, не использующие Emacs, вероятно, будут заинтересованы в написании языкового сервера, который почти бесполезен для пользователей, не использующих Emacs; а для людей, использующих Emacs, Emacs всегда предоставлял довольно надежную среду разработки для написания Emacs Lisp, и я полагаю, что большинство людей считает, что это уже достаточно хорошо.
Также имейте в виду, что среда разработки «Emacs» и обычная среда выполнения для языка программирования «Emacs Lisp» — это одна и та же программа. Что необычно. Таким образом, Emacs не зависит от какой-либо внешней программы, такой как языковой сервер, чтобы сообщить ему что-то о языке.
Я помню, что эта тема всплывала в списках разработчиков, и некоторые люди считали, что основное преимущество языкового сервера elisp будет для людей, использующих редакторы, отличные от Emacs, и что усилия лучше направить на улучшения Emacs. Общего согласия по этому поводу не было, но, тем не менее, это, вероятно, сокращает количество людей, которые могли бы чувствовать необходимость работать над таким проектом в первую очередь.
Форматировать вручную. find-function и find-variable (или xref-find-definitions). Я не знаю, что вы хотите от "наведения". Я уверен, что вы не найдете эквивалентов для всех функций LSP, но я думаю, что такое отсутствие не обязательно побудит кого-либо написать языковой сервер. (Я считаю, что LSP меньше десяти лет, а люди с удовольствием пишут Emacs Lisp на три десятилетия больше.)
Конечно, насколько мне известно, кто-то уже может работать над одним — нет никаких технических причин, по которым это нельзя было бы написать, поэтому все, что нужно, — это кто-то, кто достаточно сильно этого хочет, чтобы это сделать. Однако в настоящее время я не знаю о таком проекте, и я в основном просто пытаюсь указать, почему он не может быть приоритетным для многих людей.
"Я уверен, что вы не найдете эквивалентов для всех функций LSP" - должен сказать, что это меня сильно беспокоит. Все эти функции LSP значительно облегчают жизнь разработчику. "Форматировать вручную" - я не хочу делать это вручную, у нас есть компьютеры для этого :-) Меня действительно интересует, почему для Elisp нет LSP-подобных средств.
Пожалуйста, отредактируйте свой ответ с примерами «Emacs всегда предоставлял довольно надежную среду разработки для написания Emacs Lisp». Заранее спасибо.
Я не знаю, чего вы хотите, извините, и я не собираюсь перечислять все возможности редактирования в Emacs.
«Я не знаю, чего вы хотите, извините, и я не собираюсь перечислять все возможности редактирования в Emacs». - Вот несколько примеров того, что предоставляет сервер LSP: переход к определению, наведение, параметры, форматирование. ОБНОВЛЕНИЕ: А-а-а, теперь меня поразила лампочка! Мне удалось найти подходящее ключевое слово для поиска в Google, чтобы воспроизвести все функции LSP с помощью vanilla Emacs. Например: «emacs elisp перейти к определению» и/или «emacs elisp hover» и т. д.
Еще один аргумент против Elisp LS: «заплатите за сериализацию из/в JSON, RPC и постоянный запуск низшего процесса, когда возможности интроспекции Emacs могут предоставить те же возможности».
Я понимаю, что вы говорите примерно так: «Emacs сам по себе имеет такие замечательные функции и поддержку, а не то, что для языка Elisp вам действительно не нужен LSP». Я прав? Если да, то вот мой контраргумент: я пытался найти простейшие действия в буфере Elisp и ничего не нашел. Как вы делаете форматирование (без отступов)? Перейти к определению? Наведите? Должно быть, я использую неправильные ключевые слова для поиска в Google.