Emacs/Konfiguracja
The big problem is that you have to become a .emacs programmer before you can start coding.[1]
Pliki konfiguracyjne
edytujGNU Emacs szuka pliku initializacyjnego ( ang. initialization file, init file) :[2]
~/.emacs ~/.emacs.el ~/.emacs.d/init.el
Są to skrypty Emacs Lispa. Emacs wykona pierwszy ze znalezionych, ignorując pozostałe.
Dokladna lokalizacja jest zależna od systemu operacyjnego. Jeśli nie jesteś pewien, której lokalizacji użyć, możesz uruchomić Emacsa i wpisać M-x describe-variable RET user-init-file RET. Spowoduje to wyświetlenie ścieżki do pliku init w minibuforze.
Sprawdzanie i ustalanie zmiennych bezpośrednio w programie
edytujVAR zmienna, VALUE wartość, RET klawisz Enter
1. Wyświetlenie wartości zmiennej oraz dokumentacji
C-h v VAR RET
Sprawdzamy wartość zmiennej load-path
C-h v load-path RET
przykładowy wynik :
load-path is a variable defined in `C source code'.
Its value is
("/usr/share/emacs24/site-lisp/slime" "/usr/share/emacs24/site-lisp/slime/contrib" "/usr/share/emacs24/site-lisp/latex-cjk-thai" "/usr/share/emacs24/site-lisp/latex-cjk-common" "/etc/emacs24" "/etc/emacs" "/usr/local/share/emacs/24.3/site-lisp" "/usr/local/share/emacs/site-lisp" "/usr/share/emacs24/site-lisp/dictionaries-common" "/usr/share/emacs/site-lisp/autoconf" "/usr/share/emacs/24.3/site-lisp" "/usr/share/emacs/24.3/site-lisp/cmake-data" "/usr/share/emacs/24.3/site-lisp/dictionaries-common" "/usr/share/emacs/24.3/site-lisp/latex-cjk-common" "/usr/share/emacs/24.3/site-lisp/latex-cjk-thai" "/usr/share/emacs/24.3/site-lisp/slime" "/usr/share/emacs/24.3/site-lisp/slime/contrib" "/usr/share/emacs/site-lisp" "/usr/share/emacs/24.3/lisp" "/usr/share/emacs/24.3/lisp/vc" "/usr/share/emacs/24.3/lisp/url" "/usr/share/emacs/24.3/lisp/textmodes" "/usr/share/emacs/24.3/lisp/progmodes" "/usr/share/emacs/24.3/lisp/play" "/usr/share/emacs/24.3/lisp/org" "/usr/share/emacs/24.3/lisp/nxml" "/usr/share/emacs/24.3/lisp/net" "/usr/share/emacs/24.3/lisp/mh-e" "/usr/share/emacs/24.3/lisp/mail" "/usr/share/emacs/24.3/lisp/language" "/usr/share/emacs/24.3/lisp/international" "/usr/share/emacs/24.3/lisp/gnus" "/usr/share/emacs/24.3/lisp/eshell" "/usr/share/emacs/24.3/lisp/erc" "/usr/share/emacs/24.3/lisp/emulation" "/usr/share/emacs/24.3/lisp/emacs-lisp" "/usr/share/emacs/24.3/lisp/cedet" "/usr/share/emacs/24.3/lisp/calendar" "/usr/share/emacs/24.3/lisp/calc" "/usr/share/emacs/24.3/lisp/obsolete" "/usr/share/emacs/24.3/leim")
2. Ustawienie zmiennej VAR na wartość VALUE
M-x set-variable RET VAR RET VALUE RET
3. Sprawdzenie, co jest przypisane do danej kombinacji klawiszy
C-h k wciskamy kombinację klawiszy
4. Sprawdzenie jaka kombinacja klawiszy uruchamia daną funkcję, np. kill-sexp
C-h w kill-sexp RET
Podświetlanie aktywnego regionu
edytujNormalnie w Emacsie nie jest podświetlany aktywny region ( odwrotnie w Xemacsie ). W celu zmiany [3]
(transient-mark-mode)
Styl tekstu
edytujOpis stylu wyświetlania tekstu ( ang. face ) :
M-x describe-face
Styl jest zdefiniowany w pliku `faces.el'.
Jeśli nie odpowiadają nam domyślne style możemy je zmienić za pomocą pojedynczych komend lub trybów.
Komendy związane ze stylem tekstu
edytujMożemy zmienić pojedyncze kolory za pomocą komend, np. :
(set-face-foreground 'default "blue")
Tryby kolorów
edytujcolor-theme
edytujJest tryb color-theme-el [4]
Wybieramy za pomocą komendy
M-x color-theme-<TAB> RET
Zenburn
edytujSchemat kolorów Zenburn [5][6] wymaga pakietu color-theme.
Aktywacja schematu : w pliku konfiguracyjnym
~/.emacs
dodajemy : [7]
;; Sweet colors (require 'color-theme) ; some sweets (load "zenburn") (zenburn) ; color scheme
Własny tryb
edytujJeśli nie jesteś zadowolony z gotowych trybów możesz utworzyć własny [8]
Plik konfiguracyjny .emacs
edytujZnajdywanie błędów w pliku .emacs
edytujM-x set-variable debug-on-error t M-x load-file ~/.emacs
Inną metodą jest uruchomienie Emacsa w taki sposób
emacs --debug-init
Przykładowy plik .emacs
edytujPoniższą zawartość można bezpośrednio skopiować do ~/.emacs.
;; podwójne średniki do komentarzy, pojedyncze do wyłączania opcji ;; Wczytujemy konfig klawiszem F9, nie trzeba wychodzić z Emacsa (defun load-my-config () (interactive) (load-file "~/.emacs")) (global-set-key (kbd "<f9>") 'load-my-config) (add-to-list 'load-path "~/elisp") (setq inhibit-splash-screen t) ; nie pokazuje ekranu startowego (setq make-backup-files nil) ; nie robi backupow (menu-bar-mode -1) ; wylaczamy menubar na gorze (transient-mark-mode t) ; widoczne co zaznaczylismy ;; Funkcja i bindowanie do zamkniecia okna i buforu jednoczesnie ;; thanks to piranha from #emacs at freenode (defun kill-and-close-buffer () (interactive) (kill-buffer nil) (delete-window)) (global-set-key (kbd "C-x x") 'kill-and-close-buffer) ;; http://www.emacswiki.org/cgi-bin/wiki/InteractivelyDoThings ;; dopelnia wewnatrz nazw nie tylko poczatki, np przy otwieraniu plikow ;; #emacs@freenode 2008-03-06 ;; [11:26] <bob2> rofrol: I like it because it completes on strings ;; within the names, not just at the beginning (require 'ido) (ido-mode t) ;; otwieranie w textmate jest w fuzzy mode, co to jest? ;; http://groups.google.com/group/comp.emacs/msg/444300433515472b?dmode=source ;; opcja odpowiadająca to ; http://groups.google.com/group/comp.emacs/msg/444300433515472b?dmode=source ; (setq ido-enable-flex-matching t) ;; http://www.codecoffee.com/tipsforlinux/articles/033.html ;; Changes all yes/no questions to y/n type (fset 'yes-or-no-p 'y-or-n-p) ;;Plynne przewijanie po jednej linii (setq scroll-step 2) ;;alternatywnie mozna ustawic dwie zmienne ;;http://www.emacswiki.org/emacs-en/SmoothScrolling ;scroll-step 1 ;scroll-conservatively 10000 ;;jesli potrzeba ustawic margines dla przewijania ;;http://emacs.wordpress.com/2007/09/10/smooth-scrolling/ ;;Utrzymywanie kursora w tej samej pozycji podczas przewijania stron (setq scroll-preserve-screen-position t) ;; "http://snarfed.org/space/emacs page up page down" ;; page down przesuwa takze kursor, jesli dojedzie do konca strony ;; Page down/up move the point, not the screen. ;; In practice, this means that they can move the ;; point to the beginning or end of the buffer. (global-set-key [next] (lambda () (interactive) (condition-case nil (scroll-up) (end-of-buffer (goto-char (point-max)))))) (global-set-key [prior] (lambda () (interactive) (condition-case nil (scroll-down) (beginning-of-buffer (goto-char (point-min)))))) ;; pokaz nie widoczne znaki na końcu linii ;; http://trey-jackson.blogspot.com/2008/03/emacs-tip-12-show-trailing-whitespace.html (setq-default show-trailing-whitespace t) ;; włączanie outline-mode dla plików o nazwie TODO ;; * to poziom 1, ** to poziom 2, jeśli wykonane to dajemy spację przed gwiazdką ;; from Teach Yourself Emacs in 24 hours ;; http://edward.oconnor.cx/2006/03/poor-mans-todo-list ;; http://www.emacswiki.org/cgi-bin/wiki/OutlineMode (setq auto-mode-alist (cons '("TODO" . outline-mode)auto-mode-alist)) ;; utf-8 ;; http://gentoo-wiki.com/HOWTO_Make_your_system_use_unicode/utf-8#Editors (setq locale-coding-system 'utf-8) (setq terminal-coding-system 'utf-8) (setq keyboard-coding-system 'utf-8) (setq selection-coding-system 'utf-8) (setq prefer-coding-system 'utf-8) ;; http://www.xsteve.at/prg/emacs/.emacs.txt ;;http://www.bazon.net/mishoo/.emacs ;; dziala zwykle global ;(global-set-key "\M-g" 'newline-and-indent) ;; nie dziala zwykle local ;(local-set-key "\M-g" 'newline-and-indent) ;; dziala kbd ;(define-key global-map (kbd "M-g") 'newline-and-indent) ;; nie dziala kbd local ;(define-key local-map (kbd "M-g") 'newline-and-indent) ;; podobno enter jest zasloniety lokalna definicja, ale ponizsze nie dzial ;(local-set-key (kbd "C-m") 'newline-and-indent ;; za to to dziala ;(global-set-key "\C-m" 'newline-and-indent) ;; Przydatne do pisania programów (global-set-key (kbd "C-m") 'newline-and-indent)
adresy dotyczące konfiguracji
edytujhttp://www.debianusers.pl/articles/39 Podstawy składni pliku konfiguracyjnego
http://www.emacsblog.org/2007/10/07/declaring-emacs-bankruptcy/#more-105 Podział pliku konfiguracyjnego na mniejsze
http://www.dotemacs.de/ zbiór plików konfiguracyjnych
http://www.dotemacs.de/recovery.html Testowanie kodu przed wrzuceniem do konfiguracji
http://tiny-tools.sourceforge.net/emacs-keys.html Bardzo obszerny poradnik