Сейчас мы продолжим конфигурирование нашего Емакса, чтобы сделать его максимально удобным для жизни. Так например, при выполнении команды ls в shell Емакс не преобразовывает escape-последовательности в правильные цвета, на что жалуются новички. Не проблема - сейчас мы это поправим! Добавляем в наш ~/.emacs.d/init.el :

;; для корректного выведения escape-последовательностей shell`a

<code>(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)</code>

Еще одна головная боль - автоопределение кодировок. Иногда не срабатывает на коротких текстах :) Поэтому важно расставить приоритеты:

<source lang="lisp"> ;; Установки автоопределения кодировок. Первой будет определяться utf-8-unix (prefer-coding-system 'cp866) (prefer-coding-system 'koi8-r-unix) (prefer-coding-system 'windows-1251-dos) (prefer-coding-system 'utf-8-unix) </source>

Теперь сделаем режим по умолчанию более удобным для использования. Я хочу, чтобы в нем набираемая строка автоматически переносилась по словам когда ее размер приближается к 80 символам:

<source lang="lisp"> ;; Режим по умолчанию c переносом строк по ширине 80 (setq default-major-mode 'text-mode) (add-hook 'text-mode-hook 'turn-on-auto-fill) (setq auto-fill-mode t) (setq fill-column 80) </source>

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

<source lang="lisp"> ;; Удаляем оконечные пробелы перед сохранением файлов (add-hook 'before-save-hook '(lambda () (delete-trailing-whitespace))) ;; Создание резервных копий редактируемых файлов (Backup) ;; нумерованный бэкап - 2 первых и 2 последних (setq backup-by-copying t ; don't clobber symlinks backup-directory-alist '(("." . "~/backup")) ; don't litter my fs tree delete-old-versions t ;; удаление промежуточных бэкапов kept-new-versions 6 kept-old-versions 2 version-control t) ; use versioned backups </source>

И наконец, слегда адаптируем под свои нужны интерфейс - следите за комментариями:

<source lang="lisp"> ;; Интерфейс (setq transient-mark-mode '1) ;; Show marked text (setq font-lock-maximum-decoration t) ;; (set-scroll-bar-mode 'right) ;; Полоса прокрутки справа (setq inhibit-startup-message t) ;; Не показываем сообщение при старте (fset 'yes-or-no-p 'y-or-n-p) ;; не заставляйте меня печать "yes" целиком (setq default-tab-width 4) ;; размер табуляции (setq-default indent-tabs-mode nil) ;; отступ только пробелами (setq initial-scratch-message nil) ;; Scratch buffer settings. Очищаем его. (setq scroll-conservatively 50) ;; гладкий скроллинг с полями (setq scroll-preserve-screen-position 't) (setq scroll-margin 10) (setq column-number-mode t) ;; show column & line numbers in status bar (setq line-number-mode t) (setq my-author-name (getenv "USER")) (setq user-full-name (getenv "USER")) (recentf-mode 1) ;; Recent files in menu ;; мышка… (global-set-key [vertical-scroll-bar down-mouse-1] 'scroll-bar-drag) ;; Scroll Bar gets dragged by mouse butn 1 (setq mouse-yank-at-point 't) ;; Paste at point NOT at cursor (mouse-wheel-mode 1) ;; колесо мышки </source>

Дальше мы начнем устанавливать специализированные расширения, которые превращают Емакс в настоящий швейцарский нож, в котором есть инструмент для любой работы.