После того, как я обновил Emacs 25.1 до 26.1, org-mode больше не работает

12

Я не эксперт по Emacs, но я использую Emacs org-modeдовольно часто. Я настроил Emacs для распознавания .orgфайлов. После того, как я обновился до версии 26.1, Emacs больше не только распознает .orgфайлы:

File mode specification error: (file missing Cannot open load file No such file or directory ob-sh)

но не может даже измениться org-mode. M-x org-modeдает:

Cannot open load file No such file or directory ob-sh

Я не переместил свой .emacsфайл или .emacs.dпапку.

Любая идея?

Мартин Петерсен
источник
После того, как я переместил мой файл .emacs и папку .emacs.d в другое место, все работает нормально. Тем не менее, я хотел бы знать, что я сделал не так.
Мартин Петерсен
К вашему сведению, вы не сделали ничего плохого. Это было переломное / несовместимое с прошлым изменение в режиме org, и я подозреваю, что многие люди, обновляющиеся до Emacs 26, были (и будут) опутаны им.
Филс
Вот совет, не связанный с вашей проблемой: вместо того, чтобы .emacsуйти с дороги, просто начните с emacs --no-init-file(на macOS:) open -a Emacs --args --no-init-file. ( --no-init-fileможет быть сокращено до -q.) Существует также флаг, --no-site-fileчтобы остановить загрузку файлов, специфичных для сайта.
Харальд Ханче-Олсен

Ответы:

16

Emacs 26.1 поставляется с гораздо более свежей версией org-mode, чем 25.1. ob-shбыл переименован ob-shellв org-mode 8.2, поэтому вам нужно будет настроить любую конфигурацию в .emacs ob-sh, как описано в разделе удаление ob-sh :

** Несовместимые изменения

*** ob-sh.elпереименовано в ob-shellЭто может потребоваться два изменения в конфигурации пользователя.

  1. В org-babel-do-load-languages, изменить (sh . t)на (shell . t).

  2. Отредактируйте local.mkфайлы, чтобы изменить значение, BTEST_OB_LANGUAGESудалив "sh" и включив "shell".

Скорее всего, вам нужно найти в вашей конфигурации вызов org-babel-do-load-languagesи изменить shего shellв соответствующем списке языков.

rpluim
источник
Спасибо за вашу помощь. Я искал в .emacs и .emacs.d строку ob-sh, но не смог ее найти. В любом случае, я восстановлю свой конфиг шаг за шагом.
Мартин Петерсен
Это может быть «ш», а не «обш». Разделение вашей конфигурации должно найти точную проблему.
rpluim
Также emacs --debug-initможет точно определить линию, которая вызывает проблемы.
rpluim
2
@MartinPetersen Найдите в своей конфигурации вызов org-babel-do-load-languagesили настройку переменной org-babel-load-languages. Вам нужно будет изменить , shчтобы shellв соответствующем списке языков. Если вам может понадобиться поддержка как старого, так и нового варианта, сообщите нам, как это можно организовать.
Филс
Благодаря всем вам я смог решить проблему. Теперь все работает как задумано. Снова спасибо огромное.
Мартин Петерсен