LINUX.ORG.RU
ФорумTalks

Emacs поворачивается к пользователям, не знающим Elisp, лицом

 ,


0

3

Eglot и Tree-sitter уже в Emacs core (git, 29 ver).

Eglot - The Emacs Client for LSP servers
Tree-sitter - parser generator, builder of syntax tree and syntax highlighter

Tree-sitter in Emacs’s core: https://github.com/casouri/emacs (the future)

Eglot is now in Emacs’s core! Upcoming Emacs 29 will have M-x eglot built-in. https://github.com/joaotavora/eglot#emacscore

Такое как новость ))



Последнее исправление: Roy-Batty (всего исправлений: 4)

Ответ на: комментарий от shalom_

Ну по сравнению с прошлыми версиями, то теперь и прозрачность и, понимаешь, GTK native.

Это не отменяет «жопости» для непосвященных ))) Согласен.

Roy-Batty
() автор топика

Неужели LSP перестанет тормозить в имагзе? Дождались!

Хотя ладно, у меня лаги пропали вместе с native comp. Но всё равно приятно.

hateyoufeel ★★★★★
()
Ответ на: комментарий от hateyoufeel

Ну так eglot можно было и раньше использовать, просто сейчас его сделали core-пакетом. Хотя я его тыкал пару лет назад, и мне больше lsp-mode понравился.

theNamelessOne ★★★★★
()
Ответ на: комментарий от no-such-file

Да там бенчи проводились. Я вчера читал статью создателя eglot. И кода в 2 или 3 раза меньше, чем LSP-mode. Вроде так.

Roy-Batty
() автор топика
Ответ на: комментарий от Nervous

В нормальные дистрибутивы 29 все равно еще не скоро доедет.

Поделил на ноль.

Meyer ★★★★★
()
Ответ на: комментарий от Nervous

В нормальные дистрибутивы 29 все равно еще не скоро доедет.

Хоть один бы узнать «нормальный» ))

Потому, как deb в первых рядах (emacs-snapshot).
Source-based - сам можешь что угодно и как угодно.
rpm - вот тут да.

Roy-Batty
() автор топика
Последнее исправление: Roy-Batty (всего исправлений: 1)
Ответ на: комментарий от e1nste1n

Ты не понял. В Emacs была беда с парсингом, так как тормозил. Если (когда) в core прикрутят tree-sitter, будет сплошной ништяк с построением синтаксического дерева. Да, работы по переписыванию плагинов много, но с другой стороны будет более качественный и расширенный подход ко многим вещям, живущим пока на костылях и хаках.

Как и этот, где уже отписался создатель company-mode:

I wonder where the biggest win was, though. I always figured the current bottleneck is Lisp object allocation during parsing, but it's not currently parallelizable, in Lisp or native code. And libjansson itself was pretty fast in comparison.

So does it come from reducing string copying (before they are handed to/from JSON parser/serializer) and Lisp function calls? Or it parallelizing the parsing itself really that beneficial?

По твоей ссылке.

Roy-Batty
() автор топика
Последнее исправление: Roy-Batty (всего исправлений: 1)
Ответ на: комментарий от e1nste1n

О! Прикольно. Надеюсь, войдёт в master. Я на 29 давно сижу, поэтому мне лень это тестировать, плюс у меня сейчас и так всё нормально работает.

hateyoufeel ★★★★★
()
Последнее исправление: hateyoufeel (всего исправлений: 1)
Ответ на: комментарий от Nervous

Для убанты вроде PPA был со сборками из гита. А в NixOS есть emacs-overlay.

hateyoufeel ★★★★★
()
Последнее исправление: hateyoufeel (всего исправлений: 1)

LSP в принципе оказалось далеко не повидлом. Славься MS за стандартизацию, но как оно торомзит на фоне нативных реализаций в IDEA! Не важно Emacs это или VSC, все как-то через задницу.

zloelamo ★★★★
()
Ответ на: комментарий от zloelamo

Причешут. Как ни странно, повлияло движение neovim. С их попыткой внедрения tree-sitter в редактор - выиграли. Да, на Lua писать такие вещи неудобно, но остальные потихоньку подхватывают.

Roy-Batty
() автор топика
Ответ на: комментарий от Roy-Batty

Ну самом деле, со стороны имагза пофигу. То, что разные сервера лагают по-разному, это факт, да. С хацкелловым и наверное плюсовым меньше всего проблем. Ржавый иногда выдрючивается, потому что у меня NixOS и он пути к нативным либам не всегда может подхватить.

hateyoufeel ★★★★★
()
Ответ на: комментарий от hateyoufeel

Clangd очень активно пилят, и умные (Lex Fridman не даст соврать).
Haskell понятно, что норм, может разве что функционал не так бысто растёт или поспевает за изменениями GHC.

Я при установке TreeSitter отключаю запрос на syntax серверам, явно быстрее. Особенно на больших проектах. Ну и по памяти просадок меньше. Только надо каждый сервер настраивать, лезть в доки… Напрягает.

Roy-Batty
() автор топика
Последнее исправление: Roy-Batty (всего исправлений: 1)
Ответ на: комментарий от Roy-Batty

Если (когда) в core прикрутят tree-sitter, будет сплошной ништяк с построением синтаксического дерева.

Судя по Neovim, ништяком там и не пахло. Как только дело доходит до парсинга какого-нибудь реального кода на C или C++, то у tree-sitter сразу возникают проблемы. Т.е. быстрее оно работает, да, но по качеству - лучше бы не работало.

Vovka-Korovka ★★★★★
()
Ответ на: комментарий от Roy-Batty

Haskell понятно, что норм, может разве что функционал не так бысто растёт или поспевает за изменениями GHC.

Есть такое, да. Но мне только ошибки показывать, так что и пофиг.

Я при установке TreeSitter отключаю запрос на syntax серверам, явно быстрее. Особенно на больших проектах.

Очень странно. Раскрашиваться по идее должны только открытые файлы, а не вообще весь проект.

hateyoufeel ★★★★★
()
Ответ на: комментарий от hateyoufeel

Ну так на больших проектах большие файлы ))) И оно же всё равно в фоне компилирует, чтобы ошибки подсветить, если ещё синтаксисом нагружать…

Roy-Batty
() автор топика
Ответ на: комментарий от Vovka-Korovka

И да и нет. Главное, большой шаг в семантическую раскраску, чего до TS не было.

Roy-Batty
() автор топика
Ответ на: комментарий от Roy-Batty

И оно же всё равно в фоне компилирует, чтобы ошибки подсветить, если ещё синтаксисом нагружать…

Компиляция разная бывает. Чтобы подсветить ошибки, не нужно целиком весь конвейер прогонять. Достаточно только распарсить и проверить типы, в современных компиляторах довольно быстро делается.

Ну, если не считать всяких плюсов, где нужно вычислять тормозные шаблоны, конечно же. Это отдельный рак.

hateyoufeel ★★★★★
()
Последнее исправление: hateyoufeel (всего исправлений: 1)
Ответ на: комментарий от Roy-Batty

Удобства тоже разные бывают :D

У меня, считай, подсветки синтаксиса нет как таковой. Монохромная тема, жирным выделены ключевые слова, плюс сереньким строковые литералы и комментарии. Для этого вообще LSP не нужен, тут можно регекспами всё сделать.

hateyoufeel ★★★★★
()
Ответ на: комментарий от hateyoufeel

Попросим ссылку на тему. А лучше скрин, как оно выглядит. Я давно присматриваюсь к минималистическим темам, у них, оказывается, есть ярые почитатели. И в лагере Vim и в Emacs.

Roy-Batty
() автор топика
Ответ на: комментарий от Roy-Batty

almost mono white светлая, tao yin тёмная. Меняю их по вкусу и в зависимости от освещения вокруг.

Скрин с первой в галерее вот тут: Закос под мак здорового человека

hateyoufeel ★★★★★
()
Последнее исправление: hateyoufeel (всего исправлений: 2)
Ответ на: комментарий от hateyoufeel

Tao я пробовал, сильный контраст. Ну, я так понимаю, что легче сделать самому. Уж очень это дело индивидуально, глаза у всех свои, цвета тоже.

Roy-Batty
() автор топика
Ответ на: комментарий от Roy-Batty

Я бы не сказал, что прямо сильный, если подсветку экрана на максимум не выкручивать. Наверное, от этого зависит. Яхз.

У меня ещё плагин auto-dim-other-buffers стоит, который меняет цвет фона неактивным окнам. Рекомендую.

hateyoufeel ★★★★★
()
Последнее исправление: hateyoufeel (всего исправлений: 1)
Ответ на: комментарий от Roy-Batty

Я вчера читал статью создателя eglot. И кода в 2 или 3 раза меньше, чем LSP-mode. Вроде так

Так там и фич в 2-3 раза меньше.

no-such-file ★★★★★
()

Я тут как раз сейчас играюсь с tree-sitter, и вижу, насколько дальше продвинулся neovim в этом плане. Там и языков намного больше поддерживается, и помимо хайлатинга (кстати, сильно тюнингованного под реальность в сравнении с апстримом) всякие хитрые query вроде indent, folds, injections, locals. В патче emacs есть только highlighting и indent. Плюс для neovim уже есть тьма lua плагинов, которые используют tree-sitter для реализации, например, stickyfunc (старая фишка emacs, основанная на кривом semantic).

Вообщем, объективно emacs стал сильно отставать. И контрибьютить туда сложно, я как-то давно хотел заслать патч в eglot, а они затребовали отсылать им письменную клятву по почте, что этот код на elisp написал я и претензий со стороны корпораций (elisp, лол) не будет.

snizovtsev ★★★★★
()
Последнее исправление: snizovtsev (всего исправлений: 3)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.