LINUX.ORG.RU

Если вы пробовали вкатиться в GNU Emacs, расскажите, что пошло не так

 


3

5

Всем привет!

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

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

org babel blocks

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

Как я погляжу, такое редактирование внешними скриптами уже в каком-то виде возможно — с помощью shell-command-on-region (M-|). Выделяем редактируемый регион (или весь буфер), запускаем эту команду с префиксным аргументом (чтобы результаты вызова скрипта перезаписали исходный текст), набираем название скрипта — вуаля, наш текст отредактирован внешним скриптом на произвольном языке: C-x h C-u M-| <script-name> RET.

Юзабилити, конечно, так себе, но это ведь дело поправимое.

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

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

Можно ведь обернуть выполнение внешней команды в лисповую функцию (например, edit-with-external-command), которая всё это сможет.

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

А у нас ведь ещё есть emacs-server, к которому теоретически можно прицепиться скриптом.

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

Сам думал о какой-то такой схеме, да. Но тут мы относительно Acme, как альтернативщики относительно emacs’а. У одних все есть, готово и отлажено. У других «есть гора костылей, в принципе всё можно сделать (через жопу)».

Но, вот, делать всё равно надо. Потому как «функция прокладка + протокол + внешний процесс (в контейнере)» позволят радикально усилить безопасность относительно малой кровью. А это важно.

ugoday ★★★★★
()

Первоначально GNU Emacs был крут, но на условно моей машине были единицы мегабайт RAM. И nvi для редактирования мне было более чем достаточно.

В начале тысячелетия уже в каждой виртуальной машине могли быть сотни МБ, и отказываться от Емакса не было причин. Но стало слишком затягивать баловство с elisp и прочие хакерские развлечения. И я это прервал.

vM ★★★
()

Все-таки хотелось бы заслушать начальника транспортного цеха главного специалиста (я без лишней иронии) по lisp @lovesan.

Ygor ★★★★★
()

Сам по себе emacs мне нравится больше, чем nvim. Но с плагинами ситуация куда печальнее.

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

Убогий интерфейс «из коробки».

Любопытно, а в чем это выражается? © «ДМБ»

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

Отсутствуют.

ERC was officially incorporated into Emacs release 22.1 on June 3, 2007.[11] ERC development now takes place inside the Emacs source-code tree.

tiinn ★★★★★
()

У меня Emacs для Org mode и RSS. Твою книгу читал, понравилось, для новичков самое то. Конфиг по ней делал. Сейчас для каких-либо настроек просто пишу промпт в нейронку.

lukman
()
9 декабря 2025 г.

Попытка установить emacs в Astra Linux 1.8:

Чтение списков пакетов… Готово
Построение дерева зависимостей… Готово
Чтение информации о состоянии… Готово         
Некоторые пакеты не могут быть установлены. Возможно, то, что вы просите,
неосуществимо, или же вы используете нестабильную версию дистрибутива, где
запрошенные вами пакеты ещё не созданы или были удалены из Incoming.
Следующая информация, возможно, вам поможет:

Следующие пакеты имеют неудовлетворённые зависимости:
 emacs : Зависит: emacs-gtk (>= 1:27.1) но он не может быть установлен или
                         emacs-lucid (>= 1:27.1) но он не может быть установлен или
                         emacs-nox (>= 1:27.1) но он не может быть установлен
E: Невозможно исправить ошибки: у вас зафиксированы сломанные пакеты. 
Mischutka ★★★★★
()
Ответ на: комментарий от Mischutka
  1. Подключите все необходимые репозитории, т. е. /etc/apt/sources.list должен выглядеть так:

    deb https://dl.astralinux.ru/astra/stable/1.8_x86-64/repository-main/     1.8_x86-64 main contrib non-free non-free-firmware
    deb https://dl.astralinux.ru/astra/stable/1.8_x86-64/repository-extended/ 1.8_x86-64 main contrib non-free non-free-firmware
    
  2. Обновите список пакетов и попробуйте снова.

В режиме защищённой программной среды Emacs работать не будет: он некоторые свои пакеты компилирует в ELF-файлы, а подписи у них не было, нет и не будет.

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

В режиме защищённой программной среды Emacs работать не будет: он некоторые свои пакеты компилирует в ELF-файлы, а подписи у них не было, нет и не будет.

Я систему установил с минимально возможной защищённостью — уровня Orel.

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

Тогда рекурсивно: apt install emacs-nox и смотреть на что ругается.

ugoday ★★★★★
()

Если вы пробовали вкатиться в GNU Emacs, расскажите, что пошло не так

Слишком легко выйти.

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

Нет. Это встроенные пакеты. Однако, можно просто их не использовать, никто ведь не заставляет.

Не хочется держать в системе неиспользуемые пакеты.

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

Сначала устанавливаем ненужное, потом удаляем…

Что-то многовато действий для установки текстового редактора.

Mischutka ★★★★★
()

К сожаления, я оказывается отношусь к виду десятипалых. Не хватило конечностей.

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

Пальцы на ногах задействовать не пытались?

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

Текст как набирать, а то от нажатия клавиш с буквами заставка не исчезает и набор текста не происходит?

Или в emacs нельзя сразу начать набирать текст, сначала нужно текстовый файл создать?

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

сначала нужно текстовый файл создать?

Текст можно набирать в буферах, обычно ассоциированных с файлами.

Т.е. либо C-x C-f, чтобы открыть/создать файл, либо, например, C-x b *scratch*, чтоб открыть специальный нефайловый буфер.

Но начать рекомендую с C-h t — познакомит с основными концепциями и командами.

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

Что-то больно мудрёно. А нельзя настроить emacs таким образом, чтобы сразу после запуска данного редактора можно было приступить к набору/вставке текста, а потом, если возникнет такая необходимость, сохранять его в файле?

Mischutka ★★★★★
()

Не прошёл уровень с психиатром.

alt-tab-let ★★
()
Ответ на: комментарий от Mischutka

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

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

Впиши себе в init.el что-то вроде

(setq-default inhibit-startup-screen t)
(setq inhibit-splash-screen t)
(setq inhibit-startup-message t)
(setq initial-scratch-message "")

Будет сразу открываться пустой файл

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

Вот еще можно вписать

(setq initial-major-mode 'fundamental-mode)

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

masa ★★★
()

и что пошло не так

Мне нравится окружение, но у меня начинают неметь пальцы рук левой руки. Это останавливало мои попытки пересесть на него.

Еще я с годами отошел, постепенно, от модели крупной заточки интерфейсов и утилит под себя - почти все мои настройки везде стандартные. Это на продуктивность никак не влияет для меня.

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

Ошибся наверно где-то, видно что настройки не применились

Попробуй написать M-: user-init-file (M-: значит Alt + Shift + ;), оно напишет откуда загрузило конфиг

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

Не слушай их. setq анахронизм из 90-х, нормальные пацаны используют setopt или customize-set-variables.

Посмотри как тут всё устроено, большинство вопросов сразу отвалится: https://github.com/emacs-ru/emacs-from-scratch

dunmaksim
() автор топика
Ответ на: комментарий от dunmaksim
Warning (initialization): An error occurred while loading ‘/home/admin01/.emacs.d/init.el’:

Symbol's function definition is void: setopt

To ensure normal operation, you should investigate and remove the
cause of the error in your initialization file.  Start Emacs with
the ‘--debug-init’ option to view a complete error backtrace. Disable showing Disable logging.
emacs --debug-init
Debugger entered--Lisp error: (void-function setopt)
  (setopt custom-file (expand-file-name (convert-standard-filename "custom.el") user-emacs-directory))
  load-with-code-conversion("/home/admin01/.emacs.d/init.el" "/home/admin01/.emacs.d/init.el" t t)
  load("/home/admin01/.emacs.d/init" noerror nomessage)
  startup--load-user-init-file(#f(compiled-function () #<bytecode 0x17cce6c2f9bf91ce>) #f(compiled-function () #<bytecode -0x1f3c686ddc0cdc35>) t)
  command-line()
  normal-top-level()
Mischutka ★★★★★
()
Ответ на: комментарий от Mischutka

при запуске

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

Вписал в ~/.emacs,

Для удобства тестирования, проще перейти в диалоговый режим elisp’а с помощью M-x ielm и там уж вводить предполагаемые команды, устанавливать переменные и т.п.

Другой вариан, открыть .emacs (или что вы там используете. В моём случае, ~/.emacs.d/init.el) и там вычислять выражения с помощью C-x C-e eval-last-sexp.

ugoday ★★★★★
()
Ответ на: комментарий от dunmaksim
Warning (initialization): An error occurred while loading ‘/home/admin01/.emacs.d/init.el’:

Symbol's function definition is void: customize-set-variables

To ensure normal operation, you should investigate and remove the
cause of the error in your initialization file.  Start Emacs with
the ‘--debug-init’ option to view a complete error backtrace. Disable showing Disable logging
emacs --debug-init
Debugger entered--Lisp error: (void-function customize-set-variables)
  (customize-set-variables custom-file (expand-file-name (convert-standard-filename "custom.el") user-emacs-directory))
  load-with-code-conversion("/home/admin01/.emacs.d/init.el" "/home/admin01/.emacs.d/init.el" t t)
  load("/home/admin01/.emacs.d/init" noerror nomessage)
  startup--load-user-init-file(#f(compiled-function () #<bytecode 0x6cd69dd4451c9cd>) #f(compiled-function () #<bytecode -0x1f3c686ddc0cdc35>) t)
  command-line()
  normal-top-level()
Mischutka ★★★★★
()
Ответ на: комментарий от Mischutka

Тут опечатка. customize-set-variable (в единственном числе).

M-x apropos поможет исследовать какие команды/функции доступны и как они правильно называются.

ugoday ★★★★★
()
Ответ на: комментарий от ugoday
Warning (initialization): An error occurred while loading ‘/home/admin01/.emacs.d/init.el’:

Attempt to set a constant symbol: nil

To ensure normal operation, you should investigate and remove the
cause of the error in your initialization file.  Start Emacs with
the ‘--debug-init’ option to view a complete error backtrace. Disable showing Disable logging
emacs --debug-init
Debugger entered--Lisp error: (setting-constant nil)
  set-default(nil "/home/admin01/.emacs.d/custom.el")
  customize-set-variable(nil "/home/admin01/.emacs.d/custom.el")
  load-with-code-conversion("/home/admin01/.emacs.d/init.el" "/home/admin01/.emacs.d/init.el" t t)
  load("/home/admin01/.emacs.d/init" noerror nomessage)
  startup--load-user-init-file(#f(compiled-function () #<bytecode 0x1788a99f7289e9ce>) #f(compiled-function () #<bytecode -0x1f3c686ddc0cdc35>) t)
  command-line()
  normal-top-level()
Mischutka ★★★★★
()
Ответ на: комментарий от ugoday

Судя по всему, он пытается константе nil присвоить какое-то значение.

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

Давайте свой init.el целиком. Какая-то странная ошибка, которую я не могу задетектить на своём Emacs 30.1.

dunmaksim
() автор топика
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)