Мой конфиг к EMACS
2011.05.29
После некоторого времени использования замечательного текстового редактора EMACS становится понятно, что его не только можно переконфигурировать, но даже более того: для удобной работы совершенно необходимо его переконфигурировать. Все пишут свои конфиги к EMACS; и я, пожалуй, также объясню свой.
Общие представления
Конфиг состоит из следующих частей:
- Настройка отступов
- Настройка прокрутки
- Включение повышающих продуктивность режимов
- Отключение некоторых элементов интерфейса
- Изменение горячих клавиш
- Ещё немного дополнительных изменений
\
После того, как я прочитаю монструозный полный перечень возможностей 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)
Пока всё, и так неплохо — прямо скажем, намного лучше, чем было. :)