Эксперименты

Мой конфиг к EMACS

2011.05.29

После некоторого времени использования замечательного текстового редактора EMACS становится понятно, что его не только можно переконфигурировать, но даже более того: для удобной работы совершенно необходимо его переконфигурировать. Все пишут свои конфиги к EMACS; и я, пожалуй, также объясню свой.

Общие представления

Конфиг состоит из следующих частей:

  1. Настройка отступов
  2. Настройка прокрутки
  3. Включение повышающих продуктивность режимов
  4. Отключение некоторых элементов интерфейса
  5. Изменение горячих клавиш
  6. Ещё немного дополнительных изменений

\

После того, как я прочитаю монструозный полный перечень возможностей EMACS Lisp, конфиг я, пожалуй, изменю.

\

Во-первых, постановляем, что табуляцию мы прекращаем использовать раз и навсегда.

    ;;; To set the mod-2 indentation used when you hit the TAB key
    (setq c-basic-offset 2)
    ;;; To cause the TAB file-character to be interpreted as mod-4 indentation
    (setq tab-width 4)
    ;;; To cause TAB characters to not be used in the file for compression, and for only spaces to be used
    (setq indent-tabs-mode nil)

Во-вторых, так называемый «aggressive scrolling» лично мне только мешает, так что отключаем его.

    (setq scroll-conservatively 5)
    (setq scroll-margin 5)
    (setq scroll-preserve-screen-position 1)

В-третьих, для меня безумно удобен viper-mode, поэтому включаем его по умолчанию везде.

    (setq viper-mode t)
    (require 'viper)

Также для веб-разработки включаем nXHTML-mode, который надо перед этим скачать и распаковать куда-нибудь (неважно куда, лишь бы файлы там и оставались и были доступны). Допустим, я распаковал пакет nXHTML-mode в каталог ""~/.emacs.d/nxhtml/", тогда в .emacs надо вписать:

    (load "~/.emacs.d/nxhtml/autostart.el")

Теперь адский трюк: когда я хочу открыть файл через диалоговое окно, а не через минибуфер, я хочу нажать C-x M-f, а не ползать мышкой по кнопкам и менюшкам.

    ;;; To enable hotkeys for find-file-dialog
    (defadvice find-file-read-args (around find-file-read-args-always-use-dialog-box act)
      "Simulate invoking menu item as if by the mouse; see `use-dialog-box'."
      (let ((last-nonmenu-event nil))
        ad-do-it))
    (global-set-key (kbd "C-x M-f") 'menu-find-file-existing)

После этого трюка можно и отключить тулбар насовсем.

    (tool-bar-mode -1)

Наконец, делаем всякие косметические улучшения. Первые установлены через меню настроек внутри EMACS, они тоже работают, но я уверен, что можно более лаконично.

    (custom-set-variables
      ;; custom-set-variables was added by Custom.
     '(initial-scratch-message nil))
    ;;; Клёвые шрифты некрупным кеглем
    (custom-set-faces
      ;; custom-set-faces was added by Custom.
     '(default ((t (:inherit nil :stipple nil :background "#ffffff" :foreground "#000000" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 87 :width normal :foundry "unknown" :family "Liberation Mono")))))

    ;; Column & line numbers in mode bar
    (column-number-mode t)
    (line-number-mode t)

    ;;; No startup message
    (setq inhibit-startup-message t)

Пока всё, и так неплохо — прямо скажем, намного лучше, чем было. :)

Предыдущий: Прога для подсчёта жизней при игре в Magic: The Gathering Следующий: 29 способов оставаться креативным