Использование Emacs под Windows
Краткая инструкция, в которой описывается установка и настройка Emacs под Windows для работы в Org-mode: написания заметок и инструкций с последующим экспортом в PDF и OpenDocument Text; ведения списка задач. Подразумевается, что Emacs и Org-mode уже настроены, а конфиг лежит где-то на GitHub и надо его только немного адаптировать под Windows. В этом конфиге, помимо всего прочего, должен быть подключен репозиторий MELPA.
Для хранения org-файлов предполагается использовать Git или Syncthing. Если выбор пал на Git, то тогда в качестве Git-клиента будет использоваться Magit.
Окружение
В качестве домашней директории предполагается использовать просто директорию в корне диска, путь к которой необходимо прописать в переменную окружения HOME
. Вероятно, можно использовать директорию, которая указана в переменной HOMEPATH
, но этот сценарий полностью не проверялся.
Chocolatey
Первым делом необходимо установить choco: скачать скрипт, изменить политику выполнения по умолчанию и запустить сам скрипт.
Описание требуемой политики с сайта Microsoft (для домашних компьютеров политика по умолчанию – Restricted
):
- Scripts can run.
- Requires that all scripts and configuration files be signed by a trusted publisher, including scripts that you write on the local computer.
- Prompts you before running scripts from publishers that you haven't yet classified as trusted or untrusted.
- Risks running signed, but malicious, scripts.
Изменить политику через PowerShell и запустить установочный скрипт (всё это надо делать с правами администратора):
PS C:\Temp> Set-ExecutionPolicy AllSigned Изменение политики выполнения Политика выполнения защищает компьютер от ненадежных сценариев. Изменение политики выполнения может поставить под угрозу безопасность системы, как описано в разделе справки, вызываемом командой about_Execution_Policies и расположенном по адресу https:/go.microsoft.com/fwlink/?LinkID=135170 . Вы хотите изменить политику выполнения? [Y] Да - Y [A] Да для всех - A [N] Нет - N [L] Нет для всех - L [S] Приостановить - S [?] Справка (значением по умолчанию является "N"):Y PS C:\Temp> .\install.ps1
После установить необходимые программы следующим образом:
PS C:\Temp> choco install emacs findutils grep hunspell.portable git zip unzip miktex strawberryperl
Пояснение:
zip
иunzip
позволяют делать экспорт из Org-mode в OpenDocument Text;miktex
иstrawberryperl
позволяют худо-бедно делать экспорт в PDF.
В дальнейшем, чтобы обновить все установленные пакеты разом, можно использовать команду:
PS C:\Temp> choco upgrade all Chocolatey v2.4.2 Upgrading the following packages: all
Словари для Hunspell можно взять тут. Файлы index.aff
и index.dic
необходимо скопировать в директорию ~/Hunspell
и назвать соответствующим образом.
Внутри MiKTeX уже есть шрифт Computer Modern Bright, нужно только добавить соответствующую директиву в org-документ.
Emacs
Настройка Emacs, которую можно добавить в custom.el
:
;; old familiar font (custom-set-faces '(default ((t (:family "Consolas" :foundry "outline" :slant normal :width normal :weight regular :height 120))))) ;; make `rgrep' work (setq find-program (expand-file-name "bin/find.exe" (getenv "ChocolateyInstall"))) ;; make `hunspell' work (let ((base (expand-file-name "Hunspell" (or (getenv "HOME") (getenv "HOMEPATH"))))) (setenv "DICPATH" base) (setenv "DICTIONARY" "en_US") (setq ispell-hunspell-dict-paths-alist `(("en_US" ,(expand-file-name "en_US.aff" base)) ("ru_RU" ,(expand-file-name "ru_RU.aff" base))))) ;; Brave to open URLs (setq browse-url-chrome-program (expand-file-name "brave.exe" "C:\\Program Files\\BraveSoftware\\Brave-Browser\\Application"))
Про работу с Hunspell под Windows можно почитать у Xah Lee в этом посте.
Изменить шрифт можно через меню, если вы забыли про его существование или никогда им не пользовались:
- Options → Set Default Font …
- Options → Save Options
Самый простой шаблон для org-документа, который использует упомянутый шрифт:
#+LATEX_CLASS: article #+LATEX_CLASS_OPTIONS: [a4paper] #+LATEX_HEADER_EXTRA: \usepackage{cmbright} #+LATEX_HEADER_EXTRA: \hypersetup{colorlinks=true, urlcolor=blue} #+LATEX_HEADER_EXTRA: \setlength{\parindent}{0pt}
Git
В Windows есть встроенный ssh-клиент, а Git, по умолчанию, использует свой внутренний, который может быть не доступен из консоли (расположен в директории C:\Program Files\Git\usr\bin
, которая, по умолчанию, не добавляется в пути). Если есть необходимость, это поведение можно изменить через переменную GIT_SSH
, подробности тут.
Чтобы сгенерировать ключи посредством команды ssh-keygen
, необходимо перейти в упомянутую директорию и выполнить:
PS C:\Program Files\Git\usr\bin> ssh-keygen.exe -f ${Env:HOME}/.ssh/id_${Env:COMPUTERNAME}
Затем обновить ~/.ssh/config
:
Host github.com User git IdentityFile ~/.ssh/id_computer-name
После чего можно загрузить полученный pub-файл на GitHub, TFS и т.д.
Для корректной работы Magit необходимо установить ssh-agency, который доступен в списке пакетов MELPA. В custom.el
, соответственно, добавляется ещё одна строчка:
(require 'ssh-agency)
Syncthing
Установка:
PS C:\Temp> choco install syncthing
Варианты инструкции по автозапуску:
- Run at user log on using the Startup folder
- Run at user log on or at system startup using Task Scheduler
В свойствах директории Syncthing можно настроить маску (вкладка Ignore Patterns), которая позволит не синхронизировать временные файлы Emacs:
*.*~ .#*
В конфиг Org-mode при этом необходимо добавить включение Auto Revert Mode, чтобы буфер перезагружался при изменение файла:
(add-hook 'org-mode-hook #'auto-revert-mode)
Клавиатура
Переназначить Caps Lock можно через утилиту PowerToys.
Обновлено