LINUX.ORG.RU

Emacs 31.1

 ,


0

4

В этом выпуске детище RMS порадовало нас следующим:

  • поддержка управления мышью в терминале (хотя по мнению автора новости, лучше терминал запускать в Emacs, а не наоборот);
  • изменение порядка загрузки конфигурации: теперь сначала site-start.el потом early-init.el;
  • обновление Org до версии 9.8;
  • обновление стандарта Unicode до версии 17;
  • поддержка su-rs и sudo-rs в Tramp;
  • огромное множество изменений и улучшений во встроенных пакетах, языке Emacs Lisp и доступных режимах.

Для тех кто пока не в курсе, Emacs это программная реализация LISP-машины (диалект Emacs Lisp) с поддержкой нативной компиляции на лету и невероятный разнообразием модулей и пакетов, на ней реализованных (клиента ЛОР пока нет :) - в том числе и один из лучших текстовых редакторов.

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

>>> подробнее

★★★☆☆

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

Все хорошо, но визуально не видно, что что-то отработало.

Ну так добавь в конце (message "Copied").

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

собираться должно в таком-то и таком-то IDE

То есть, если вместо нажатия на кнопочку «Собрать» в моей (не)любимой Visual Studio я напишу, например, dotnet build -c Release, то мне сразу битой по лицу?

verdammter_katze
()
Ответ на: комментарий от mister_VA

У них есть «клапаны»: в c++ можно писать не парясь, мешать Цэ с плюсами, а питон всё равно в большинстве случаев используется как клей между Цэ (и другими) модулями.

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

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

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

Обычно в конторах нет драконовских бессмысленных стандартов.

Если вы у себя что-то там на локалхосте запускаете - ваше дело.

Но если вы опубликовали код библиотеки (внутри проекта с кучей разрабов, ну, например, драйвер GDMA какой-нибудь пишите дженерик, в конторе, которая делает SetTop Box\спутниковую приставку\и т.п.) и к ней - РИДМИ, что собирается оно, ребята, не так, как у вас, надо то скачать, то поправить а потом cmake запустить - то да, получить можно.

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

если вы опубликовали код библиотеки … и к ней - РИДМИ,

Это какой-то позор.jpg В приличных местах пишут не РИДМИ, а github workflow или ещё какой CI/CD pipeline, после чего сборка осуществляется так: код приняли в мастер веткусборка автоматом опубликовалась в хранилище артефактов. Если у вас сборка привязана к IDE и шаг вправо, шаг влево — всё ломается, то, в общем, всё печально и становится понятно, отчего вы такие унылые ребята.

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

не выходит каменный цветок

Потому что задача переписать весь объём кода даже с помощью ИИ выглядит чудовищной. Вот если добавить поддержку elisp к какому-то приличному окружению (Guile, ага) и потом не спеша переписывать по кусочку на нативный диалект, тогда вполне может и взлететь.

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

Это всё интересно, но неужели кто-то видел живых офисных разрабов с емаксом вместо IDE? Не верю! Сам писал код всегда в виме как поехавший, но IDE юзал параллельно для всяких рефакторингов и прочей ереси, в том числе и для сборки. Вас почитаешь, так будто бы вместо кодеров везде одни девопсы сидят.

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

писал код всегда в виме как поехавший, но IDE юзал параллельно для всяких рефакторингов

Это как раз ожидаемо - из вима IDE не сделать сколько с убогим вимскриптом не упарывайся. Но у Emacs-то такой проблемы нет - там любые варианты рефакторинга вплоть до LLM давно прикручены: бери и пользуйся.

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

У elisp’а и guile кроме скобок довольно мало общего. К тому же грань, где кончается elisp и начинается emacs не такая уж и чёткая. Поэтому может и взлетит guile-emacs когда-нибудь, но этот проект всё тянется и тянется, а конца всё нет.

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

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

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

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

Так с появлением Language Server Protocol такой проблемы больше нет. Нужный lsp-server подключил (100% уверен в vim’е это можно) и вперёд.

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

> Не верю!

Ну если прям так категорично не верите, то я вот пока был в озоне видел канал с пользователями vim/neovim. Если мне не изменяет память, 200 человек было в канале. Причём обсуждались там по большей части программерские проблемы (LSP, навигация по проекту, рефакторинг).

Канал про emacs тоже был, но уже пустой и только ~10 участников.

Вообще, vim/emacs — это можно сказать мейнстрим. Эти редакторы всё время дорабатываются под современные технологии. Тот факт, что первый релиз был десятилетия назад, не особо важен.

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

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

Абсолютно согласен. Только почему-то я по этой причине выкинул vi на помойку после n-летнего использования и уже года три не чувствую потери, используя текстовый редактор со всего-лишь 5 сочетаниями клавиш.

«Мышь (просто, но неэффективно) против клавиатуры (сложно, но эффективно)» — ложная дихотомия.

(Всю жизнь работаю программистом.)

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

Я уже в шоке. Я делал под 30-й, на 31-м нифига не работает. Пора передохнуть и заняться делами и нормальными хобби.

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

Нужный lsp-server подключил (100% уверен в vim’е это можно) и вперёд

И легким движением руки вим превращается в жирно-IDE. Лучше уж оригинальный vscode юзать, чем этот их CoС (лол) с нодой. Попытки слепить из вима IDE всегда смотрелись очень жалко. Там не смогли даже такую ерунду как сниппеты или автозакрытие скобок сделать нормально. Плагины в виме это как правило ад и израиль, буквально пара человек в мире умеет их писать. В неовиме наверно получше, но я скорее на емакс перейду, чем стану ковырять lua-портянки.

bread
()
Ответ на: комментарий от kaldeon

Если мне не изменяет память, 200 человек было в канале. Причём обсуждались там по большей части программерские проблемы (LSP, навигация по проекту, рефакторинг).

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

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

… всё хотят перевести на какой-нибудь приличный лисп…

Common Lisp — это приличный Lisp или нет? А то тут пишут:

P.S. кстати, самый классный факт про Reddit – это то, что его сначала написали на Common Lisp, тот тормозил как героиновый наркоман с синдромом Дауна, после чего его переделали на питон для скорости.

Mischutka ★★★★★
()

I have officially retired from Emacs:

This past Tuesday I typed C-x C-c in Emacs for the last time after 20 years of daily use. Though nearly half that time was gradually retiring it, switching to modal editing, then to Vim. Emacs is a platform, and I’d grown accustomed to its applications, especially those I built myself. There was no particular hurry, so replacements came slowly. With my newly-acquired superpowers I could knock out the last two pieces in a few days’ work, namely M-x calc with stackcalc and Elfeed with Elfeed2. I’m especially excited about the latter because it already exceeds the original. Both are multi-platform, native C++ GUI applications using native UI components.

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

Common Lisp — это приличный Lisp или нет?

Зависит от того, спрашивают у лиспера или схемера.

А то тут пишут:

На заборе тоже пишут. Проверял — нету

➜  lor time ./test-lisp
39
./test-lisp  0.26s user 0.01s system 99% cpu 0.269 total
➜  lor time ./test.py
answer:  39
./test.py  5.11s user 0.02s system 99% cpu 5.150 total
➜  lor cat test.lisp
(declaim (ftype (function () fixnum) test))
(defun test ()
  (declare (optimize (speed 3) (debug 0) (safety 0)))
  (let ((r 0))
    (dotimes (i 10000 r)
      (dotimes (j 10000 r)
        (setq r
              (the fixnum
                   (mod (+ r (mod (* i j) 100)) 47)))))
    (format "~d~%" r)
    (sb-ext:quit)))
➜  lor cat test.py
#!/usr/bin/env python3

def test():
    r = 0
    for i in range(0, 10000):
        for j in range(0, 10000):
            r = (r + (i * j) % 100) % 47
    return r
r = test()
print("answer: ", r)
ugoday ★★★★★
()
Ответ на: комментарий от ugoday

Ну, vim пускай вимеры защищают.

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

bread
()
Ответ на: комментарий от Mischutka

Алё, я там для кого тест выложил? Ваш питон в 20 (двадцать) раз тормознее лиспа. Можете менять эмблему языка со змеюки на слоупока.

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

Но многих пугает лисп, и меня тоже.

Чем же? Вопрос без подвоха, просто я к нему привык может, но: а) CL — самый мощный язык из всех динамически типизированных языков со сборкой мусора (со статикой c ручным управлением его сравнивать бессмысленно, у них сильно разная область применения и б) elisp в той части, которая нужна для конфигурации emacs’а нужно знать в объёме — вместо x = y пиши (setq x y), поздравляю, ты великолепен.

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

Да вот же: mod (+ r (mod (* i j) 100)) 47))))). Как это читать то? Понятно, что компилятору удобно, но мне как-то не по себе от такого.

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

Как это читать то?

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

Понятно, что компилятору удобно,

Макропроцессору. Лисп именно такой, чтобы было удобно его расширять defmacro’ми. И, в общем, кроме лиспа нормальных макр нигде и нету. Вот, чтобы далеко не ходить, (setq r (mod (+ r (mod (* i j) 100)) 47)) действительно читается хуже, нежели r = (r + (i * j) % 100) % 47. А теперь попробуйте, например, добавить в питон именованные лямбды (предположим, их там нет, я питон давно забыл, если что).

P.S. А макросы это не праздная штука. Lisp потому и быстрее питона в двадцать раз, что

(dotimes (i 10000 r)
      (dotimes (j 10000)
	(setq r
	      (mod (+ r (mod (* i j) 100)) 47))))

Раскрывается в примерно такой код

(let ((i -1) (j -1) (r 0))
    (tagbody
     loop-i
       (incf i)
       (when (>= i 10000) (go out))
       (setq j -1)
     loop-j
       (incf j)
       (when (>= j 10000) (go out))
       (setq r
	     (mod (+ r (mod (the int22 (* i j)) 100)) 47))
       (if (< j 9999) (go loop-j)
	   (go loop-i))
     out)
    r)

где (go <метка>) это то самое goto, которое консидеред хармфул, но отлично ложится на нутрянку процессора.

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

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

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

Но вникать в код на нём не хочется.

Дед, прими уже таблетки - мы во второй четверти 21 века живём. Задача «любой плагин быстро подправить» решается запросом к ИИ, нет нужды никуда вникать - тесты после правки прогнал, непонятные места объяснить попросил и вперёд, делом заниматься.

zabbal ★★★☆☆
() автор топика
Ответ на: комментарий от bread

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

(defun test7 ()
  (let ((r 0))
    (dotimes (i 10000 r)
      (dotimes (j 10000)
	(setq r
	      ($
		 (r + (i * j) mod 100) mod 47)))))) ;; ←←←

но они особо не востребованы, потому что после небольшой практики это просто не нужно.

А так — хозяин-барин. Если что-то не нравится, то есть множество других занятий в жизни помимо возни с нелюбимыми ЯП.

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

В виме я могу любой плагин быстро подправить

нет, и не важно на каком языке он будет написан

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

Поскольку это лисп-машина, то происходить внутре может что угодно. Чего гадать, нужно включать конфиг по частям и смотреть от какой вдруг процессор нагревается.

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

Emacs. Итоги.

Emacs он такой. Проблема решается одной директивой по большому счёту.

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

На самом деле конкретно арифметические выражение проще и понятнее выглядят в инфиксной записи.

Смотря какие. Мне гораздо проще читать

(*
  (+ a b c)
  (- d e f)
  (+ g h))

чем

(a + b + c) *
  (d - e -f) * 
  (g + h)

(setq r (mod (+ r (mod (* i j) 100)) 47))

Отлично читается в виде

(setq r 
      (mod (+ r 
              (mod (* i j) 100)) 
           47))

Инфиксная запись привычнее (и потому удобнее) для простых однострочных выражений.

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

Синтетический тест. Проблема в том, что реальные программы приходится писать с существующими библиотеками. И сравнивать приходится не микроизмерение арифметики, а Flask с Hunchentoot и flexi-streams с open(... encoding='utf-8').

Я видел даже как программу переписали с Си++ на 1С и она стала в несколько раз быстрее работать. Потому что исходная была написана неоптимально (слишком много ООП и слишком мало понимания алгоритма). Так что в то, что на реддит не нашлось нормального лиспера, зато нашёлся хороший питонист вполне верю.

monk ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.