Олег Шалаев  > Мой Debian-опыт  >

Настройки emacs

Настройки emacs хранятся в файле ~/.emacs. У меня этот файл выглядит так:
(auto-compression-mode 1)
(mwheel-install) ; Чтобы работало мышиное колёсико (аналог M-x mouse-wheel-mode)
(toggle-save-place-globally); хочу, чтобы emacs запоминал и восстанавливал позицию курсора в файлах
(setq calendar-week-start-day 1) ; - объясняет, что первый день недели - понедельник, а не воскресенье
(setq european-calendar-style 't) ; приказывает показывать даты в привычной мне русско-европейской форме, дд/мм/гг:
(recentf-mode 1) ; maintains a menu for visiting files that were operated on recently. When enabled a new "Open Recent" submenu is displayed in the "Files" menu.
(setq recentf-max-saved-items 500)
(setq recentf-max-menu-items 60)
; показывать дневник при старте emacs:
(display-time)
(add-hook 'diary-hook 'appt-make-list)
;(diary 0)
; следующими тремя строчками я отказываюсь от чуждых мне американских, еврейских и арабских праздников:
(setq general-holidays nil)
; К сожалению, кроме Пасхи этим я убил целую череду сопутствующих праздников, которые от неё отсчитываются, и которые
; ленивые швейцарцы любят отмечать. Эти праздники желательно знать, поэтому лучше, наверное, разрешить general-holidays и
; просто вычеркнуть из holidays.el всякие там дни американской независимости и тому подобный бред (ну и откомпилировать
; его в holidays.elc)
(setq hebrew-holidays nil)
(setq islamic-holidays nil)
; следующими строчками я устанавливаю мой собственный список праздников
(setq other-holidays
'(((holiday-fixed 5 01 "День международной солидарности трудящихся")
(holiday-fixed 11 7 "Годовщина октябрьской революции")
(holiday-fixed 4 12 "День космонавтики")
(holiday-fixed 01 27 "Годовщина снятия блокады Ленинграда")
; первое воскресенье октября - День Учителя:
(holiday-float 10 0 1 "День Учителя")
))
; конец определения праздников

; Попытка решения проблем с печатью русского текста http://lists.altlinux.ru/pipermail/community/2003-October/100192.html
; Загрузить это хозяйство явным образом, иначе при автозагрузке будут сбиты настройки
(require 'mule-util)
(require 'mule)
(require 'ps-print)
(require 'ps-bdf)
; Настройки печати
(setq ps-print-color-p 'black-white)
(setq ps-use-face-background nil)
(setq ps-paper-type 'a4)
(setq ps-font-size 10)
(setq ps-print-control-characters nil)
(setq ps-multibyte-buffer nil)
; Для печати bdf-шрифтами -- должны быть указаны точные имена файлов.
;; Кириллические шрифты должны быть в кодировке iso-8859-5!
;; Шрифты надо брать не меньше 12x24, иначе будет смотреться совсем плохо.
(setq ps-mule-font-info-database-default
   '((ascii (normal bdf "12x24rk.bdf" nil 1))
    (latin-iso8859-1 (normal bdf "12x24rk.bdf" iso-latin-1 1))
    (cyrillic-iso8859-5 (normal bdf "cyr24-etl.bdf" cyrillic-iso-8bit
     1))))
; Запуск дневника:
(setq cal-tex-rules t)
;      (calendar)		       ; fire up the calendar display.
      (setq cal-tex-diary t)     ; чтобы записи из дневника включались в распечатки,
; выдаваемые командами t f w, t f W, t w 3. Лучше всего -- tw3. Дополнительно удобно иметь распечатку t w 2
; заменить заголовок на
; \documentclass[a4paper,11pt]{article}\usepackage[koi8-r]{inputenc} \usepackage[russian,english]{babel}
; и не забыть добавить команду \Russian
;      (setq cal-tex-rules t)
;      (mark-calendar-holidays)
;      (mark-diary-entries)
(diary)
; чтобы прираспечатывании недельного и двухнедельного календаря использовались записи из дневника:
; (setq cal-tex-diary 1)
; ==================================================
; следующая команда позволяет использовать уже запущенный emacs для редактирования файла командой emacsclient file.txt:
(server-start)
; включаем режим подсветки недавно внесённых в текст изменений:
(global-font-lock-mode 1)
; to revert buffers when I come from home and bring the new archive
(global-auto-revert-mode 1)
(delete-selection-mode t)
(global-set-key [(f1)] (lambda () (interactive) (manual-entry (current-word))))
(global-set-key [f2]   'font-lock-mode)
(global-set-key [f3]   'fill-region-as-paragraph)
(global-set-key [f4]   'comment-region)
(global-set-key [f5]   'iso-accents-mode)
(global-set-key [f6]   'highlight-changes-mode)
(global-set-key [f11]   'switch-to-buffer)
(global-set-key [f9]   'other-window)
(setq scroll-step 1)
(setq scroll-conservatively 50)
(setq scroll-preserve-screen-position 't)
; текст начинает смещаться, когда курсор подходит на расстояние 10 строк к краю экрана:
;(setq scroll-margin 10)
;освобождение пространства от ненужной панели с кнопками:
(tool-bar-mode 0)
;__________________________________________________________________________________
;         устанавливаем русскую раскладку клавиатуры, принятую в Windows:
(set-language-environment "Cyrillic-koi8")
;; Чтобы раскладка соответствовала раскладке русских букв на виндовых (а теперь таких большинство) клавиатурах, можно добавить еще следующие строки:
(quail-define-package
 "cyrillic-jcuken" "Cyrillic" "рус " nil
 "ЙЦУКЕН keyboard layout widely used in Russia (ISO 8859-5 encoding)"
 nil t t t t nil nil nil nil nil t)
(quail-define-rules
 ("1" ?1) ("2" ?2) ("3" ?3) ("4" ?4) ("5" ?5) ("6" ?6) ("7" ?7) ("8" ?8)
 ("9" ?9) ("0" ?0) ("-" ?-) ("=" ?=) ("`" ?ё) ("q" ?й) ("w" ?ц) ("e" ?у)
 ("r" ?к) ("t" ?е) ("y" ?н) ("u" ?г) ("i" ?ш) ("o" ?щ) ("p" ?з) ("[" ?х)
 ("]" ?ъ) ("a" ?ф) ("s" ?ы) ("d" ?в) ("f" ?а) ("g" ?п) ("h" ?р) ("j" ?о)
 ("k" ?л) ("l" ?д) (";" ?ж) ("'" ?э) ("\\" ?\\) ("z" ?я) ("x" ?ч) ("c" ?с)
 ("v" ?м) ("b" ?и) ("n" ?т) ("m" ?ь) ("," ?б) ("." ?ю) ("/" ?.) ("!" ?!)
 ("@" ?\") ("#" ?#) ("$" ?\;) ("%" ?%) ("^" ?:) ("&" ??) ("*" ?*) ("(" ?() 
 (")" ?)) ("_" ?_) ("+" ?+) ("~" ?Ё)
 ("Q" ?Й) ("W" ?Ц) ("E" ?У) ("R" ?К) ("T" ?Е) ("Y" ?Н) ("U" ?Г) ("I" ?Ш)
 ("O" ?Щ) ("P" ?З) ("{" ?Х) ("}" ?Ъ) ("A" ?Ф) ("S" ?Ы) ("D" ?В) ("F" ?А)
 ("G" ?П) ("H" ?Р) ("J" ?О) ("K" ?Л) ("L" ?Д) (":" ?Ж) ("\"" ?Э) ("|" ?|)
 ("Z" ?Я) ("X" ?Ч) ("C" ?С) ("V" ?М) ("B" ?И) ("N" ?Т) ("M" ?Ь) ("<" ?Б)
 (">" ?Ю) ("?" ?,))
; _______________________________________________
; для auctex:
(require 'tex-site)
; а ещё я хочу, чтобы для .tex файлов автоматически загружался крутейший пакет RefTeX:
(add-hook 'LaTeX-mode-hook 'turn-on-reftex)   ; with AUCTeX LaTeX mode
;(add-hook 'latex-mode-hook 'turn-on-reftex)   ; with Emacs latex mode
; для YaTeX:
(add-hook 'yatex-mode-hook 'turn-on-reftex)
(setq reftex-label-alist
    '(AMSTeX
      ("thm" ?h "thm:" "~\\ref{%s}" t ("theorem" "th.") -2)
      ("dfn" ?h "dfn:" "~\\ref{%s}" t ("definition" "def.") -3)))
; следующая строчка говорит показывать номер текущей колонки
(setq column-number-mode t)
; начало отрывка, автоматически вводящего режим maxima для файлов .max
(setq auto-mode-alist (cons '("\\.max" . maxima-mode) auto-mode-alist))
(autoload 'maxima "maxima" "Running Maxima interactively" t)
(autoload 'maxima-mode "maxima" "Maxima editing mode" t)
; конец отрывка, автоматически вводящего режим maxima для файлов .max
; эксперименты с imaxima/начало
;;; add autoload of imaxima and maxima.
(autoload 'imaxima "imaxima" "Frontend for maxima with Image support" t)
;;; add autoload of imath.
(autoload 'imath-mode "imath" "Imath mode for math formula input" t)
(setq imaxima-use-maxima-mode-flag t)
; эксперименты с imaxima/конец
; запуск fly-spell для email mode по умолчанию / начало:
(add-hook 'mail-mode
 '(lambda () (setq flyspell-generic-check-word-p
 'mail-mode-flyspell-verify)))
; запуск fly-spell для email mode по умолчанию / конец
(require 'mailcrypt)
; Запускаем fly-spell и для файлов .tex:
;(add-hook 'LaTeX-mode-hook 'flyspell-mode)
(add-hook 'post-mode-hook '(lambda () (flyspell-mode t) (setq flyspell-generic-check-word-p 'mail-mode-flyspell-verify)))
;(add-hook 'text-mode-hook 'flyspell-mode)
(add-hook 'text-mode-hook  '(lambda () (flyspell-mode t) (ispell-change-dictionary "russian")))
(add-hook 'maxima-mode-hook  '(lambda () (flyspell-mode t) (ispell-change-dictionary "russian")))
(add-hook 'LaTeX-mode-hook '(lambda () (flyspell-mode t) (ispell-change-dictionary "american")))
; смысл следующей строки мне не вполне ясен:
(add-hook 'tex-mode-hook (function (lambda () (setq ispell-parser 'tex))))

(custom-set-variables
  ;; custom-set-variables was added by Custom -- don't edit or cut/paste it!
  ;; Your init file should contain only one such instance.
 '(appt-message-warning-time 6)
 '(case-fold-search t)
 '(current-language-environment "Cyrillic-KOI8")
 '(default-input-method "cyrillic-jcuken")
 '(fill-column 160)
 '(flyspelldefault-dictionary "american")
 '(global-font-lock-mode t nil (font-lock))
 '(ispell-dictionary "american" t)
 '(ispell-local-dictionary "american")
 '(mail-host-address "unibas.ch")
 '(mail-send-nonascii (quote query))
 '(maxima-args "-l sbcl")
 '(maxima-command "/home/shalaev/local/bin/maxima")
 '(mutt-alias-file-list (quote ("~/.mutt_alias")))
 '(normal-erase-is-backspace t)
 '(reftex-default-bibliography (quote ("~/PA6OTA/TEKCT/refs.bib")))
 '(reftex-plug-into-AUCTeX t)
 '(spell-command "ispell")
 '(transient-mark-mode t)
 '(user-full-name "Oleg CHALAEV")
 '(user-mail-address "moiadres@unibas.ch"))
;(prefer-coding-system 'utf-8)
; Восстанавливает привычную работу Backspace в текстовом режиме:
; (global-set-key "\C-h" 'delete-backward-char)
; а ещё я хочу, чтобы по команде S в каледаре emacs показывал мне время восхода и захода солнца в Питере:
(setq calendar-latitude 59.839858)
(setq calendar-longitude 30.174969)
(setq calendar-location-name "Петербург")
; Восстанавливает привычную работу Backspace в текстовом режиме:
; (global-set-key "\C-h" 'delete-backward-char)

; ---- language-env DON'T MODIFY THIS LINE!
; ---- language-env end DON'T MODIFY THIS LINE!
(custom-set-faces
  ;; custom-set-faces was added by Custom -- don't edit or cut/paste it!
  ;; Your init file should contain only one such instance.
 )

Олег Шалаев
Last modified: Sat Jan 3 10:19:55 CST 2009