Краткое содержание предыдущих серий.
Основания под этим были продиктованы обстоятельствами: очень часто требовалось иметь дело с крайне разноплановыми задачами. Например, с редактированием файлов конфигураций, редактированием текста, редактированием исходных текстов на полудюжине скриптовых и компилируемых языков. Хвала богам, что период анархии остался далеко в прошлом.
Вторым фактором было состояние двоичных сборок emacs для платформы Windows. Например, поддержка latex-preview была доступна только в особой сборке, скачиваемой с особого сайта. Некоторые пакеты можно было собрать только через automake, который невозможно было заставить работать сколько-нибудь вменяемо под Windows.
Все перечисленное, а так же последствия экспериментов с очередным Новым Интересным Пакетом привели к тому, что запуск обожаемого редактора стал напоминать запуск стратегической ракеты средней дальности [1].
Однако, чему быть - того не миновать. Никакого фатализма, однако, совсем недавно, на работе был выдан новенький блестящий компьютер с жутким количеством гигагерцев, гигабайтов, гигабайтов [2], ядер и прочей атрибутикой. Все это производило сильное впечатление только что сошедшего с конвейера, и мне крайне захотелось отринуть все, и начать с нового листа.
Такое пафосное начало омрачалось старой памятью о часах мучений с жизненно-важными пакетами и прочими радостями жизни конца 20-столетия.
Однако, как оказалось, прогресс не стоял на месте. Чего мне всегда не хватало в моей Windows-жизни - так это unix-подобного окружения. Скрестив пальцы, я скачал Cygwin с одноименного ресурса. О чудо! Это уже не тот кривобокий монстр, дело с которым я имел почти 8 лет назад. Кроме того, я проигнорировал рекомендацию "не устанавливать Cygwin" в корневой раздел, и таки установил, правда, в специально отведенный диск. emacs занял свое место в /usr/local/ и после перезагрузки отлично видел пути ко всем нужным утилитам[3].
Версия 23.0.0.1 имеет достаточно приятных новшеств (вполне вероятно, что они появились ранее, но лично я отметил их в версии 23), например, обновлены привязки клавиш, делающие часть моих комбинаций ненужными.
Следующим шагом была плановая ревизия начальных настроек. Они у меня хранятся в двух файлах, традиционном ~/.emacs и менее традиционном ~/.custom.
Последний файл был отредактирован кардинально: оттуда были вырезаны все значение, относящиеся к внешним модулям. Небольшой трюк: перед сохранением этого файла выполните eval-buffer (ведь вы же редактируете в emacs, верно?). Нет ошибок - сохраняем.
С .emacs было немного дольше, но не намного сложнее. Как ни парадоксально звучит, однако я просто отсортировал все строки по алфавиту, естественно, убедившись, что ни одно s-выражение не занимает более одной строки. Конечно, после этого файл работать не будет, но тут тоже все просто. Отсортированный файл легко разбивается на логические блоки, которые расставляются в нужном порядке.
Итак, что же осталось тут? На свалку безжалостно отправлены строки, расширяющие load-path - сегодня emacs самостоятельно включает туда все каталоги в site-lisp. Особо сложной системы вложений я избегаю: названия каталогов различных пакетов не совпадают, а пакеты из одного файла я копирую прямо в site-lisp.
Не менее безжалостно вырезаны вызовы всех библиотек, ну, кроме самых необходимых. Такими для меня являются ibuffer, ido, hideshow и yasnippet[4]. Из остальных модулей я установил cedet, slime, nxml-mode, jabber.el, ipython и несколько режимов подсветки. Эти модули загружаются только тогда, когда требуются
Отдельно стоит изрядно похудевшая секция привязки клавиш, в основном на функции, не имеющие привязок вообще. Например, есть такой фрагмент:
(define-key ibuffer-mode-map (kbd "RET") 'ibuffer-visit-buffer-1-window)
Этот фрагмент заменяет стандартное поведение: вместо стандартного списка буферов открывается ibuffer, который занимает ровно столько места, сколько требуется для отображения списка, а по команде RET открывается выбраный буфер во все окно. Лично мне так удобно.
А так я сворачиваю-разворачиваю блоки кода или разметки.
В общем, теперь файл настроек занимает 50 строк (из 11 пустых и 6 - комментарии), а сам emacs загружается практически мгновенно.
[1] Вообще-то, я не знаю, как стартуют любые ракеты. Но думаю, что развертывание комплекса происходит долго.
[2] Это не опечатка, слово "гигабайты" написано дважды. Пока печатал фразу, постоянно исправлял приставку "мега" на "гига". Черт возьми, а ведь приставка "мега" может исчезнуть окончательно!
[3] Полная строка версии - "GNU Emacs 23.0.0.1 (i386-mingw-nt5.1.2600) of 2007-08-18 on TPAD", то есть мой emacs не из поставки cygwin.
[4] Этот модуль достоен всяческой похвалы и внимания. Из всех перепробованных, соотношение настройка\скорость\возможности - оптимальное.