LINUX.ORG.RU
ФорумTalks

Жизнь после Emacs

 , , , ,


2

3

Краткое содержание предыдущих серий: 12 лет на Emacs.

Нынешняя ситуация: использовал Emacs для работы со Scala (через lsp-сервер Metals). Проблема известная - подвисание UI. Большую часть lsp-ui я уже отключил, стало возможно как-то работать, но все же буквы появляются из-под клавиш весьма не спеша… Частично решается только апгрейдом железа.

Есть попытки как-то решить проблему - прикрутить Webrender использующий GPU, но пока в очень экспериментальном виде:

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

Сразу ремарка по поводу Neovim: насколько я понял, реактивный UI они сделали, но я не люблю режимы. Идея повесить все хоткеи на один режим и расширять редактор в Lua была, но насколько это будет натурально: использование Vim-а без режимов?

Light Table, насколько я понял, более-менее заброшен. Впрочем, с их подходом Data-driven configuration, они могли использовать для конфигурации условный FortranJS вместо ClojureScript (надеюсь, понятно почему :)).

Собственно к VSCode. В продолжении тем:

Вот, например, по первой ссылке автор испытывает только положительные чувства от смены Emacs на VSCode. У меня это такого дикого и безоговорочного энтузиазма не вызывает.

Да, конечно, проблемы рендеринга UI там нет как класса. V8 js engine сам по себе демонстрирует шикарную производительность, уже только он шустрее движка Elisp, UI в своем потоке, а главное он наконец-то рендерится GPU, а не CPU. Ок, замечательно, я переместился в будущее: из середины 70-х в наши дни.

Но проблема в том, что в нем нет… Emacs, нет REPL (и я сейчас не про этакую интерактивную командную строку говорю, а про то, что в Emacs все есть REPL - встаешь курсором (точкой) на любом куске кода, выполняешь его, получаешь результат и мгновенно меняешь поведение редактора). И нет s-выражений.

Взять конфигурацию. Вот я редактирую свою тему. Что-то поменял. В Emacs я просто исполняю файл с темой и все - все изменения мгновенно отображаются. Тут у нас что: https://stackoverflow.com/questions/44390765/vscode-how-to-reload-theme-after-editing-its-style Нужно перезагружать редактор? Да ладно? Вообще-то после Reload Window lsp-server тоже перезапускается, ага заново частично компилирует, индексирует.

Далее, хочу M-x function-name. Ну казалось бы, в VSCode такое точно есть. А вот и нет. Хочешь вызвать функцию - назначь ей или алиас или кейбиндинг: https://stackoverflow.com/questions/58382100/triggering-commands-by-their-command-id-or-a-custom-string-alias

Теперь что до файла конфига. Да, изменения в конфиге подхватываются на лету, но для случая симлинков (вот хочется мне конфигурацию в одном месте держать) это работает только если открыт симлинк, а не файл, а не на который он ссылается, а значит гитовый плагин не видит диффа. Ну ладно, допустим. А если у тебя открыто несколько… фреймов, хорошо, окон редактора, например для случая 2-х мониторов, то нужно в каждом открывать конфиг, типа «изменять» его и сохранять, чтобы изменения подхватились. Ну ладно, хоть что-то. Аналогично с темой.

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

К слову, пример плагина на ClojureScript внушает некоторый оптимизм на тему дальнейших возможностей расширений и кастомизаций «как в Emacs»: https://github.com/Saikyun/cljs-vscode-extension-hello-world Правда, насколько я понимаю, ClojureScript по-прежнему не может обойтись без Java, т.к. компиляция макросов происходит в JVM. Проект Lumo выглядит заброшенным. Альтернативы есть?

Вообще, я не сильно люблю статическое созерцание кода. Гораздо удобнее, когда код можно изменять на лету, вылепливая из него что-то как из пластилина и тут же получая результат. И речь не только о собственно конфигурации Emacs. На самом деле, в Emacs, я мог, например, в текстовом выхлопе какого-то генератора вертикально выделить столбик, скопировать его, поставить вверху и внизу скобочку, нажать C-x C-e и получить сумму:

(+ 23,32
-7,04
135,7
-15,22
8) => 144,76

Все. Никуда не выходя из Emacs. В VSCode что? Есть некий плагин eval. Судя по времени выполнения, он запускает nodejs всякий раз. Словом, к возможности тут же вычислить любой объект как код на Elisp привыкаешь очень сильно.

Смотрим на расширения. О культуре разработки, сложившейся в Emacs комьюнити я ужи писал на лоре, но на этот вопрос по прежнему не обращают внимания. Пакет Emacs для того попасть с MELPA проходит код ревью. В итоге, мы имеем докстринги к большинству функций, подробные readme. Да и даже без код ревью люди просто привыкли так писать, это уже стало хорошей традицией. Что в VSCode? Даже у некоторых более-менее популярных пакетов нет ни одного комментария, ни одной докстроки к функции в исходном коде. В менее популярныйх пакетах - спасибо, если есть readame, а от бывает и его нет.

P.S. Пока складывается впечатление, что я снял свой старенький экзоскелет и взял вместо него каменный топор. Да, экзоскелет был старенький, ржавый, и краска облезла, и скрипел весь, и гидравлика протекала, и проводка искрила и коротила, местами была обильно замотана изолентой, некоторые болты были жевачкой прилеплены, чтобы не отвалились и потерялись, некоторые вообще приварены. Там что-то приходилось периодически чинить, подкручивать, приклеивать ;). Но в нем можно было и дом перепрыгнуть и машину поднять и нашествие пришельцев, при необходимости, остановить. А каменный топор, да из обсидиана, да со стразиками, да с удобной сенсорной панелью на рукоятке, да с авианосцем в комплекте, но все же не то. Вот теперь сижу и думаю как его доработать напильником до звездолета.

P.P.S. Да, я понимаю, что весь мир не обязан быть Emacs-ом, но ведь люди уже переходили из Emacs и не вчера, наверняка эти проблемы уже как-то решились. Какие-то сушествуют решения, рекоммендации, комьюнити?

P.P.P.S Вот так и представляю себе группу психологической поддержки, тех кто ушел из Emacs. Захожу в комнату, там в форме круга расставлены стулья, на них сидят такие же бывшие емаксеры. Я говорю: «Привет, меня зовут Костя и я перестал пользоваться Emacs.» и все такие: «Привет, Костя». :))))))))



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

либо нормальный UI/UX

Ну когда-нибудь все равно его завезут в Emacs. Пока проблему можно аппаратно митигировать за счет более нового CPU.

vim workflow

Это что такое? Кейбиндинги? Все перевесить можно, если платформа позволяет гибко себя настраивать. В VSCode привычные, скажем C-x 3, C-x 1 не повесишь, т.к. оно ломает copy-paste.

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

Ну когда-нибудь все равно его завезут в Emacs.

Не уверен. Для этого надо половину емакса переписать.

Пока проблему можно аппаратно митигировать за счет более нового CPU.

$ cat /proc/cpuinfo|grep name|uniq
model name      : AMD Ryzen Threadripper 3970X 32-Core Processor

Удачи лол! У меня что-то не получилось.

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

P.S. Пока складывается впечатление, что я снял свой старенький экзоскелет и взял вместо него каменный топор.

прям в точку

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

Я что в emacs, что в vscode использую хоткеи и команды из vim. С Emacs такое не прокатывает, ибо елишп.

Помимо того, что в этой фразе нет никакой логики, evil-mode в eмаксе на голову выше кривеньких вим-модов в VSCode.

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

У меня что-то не получилось.

Ну я же вижу разницу. У меня 2-х ядерный i3 (с программной эмуляцией до 4-х ядер), купленный в конце 2010-го.

Если я беру просто рабочий офисный ноут образца 2017-го (не помню какой там CPU) - то проблемы нет.

Так что на i7/i9 Emacs с моим конфигом ожидаемо будет летать.

Kostafey
() автор топика
Ответ на: комментарий от ptarh

Возможно. Но какой смысл куче хоткеев из evil-mode, когда весь редактор периодически встаёт колом?

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

Если я беру просто рабочий офисный ноут образца 2017-го (не помню какой там CPU) - то проблемы нет.

С твоим workflow, возможно. У меня вот не прокатило, потому что проблема была не столько в производительности, сколько в периодических зависаниях.

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

советую попробовать helm-rg, кстати – ощутимо быстрее работает

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

Итого: 3 дня экспериментов с VSCode, вернулся на Emacs.

Мы рады что ты снова с нами, Костя )))))

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

А Atom так толком и не пробовали?

Пробовал, но давно, в 2016. Ссылку в топике привел. Если интересно могу нарыть коммент в котором подробно рассказал чем там дело закончилось. Но где-то год или около того назад мне на лоре яростно доказывали, что я вообще ничего не понимаю, Atom за это время сильно улучшили, не говоря уже про VSCode.

Kostafey
() автор топика
Ответ на: комментарий от alienclaster

Это проц 2010 года и 768 мб памяти? Жоска.

Не-не :), памяти 8Гб. Ее докупал. Впрочем, и ее впритык. А вот проц - да, старенький.

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

Ну тогда имеет смысл потыкать ещё раз. Он всё-таки внутре менее прибит гвоздями, чем VS Code. Отчего и тормозит, как и Emacs.

mertvoprog
()
29 марта 2021 г.

Очень странные здесь программисты собрались

Сомнительные. LSP это не Emacs а стандарт протокола для IDE от Microsoft. Серверы парсинга языков по определению сторонние. В Emacs либа на Elisp для поддержки протокола, работает отлично.

Также в Emacs лучшая среди всех IDE установка расширений по сети, с простым интерфейсом пользования.

tp_for_my_bunghole
()
Ответ на: Очень странные здесь программисты собрались от tp_for_my_bunghole

Но оно и понятно, VSCode...

Искал альтернативы Emacs много раз с какой-то регулярностью за годы. Их нет.

Но помню что освоение давно в начале давалось страданиями из-за FUD(fear, uncertainty, doubt). И формирование новых цепочек нейронов в мозгу иногда может проявляться в виде психологических страданий, особенно если есть сопутствующие несвязанные факторы(напряг с работой, или социальное). Потом возвращаясь во время освоения понимаешь что Emacs это непревзойдённый пока инструмент в своей(своих) областях. IDE. Это осознание приходит не один раз окончательно, оно ступенчато, каждый год может происходить, кому как. Особенно когда регулярно пытаешься пользоваться другими IDE.

tp_for_my_bunghole
()
Ответ на: Но оно и понятно, VSCode... от tp_for_my_bunghole

Единственная проблема с Emacs была, перегрузка левого мизинца. Просто надо изменить левый ALT возле пробела на CTRL для большого пальца, а CAPS LOCK на ALT для мизинца. Из-за удобства этого решения не получается уже освоить VIM дополнительно. Как будто сдерживает что-то, переключение режимов.

tp_for_my_bunghole
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.