GNU EMACS для технических писателей
285 subscribers
11 photos
19 files
87 links
Настройка, использование, хаки
Download Telegram
С аудиторией разобрались. 20% сидящих на Windows это много. Надеюсь, у вас там WSL2 и всё хорошо.

Вернёмся к Emacs. Он не существует как сферический конь в вакууме сам по себе, а работает с теми переменными, которые заданы на уровне окружения. Например, переменная HOME. В *nix-системах это путь к домашнему каталогу. В Windows по умолчанию такой переменной нет, и Emacs вынужден подставить туда хоть что-то. По умолчанию — путь к каталогу с профилем. Ну, вот этот вот, типа C:\Users\mdunaevsky\AppData\Roaming. Не очень красивое название, правда? Мне больше нравится D:\dunaevsky. Впрочем, вы можете создать эту переменную сами в настройках ОС.

Когда вы переходите в какой-нибудь каталог и открываете файл, Emacs по-прежнему знает про переменные окружения. Самая важная из них — PATH. Она хранит список каталогов, в которых нужно выполнять поиск при запуске команд. В Windows эта переменная тоже есть. Поэтому, когда вы смотрите статус Flycheck, то видите там те пути к своим линтерам, которые Emacs смог найти в каталогах, указанных в PATH.

Если путь к каталогу с исполняемым файлом линтера не входит в PATH, Emacs (точнее, Flycheck), не сможет использовать его. Разумеется, другие команды тоже не будут работать. Вы вызываете projectile-build-command:

make dirhtml


Emacs пишет:

sphinx-build not found


Это потому, что Sphinx установлен в виртуальном окружении, про которое Emacs ничего не знает.

Виртуальное окружение, как правило, активируется с помощью этой команды:

source .venv/bin/activate


Эта команда добавляет в PATH нужные пути, и делает много какой другой работы. Когда вы активируете окружение, то получаете настроенные переменные окружения. Это работает не только с Python. Например, утилита Bundler из мира Ruby делает то же самое: заполняет переменные окружения нужными значениями.

Вы вызываете команду:

bundle exec asciidoctor-pdf ...


Bundler заполняет переменные окружения нужными значениями, а уже потом запускает asciidoctor-pdf. Вот только использовать его совместно с Flycheck в этом случае не получится, я проверял. Нужно что-то другое.

THE BAD

Установите asciidoctor в системное окружение с помощью команды:

gem install asciidoctor


Возможно, это даже не сломает вашу систему. А может быть сломает. Разработчики Debian запретили установку и обновление системных пакетов Python с помощью PIP. Думаю, скоро настанет и очередь Ruby.

THE UGLY

Используйте пакет asciidoctor, входящий в состав дистрибутива. Скорее всего, там будет какое-нибудь старьё, но этот способ даёт хоть какой-то контроль над происходящим.

THE GOOD

Установите в систему утилиту direnv. А вот как её использовать, и при чём тут Emacs — тема отдельного поста.

#direnv #ruby #python
👍1