LINUX.ORG.RU

Emacs 29.1

 , , ,


1

7

Состоялся первый и долгожданный стабильный релиз Emacs из 29 ветки.

В этой версии интегрирована знаменитая ветка Pure GTK (PGTK), реализующая графический интерфейс на базе GTK3 без привязки к X11. Таким образом, это первый официальный релиз с нативной поддержкой Wayland.

Отдельно стоит отметить интеграцию модуля подсветки синтаксиса tree-sitter как альтернативу встроенной системе font-lock. Парсеры tree-sitter вместо регулярных выражений используют более точную GLR-грамматику и подгружаются из нативных библиотек, не привязанных к редактору. Среди конкурентов, активно развивающих tree-sitter, стоит отметить NeoVim.

Другие изменения:

  • Интегрирован Language Server клиент Eglot.
  • Интегрирован популярный модуль use-package.
  • Для X задействован XInput 2 и улучшен drag-n-drop.
  • Добавлен модуль для работы с sqlite3.
  • Поддержка изображений в формате WebP.
  • Ускорена работа с очень длинными строками.
  • Плавная прокрутка при использовании тачпада.
  • Улучшена поддержка смайлов и Unicode 15.0.
  • Реализована двойная буферизация на Windows.
  • Множество мелких исправлений.

>>> Подробности

★★★★★

Проверено: maxcom ()
Последнее исправление: Virtuos86 (всего исправлений: 1)
Ответ на: комментарий от sena

Освоение особенностей каждого нового редактора

Atom, Brackets, Sublime Text, VSCode, внезапно в эту же цепочку Geany и Kate - да, у каждого есть свои особенности, но если поработать с одним из них, настройка и работа с остальными не требуют какой-то суровой перестройки привычек.

Борландси++

После Borland что VisualStudio, что CodeLite, что Code::Blocks не вызывают ощущения «офигеть, что с этим делать, всё не так как раньше!»

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

Никто не спорит на тему личного удобства. Речь о другом - о стремлении достаточно заметного количества емаксеров/вимеров выдавать своё личное удобство за объективное удобство-а-вы-просто-не-хотите-понять-что-вам-так-тоже-лучше.

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

Причём не просто «вам и не нужно» - те же самые(!) задачи, которые емаксер решает с помощью Emacs, кто-то может без проблем решать с помощью других инструментов. Сложно представить себе реальную задачу (исключаем рекурсию - т.е. задачу, связанную с самим Emacs), которая бы требовала для своего беспроблемного решения именно и исключительно Emacs :-)

Но да, сравнение с вышиванием крестиком годно: кто-то умеет и радуется, а кто-то не умеет и попытка научиться радости не вызвала, но это не значит, что те, кто не умеет и более того, в принципе не хочет вышивать крестиком суть ущербные, не способные к творчеству персоны.

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

Кто пытался в emacs написать что-то на pascal – знает, что плагин pascal-mode кривой до жути и подсветка ключевых слов на порядок хуже представленной в nvim.

tt
()
Ответ на: комментарий от IRASoldier

В этом треде таким поведением отличаются любители VS Code.

akho
()
Ответ на: комментарий от tt

в emacs написать что-то на pascal

Это разные древние цивилизации

akho
()
Ответ на: комментарий от IRASoldier

Ну естественно, что всё, что можно сделать посредством Emacs’а, можно сделать и без него. Однако это высказывание сколь же верно, столь же и бессмысленно, как и утверждение об эквивалентности всех полных по Тьюрингу языков. Emacs предоставляет мне удобную среду для решения связанных с текстом задач (а вам — не предоставляет).

это не значит, что те, кто не умеет и более того, в принципе не хочет вышивать крестиком суть ущербные, не способные к творчеству персоны.

Всё так.

P.S. Надеюсь вы не приходите на посвящённые вышивке ресурсы и не начинаете им доказывать, что вышивка — фигня и «все» давно перешли на шелкографию.

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

плагин pascal-mode кривой до жути

Качество пакетов поддержки языка в емаксе как показатель степени ненужности языка %)

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

Emacs предоставляет мне удобную среду для решения связанных с текстом задач

Это отличает современные инструменты от Emacs, пока древние редакторы работают с набором байтиков, современные инструменты работают со структурой кода.

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

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

P.S. Примером годной критики может быть, например, https://project-mage.org/elevator

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

Atom, Brackets, Sublime Text, VSCode

Atom появился совсем недавно, в 2014, но надо же было как-то и до него работать. И то, если я правильно понял, народ с него уже уходит.

да, у каждого есть свои особенности

Вот я про них и говорю. Зачем тратить на это время? Неужели тебе больше нечем заняться?

К тому же по-любому вим тоже нужно знать и уметь, хотя бы по-минимуму. Мне емакса и вим уже с головой хватает. Моему маленькому мозгу тяжело со всем эти многообразием разбираться.

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

Моему маленькому мозгу тяжело со всем эти многообразием разбираться

Под столетними сугробами ненужных наворотов
Тупящих вскодов и прожорливых джетбрейничей
Покинутых нетбинсов и давно забытых атомов

Вечная весна в одиночной камере…

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

Зачем тратить на это время?

Час-два - это время, по сравнению с годами использования? :-)

вим тоже нужно знать и уметь, хотя бы по-минимуму

Зачем? Уже давно, что в Ubuntu, что в Debian, что в Fedora в поставке по умолчанию есть nano - что позволяет внести правки в какие-то конфиги, когда не установлен DE.

Vim, очевидно, нужен тем, кто постоянно работает с Linux в голой консоли - но это ограниченный круг.

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

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

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

Час-два - это время, по сравнению с годами использования? :-)

Не знаю, что там за час-два, я пробовал и атом и вскоде, за два часа не освоил все особенности.

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

например как сделать автоимпорт классов в PHP

А как его вообще сделать? Вот пишу я например:

$a = new Service();

Какой магией оно должно узнать, что это за Service? Из какого неймспейса?

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

Какой магией оно должно узнать, что это за Service? Из какого неймспейса?

Импортируй всё подряд, пусть мясной мешок разбирается-way.

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

Посмотри как сделано в PhpStorm.

Пока ты пишешь «new S» или «new Service» тебе через автокомплит предлагает классы с похожим именем, в окне автодополнения показан namespace, при выборе класса будет автоимпорт. Если ты ничего не выберешь и просто напишешь new Service то Service будет подсвечен желтым, можно нажать Alt+Enter и будет опять автокомплит окно где показаны все классы Service из всех неймспейсов и можно нажать на нужный.

Выше по списку находятся более вероятные варианты для дополнения, не знаю что точно проверяет PhpStorm, но думаю как минимум близость по дереву namespace.

Так что обычно я просто набираю первые буквы класса и жму Enter что бы PhpStorm автодополнил класс и импортировал его. Ну или набираю часть namespace и первые буквы класса, тогда токен ShopSer PhpStorm заменит на \Some\Org\Shop\Service.

Это лишь 1% от всех удобств которые предоставляет PhpStorm, и которых в Emacs еще долго не будет, если вообще что то завезут.

Я знаю что ты пишешь в Emacs, неужели ты вводишь new Service, потом крутишь вверх, и пишешь полностью use \Some\Org\Shop\Service; ?

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

Согласен, я с Emacs разобрался, и был поражен насколько он убог.

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

вим тоже нужно знать и уметь, хотя бы по-минимуму

Зачем? Уже давно, что в Ubuntu, что в Debian, что в Fedora в поставке по умолчанию есть nano

Vim входит в минимальный джентельменский набор, ну там где-то вместе с sed, shell, grep, find и т.п.

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

неужели ты вводишь new Service, потом крутишь вверх, и пишешь полностью use \Some\Org\Shop\Service

В принципе да. Но во-первых, автокомплит также есть. Во-вторых если это не единственный use, который нужно добавить, то можно добавить сразу все. В-третьих, если хочется добавлять по одному, то можно поставить маркер и быстро переключаться между use и местом последнего редактирования. В-четвёртых вместо маркера можно быстро сделать сплит и быстро переключаться между окном с use и окном редактирования. Ну и в-пятых, именно в такой реализации как ты описал, я вообще не вижу проблемы так же сделать в emacs, за день можно это заскриптовать и отладить попивая кофеёк.

Вероятно никто так пока не сделал потому что первые 4 способа достаточно быстрые. Проще потратить дополнительно 3 секунды чтобы добавить use полуавтоматически, чем сутки писать скрипт. Всем лень.

Хотя, мне стало интересно, попробую таки запилить.

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

Во-вторых если это не единственный use, который нужно добавить, то можно добавить сразу все.

У меня блок use примерно из 7 строк состоит, мне было бы сложно запомнить, возможно как раз потому что я использую автокомплит. И наверное я сразу не смогу угадать что я именно буду использовать.

В-третьих, если хочется добавлять по одному, то можно поставить маркер и быстро переключаться между use и местом последнего редактирования.

Его нужно ставить самому, или уже есть какое то дополнение что бы быстро переключаться между частями файла M-x goto-use-marker?

Ну и в-пятых, именно в такой реализации как ты описал, я вообще не вижу проблемы так же сделать в emacs, за день можно это заскриптовать и отладить попивая кофеёк.

Не думаю что за день, но соглашусь, другое дело что это 1% от возможностей PhpStorm как я сказал. Почему не один день? По следующим причинам: Emacs уже выполняет индексирование? Будет ли эта функция специфична для php или для других языков тоже можно будет использовать?

Вероятно никто так пока не сделал потому что первые 4 способа достаточно быстрые.

Решил посчитать, примерно 3 дня на написание namespace выходит у меня для последнего проекта на 3 месяца с 450 файлами, с одной стороны не так уж и много, с другой стороны я бы отнес это больше к удобствам, не нужно вспоминать полный namespace, действуешь спинным мозгом.

Хорошо что ты это заметил, я думал что время экономии было намного больше, конечно если посчитать все возможности PhpStorm для меня там набежит возможно и месяц, но я думал что даже такая деталь очень важна.

Хотя, мне стало интересно, попробую таки запилить.

Как бы ты реализовал получение текущего namespace? Что бы не вставлять ненужный use, если сторонний класс находится в той же вложенности что и текущий?

MOPKOBKA ★★★★★
()
Последнее исправление: MOPKOBKA (всего исправлений: 4)
Ответ на: комментарий от no-such-file

Но во-первых, автокомплит также есть.

А ты все еще используешь auto-complete, или company? Он подгружает у тебя все файлы проекта, или действует в зависимости от контекста?

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

Значит ты просто привык к чему-то принципиально отличающемуся.

Так или иначе, твоё утверждение не соответствует реальности.

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

У олдфагов с их субкультурой - охотно верю.

По-моему ты преувеличиваешь. Я специально погуглил, что должен знать пользователь, программист о линуксе. Все книги о линуксе что я встречал, говорят о вим.

Единственное предназначение нано - для облегчения жизни авторам хаутушек, которым иначе пришлось бы объяснять как пользоваться вимом в каждом документе. Вим это всё ещё стандарт.

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

нужно ставить самому

Самому, но если лениво то можно через поиск.

Emacs уже выполняет индексирование

Всегда выполнял. Даже до появления этих ваших IDE.

Будет ли эта функция специфична для php или для других языков тоже можно будет использовать?

В других языках совершенно другие импорты. Но в целом, не вижу причин, почему нельзя это сделать в общем виде через хуки. Для каждого языка разумеется придётся делать свою обработку хуков.

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

Разве lsp-mode купно с company-mode не делает уже всё что нужно? или тут какие-то специфичные для php проблемы? Никогда не имел дела с этим языком, так что не в курсе.

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

Он подгружает у тебя все файлы проекта, или действует в зависимости от контекста

Это зависит от конкретного бэкэнда же. Щас lsp популярно, поэтому там комплит такой же как vscode. Но я лично предпочитаю дидовское индексирование всего проекта через gtags и т.п. Потому что когда в emacs открыто 100500 буферов lsp начинает тормозить. Не уверен кто здесь виноват, emacs который не может в асинхронность (но вроде бы уже может), или сам подход lsp который не предполагает что у пользователя в vscode будет открыто 100500 табов.

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

не делает уже всё что нужно

Я не пробовал для пыха, если честно. Последние 5 лет пишу на ноде, но насколько я знаю, такой фичи как автовставка use нет, ни в lsp ни в ac-php (которым я пользовался).

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

Все книги о линуксе что я встречал, говорят о вим

…что свидетельствует не о best practices, а о консерватизме и привычках авторов.

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

Ну, на вашей-то стороне вообще ничего кроме вкусощины нету.

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

…что свидетельствует не о best practices, а о консерватизме и привычках авторов.

Все авторы книг о ГНУ/Линукс консервативны и имеют плохие привычки? Только ты познал истину?

Вот, например, цитата из руководства для пользователей Дебиан:

https://www.debian.org/doc/manuals/debian-reference/ch01.en.html#_the_text_editor

You should become proficient in one of variants of Vim or Emacs programs which are popular in the Unix-like system.

I think getting used to Vim commands is the right thing to do, since Vi-editor is always there in the Linux/Unix world. (Actually, original vi or new nvi are programs you find everywhere. I chose Vim instead for newbie since it offers you help through F1 key while it is similar enough and more powerful.)

If you chose either Emacs or XEmacs instead as your choice of the editor, that is another good choice indeed, particularly for programming. Emacs has a plethora of other features as well, including functioning as a newsreader, directory editor, mail program, etc. When used for programming or editing shell scripts, it intelligently recognizes the format of what you are working on, and tries to provide assistance. Some people maintain that the only program they need on Linux is Emacs. Ten minutes learning Emacs now can save hours later. Having the GNU Emacs manual for reference when learning Emacs is highly recommended.

All these programs usually come with tutoring program for you to learn them by practice. Start Vim by typing "vim" and press F1-key. You should at least read the first 35 lines. Then do the online training course by moving cursor to "|tutor|" and pressing Ctrl-].

И так в любом букваре…

sena ★★
()
Последнее исправление: sena (всего исправлений: 1)
Ответ на: комментарий от no-such-file

Щас lsp популярно, поэтому там комплит такой же как vscode.

Это один из худших комплитов для PHP, даже не видел хуже, у PHP с lsp как то не задалось, самый неубогий из убогих это платный - https://intelephense.com/. Битрикс он распознать и дополнить вообще не в силах.

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

Всегда выполнял. Даже до появления этих ваших IDE.

А что именно его выполняет, gtags?

В других языках совершенно другие импорты.

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

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

Все авторы книг о ГНУ/Линукс консервативны и имеют плохие привычки? Только ты познал истину?

А это легко понять, вот например никто из таких авторов не говорит почему vim или emacs а не VSCode или micro, вот в твоем тексте есть «я думою что...», то есть никаких объективных причин для повсеместного изучения vim или emacs в 2к23 не наблюдается, значит приходим к выводу что авторы либо деды, либо ловят какой то приятный вайб от этих редакторов, и просто хотят показать его всем.

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

у PHP с lsp как то не задалось

У PHP и с языком программирования как-то не задалось.

Что говорить, убогонький недоязычок: фреймворки копируют с более удобной и популярной Java, аннотации попытались слизать оттуда же.

Type declarations слизали с Python, но в Python оно взлетело. Сравните чёткий комплит в Python и всю ту дрянь которую наплодили и неосилили для PHP.

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

У PHP и с языком программирования как-то не задалось.

Да вроде топовое лакомство.

Что говорить, убогонький недоязычок: фреймворки копируют с более удобной и популярной Java, аннотации попытались слизать оттуда же.

Честно говоря не наблюдаю ничего от Spring в Laravel. Spring это самый популярный веб-фреймворк в Java, верно? А Laravel самый популярный для PHP.

Type declarations слизали с Python, но в Python оно взлетело

А что значит взлетело? В Laravel вроде все помечено типами. Еще в PHP type hints действительно делают проверки, и генерики более удобные. И enum есть, несмотря на то что иногда нужно прибегать к phpdoc, мне это намного удобнее чем мучится с Python типами, а уж разобраться с вложенными классами с шаблонным параметром если их несколько в файле так вообще невозможно в этом вашем Python.

Сравните чёткий комплит в Python и всю ту дрянь которую наплодили и неосилили для PHP.

У меня Python очень плохо комплитит, только если авторы библиотеки постарались, а PhpStorm прям очень хорошо отображает типы в коде без typehint и phpdoc.

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

Если взять для сравнения другой тип лакомств, такой как WordPress, PhpMyAdmin, Bitrix, NextCloud, то я аналогов на Java вообще не знаю.

Что я возьму если мне нужно сделать простой сайт? Для себя, ну например заметки что бы говорить о чем то конкретном. Я возьму PHP, можно в 60 строк выполнить все запросы, сделать шаблон, и все это в одном файле, не выходя из редактора хостинга 30 рублей/месяц.

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

Да вроде топовое лакомство.

Если взять для сравнения другой тип лакомств, такой как WordPress, PhpMyAdmin, Bitrix

https://memepedia.ru/wp-content/uploads/2019/08/vinni-puh-est-govno.jpg

Честно говоря не наблюдаю ничего от Spring в Laravel. Spring это самый популярный веб-фреймворк в Java, верно? А Laravel самый популярный для PHP.

https://en.wikipedia.org/wiki/Symfony#Technical

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

Так это Symfony, я его даже не видел никогда. Ты по одному фреймворку хочешь доказать что PHP это каргокульт на Java? Что кстати отсюда своровано из Java? https://www.php.net/releases/8.2/ru.php

Забавно кстати что ?object и object это разные типы, в отличие от Java.

По поводу WordPress, PhpMyAdmin, Bitrix, альтернатив тупо нету, если это такой мусор, то где же замена на Java или другом крутом языке?

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

Всё ж банально. Книга — по определению есть вещь долговременного пользования. У меня под рукой «Записки охотника» 1920-го года издания. Книга чуть поистрепалась и страницы пожелтели, в остальном как новая, хотя ей и больше ста лет уже. И даже для технической литературы предполагается, что через несколько лет она не устареет (а иначе зачем бумагу портить?). Так что логично писать об emacs’е и vim’е, bash’е, ядре и других базовых вещах. А описывать очередной блокнот на электроне и внешний вид гнома последней версии — напротив бессмысленно. Информация устареет быстрее чем книга покинет типографию.

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

Книга это вещь почти бесполезная в 2к23, уже давно можно сделать интерактивный сайт, не знаю что за записки охотника, но в современном вебе уже можно 3д модель любой птицы покрутить что бы точно ее узнать при встрече.

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

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

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

«Грамотный», какое дедовское слово, прям представляю себе берестяную грамотку в крестьянской школе! Еще немного, и уметь читать будет не обязательно, через гугл ленс чатжпт не только прочтет, но и объяснит кратко смысл любой книжки над которой деды сидели пару дней что бы ее прочесть.

Пока что кое как писать-читать обязательно, к сожалению, но книги уже можно не читать, ну а vim устарел еще до моего рождения.

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

Я ничего не решаю, просто описываю действительность.

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

что именно его выполняет, gtags?

Опять же, зависит от бэкэнда. Я когда использовал ac-php там свой был индексатор, с поддержкой инкрементного индексирования. Работал заметно лучше и быстрее lsp для пыха, да.

Родной индексатор в emacs это etags, если что. Я им никогда не пользовался в виду наличия альтернатив. Ещё есть такой semantic-mode основанный на нормальных парсерах грамматики. Ну и собственно tree-sitter который одна из фич релиза.

логика должна быть довольно общая, есть абстрактные модули

В языках-то конкретные модули. Тупо разные слова и синтаксис используются. Это никак магически не появится, нужно для каждого языка конкретику ручками прописывать.

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)
Ответ на: комментарий от MOPKOBKA

вот в твоем тексте есть «я думою что…»

Автор не уверен, что именно лучше, вим или емакс, оба в принципе хороши, поэтому и «я думаю что…».

А императив в первом предложении, там же и обоснование.

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