Emacs/Konfiguracja
The big problem is that you have to become a .emacs programmer before you can start coding.[1]
Pliki konfiguracyjne
[edytuj]GNU 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
[edytuj]VAR 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
[edytuj]Normalnie w Emacsie nie jest podświetlany aktywny region ( odwrotnie w Xemacsie ). W celu zmiany [3]
(transient-mark-mode)
Styl tekstu
[edytuj]Opis 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
[edytuj]Możemy zmienić pojedyncze kolory za pomocą komend, np. :
(set-face-foreground 'default "blue")
Tryby kolorów
[edytuj]color-theme
[edytuj]Jest tryb color-theme-el [4]
Wybieramy za pomocą komendy
M-x color-theme-<TAB> RET
Zenburn
[edytuj]Schemat 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
[edytuj]Jeśli nie jesteś zadowolony z gotowych trybów możesz utworzyć własny [8]
Plik konfiguracyjny .emacs
[edytuj]Znajdywanie błędów w pliku .emacs
[edytuj]M-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
[edytuj]Poniż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
[edytuj]http://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