;; Toto je priklad suboru .emacs. Riadky zacinajuce znakmi ";;" su
;; komentare

;; na zaciatku sa definuju niektore zakladne nadstavenia funkcii
;; pre pohyb cursoru na obvykle klavesy

(global-set-key [home] 'beginning-of-line)
(global-set-key [end] 'end-of-line)
(global-set-key [kp-delete] 'delete-char)
(global-set-key [kp-home] 'beginning-of-line)
(global-set-key [kp-end] 'end-of-line)
(global-set-key [kp-1] 'end-of-line)
(global-set-key [kp-2] 'next-line)
(global-set-key [kp-3] 'scroll-down)
(global-set-key [kp-4] 'backward-char)
(global-set-key [kp-6] 'forward-char)
(global-set-key [kp-7] 'beginning-of-line)
(global-set-key [kp-8] 'previous-line)
(global-set-key [kp-9] 'scroll-up)


;; na F1 si definujem vyvolanie funkcie "man", ktora mi da manualovu
;; stranku funkcie na cursore.

(global-set-key [f1] 'man)

;; pri pouzivani "man" funkcie si mozno nadstavit styl zobrazenia.
(setq Man-notify-method 'bully)


;; na F2 si definujem funkciu zapisujucu subor: "save-buffer"

(global-set-key [f2] 'save-buffer)


;; Casto pouzivam undo a tak okrem "Control -" aj skratene vyvolanie
;; na F9.

(global-set-key [f9] 'undo)

;; Kedze hojne pouzivan "undo" a niekedy odrabam aj pracu za cely den,
;; prestavim velkosti undo bufferov na dostatocnu hodnotu.
(setq undo-strong-limit 3000000)
(setq undo-limit 2500000)


;; Opakovane vykonavam svoje macra, tak vyvolanie makra dam na hot-key F12.

(global-set-key [f12] 'call-last-kbd-macro)


;; Tab-ulator pouzivam, ked chcem vlozit znak "tab", nie na formatovanie
(setq c-tab-always-indent nil)
(setq default-tab-width 4)

;; ked vkladam text mysou, tak chcem aby sa vlozil na miesto, kde prave
;; stoji kurzor, nie na miesto, kde stoji mys.
(setq mouse-yank-at-point t)

;; Chcem aby sa mi na informacnom riadku zobrazoval nielen riadok, ale
;; aj stlpec, kde sa nachadza kurzor.
(setq column-number-mode t)


;; definicia mojej vlastnej lispovskej funkcie

(defun slovak-text-mode ()
	(interactive "")
	(set-language-environment "latin-2")
	(set-terminal-coding-system 'iso-8859-2)
	(iso-accents-mode)
	(iso-accents-customize "latin-2")
)


;; Nasledujuci text definuje standardne editovacie mody v zavislosti
;; na koncovke editovaneho suboru.

(setq auto-mode-alist '(
;;("\\.text\\'" . slovak-text-mode) 
("\\.c\\'" . c-mode)
("\\.h\\'" . c-mode)
("\\.java\\'" . java-mode)
("\\.tex\\'" . latex-mode)
("\\.el\\'" . emacs-lisp-mode) 
("\\.emacs\\'" . emacs-lisp-mode) 
))


;; nasledovne riadky specifikuju zafarbenie textu pri programovani
;; v C a Java. Prve dva riadky povoluju farbenie pre C a Java mode
;; prace.

(add-hook 'c-mode-hook 'turn-on-font-lock)
(add-hook 'java-mode-hook 'turn-on-font-lock)

;; Nasledovne odstavce najskor specifikuju ake farby budem 
;; pouzivat a ktore lexikalne jednotky textu sa maju ako
;; zafarbit.

(make-face 'my-comment-face)
(set-face-foreground 'my-comment-face "SeaGreen")
(make-face 'my-keyword-face)
(set-face-foreground 'my-keyword-face "blue")
(make-face 'my-black-face)
(set-face-foreground 'my-black-face "black")
(make-face 'my-cpp-face)
(set-face-foreground 'my-cpp-face "brown")

(setq font-lock-maximum-decoration t)
(setq font-lock-comment-face 'my-comment-face)
(setq font-lock-builtin-face 'my-black-face)
(setq font-lock-constant-face 'my-black-face)
(setq font-lock-function-name-face 'my-black-face)
(setq font-lock-keyword-face 'my-keyword-face)
(setq font-lock-reference-face 'my-black-face)
(setq font-lock-type-face 'my-keyword-face)
(setq font-lock-variable-name-face 'my-black-face)