Используются только стандартные "расширения", уже идущие в комплекте Emacs-24.4.
1. Определение функций пользователя
1 (defun open-cfg ()
2 "Правка основного конфига"
3 (interactive)
4 (if (equal (buffer-name) ".emacs")
5 (load "~/.emacs")
6 (find-file "~/.emacs")))
7 (defun insert-date ()
8 "Insert current date yyyy-mm-dd H:M:S."
9 (interactive)
10 (insert (format-time-string "%a %d.%m %H:%M")))
Здесь определены 2 функции, которые я использую наиболее часто: открытие основного [этого] конфигурационного файла для правки и перезагрузки*, и формат timestamp`а.
- После правки конфигов их нужно перезагрузить, чтобы изменения применились в текущей сессии. Или перезапустить редактор, но это чато неудобно и совсем по ламерски :)
2. Клавиатура
Клавиатурные сокращения, можно ничего не менять и использовать стандартную схему Emacs, а можно сделать
удобнее.
11 (global-set-key (kbd "<escape>") 'keyboard-escape-quit)
12 (global-set-key (kbd "<f1>") 'open-cfg)
13 (global-set-key (kbd ""<f3>") 'next-match)
14 (global-set-key (kbd "<f9>") 'shell)
15 (global-set-key (kbd "<f12>") 'kill-emacs)
16 (global-set-key (kbd "C-f") 'isearch-forward-regexp)
17 (global-set-key (kbd "C-а") 'isearch-forward-regexp)
18 (global-set-key (kbd "C-z") 'undo)
19 (global-set-key (kbd "C-я") 'undo)
20 (global-set-key [mode-line mouse-5] 'next-buffer)
21 (global-set-key [mode-line mouse-4] 'previous-buffer)
22 (global-set-key [C-tab] 'delete-window)
- Комбинации клавиш чувствительны к текущей раскладке, поэтому некоторые команды для удобства продублированы рус/енг.
- Клавиши-модификаторы Ctrl, Alt принято записывать как "C" и "M" соответственно.
- Неплохо использовать Esc для отмены/завершения текущей команды, дополнительно к стандартной комбинации, а F12 в этом конфиге просто закрывает редактор, ничего не сохраняя и не запрашивая никаких подтверждений (!)
3. Тема оформления
Настройки внешнего вида, шрифта и пр.
23 (load-theme ' fogus t)
24 (custom-set-faces
25 '(default ((t (:family "Droid Sans" :height 150)))))
26 (custom-set-variables
27 '(delete-selection-mode nil)
28 '(desktop-save-mode nil)
29 '(double-click-time 1000)
30 '(inhibit-startup-buffer-menu t)
31 '(inhibit-startup-screen t))
Выбран шрифт-по-умолчанию "Droid Sans 15" и
тема "Fogus".
4. Прочие настройки
32 (kill-buffer "*scratch*")
33 (kill-buffer "*Messages*")
34 (windmove-default-keybindings 'meta)
35 (fset 'yes-or-no-p 'y-or-n-p)
62 (setq make-backup-files nil)
63 (setq auto-save-default nil)
Отучаем Emacs от излишеств и навязчивости ;) Кажется, все понятно без комментариев.
5. Алиасы
Обычные сокращения команд, как и в shell. Про них
тут.
64 (defalias 'dec 'org-decrypt-entry)
65 (defalias 'lf 'load-file)
66 (defalias 'lm 'list-matching-lines)
67 (defalias 'tag 'org-set-tags-command)
68 (defalias 'sel 'org-tags-sparse-tree)
69 (defalias 'abb 'abbrev-mode)
70 (defalias 'gt 'goto-line)
6. Modeline
Внешний вид "строки состояния".
71 (setq default-mode-line-format
72 (list ""
73 'mode-line-buffer-identification
74 'mode-line-modes
75 " | Cut: Ctrl+w Paste: Ctrl+y Goto [gt]"
76 ))
Опять же убран ненужная мне индикация положения курсора ("точки" по терминологии Emacs) в документе и на первое время добавлена справка по клавиатурным комбинациям, которые я постоянно забывал))
* Меню пользователя
Собственный пункт в главном меню, отображается перед "File" - тоже весьма удобно на первое время, да и потом тоже не мешает. Состав меню естественно может быть абсолютно произвольным.
(require 'easymenu)
(easy-menu-define words-menu global-map
"Меню пользователя"
'("[Actions]"
["Decrypt" org-decrypt-entry]
["+ Tag" org-set-tags-command]
["Tag =" org-tags-sparse-tree]
["Вставить дату" insert-date]
["Быстрый поиск" isearch-forward-regexp]
["Орфография" flyspell-mode]
["Cтроки содержащие" list-matching-lines]
))
Update 01.2015: добавил
пару функций - быдлокод конечно:
я-незнаю-лиспа, но работает.