197 lines
5.7 KiB
Org Mode
197 lines
5.7 KiB
Org Mode
#+TITLE: EMACS konfiguracija
|
|
|
|
* Splošno
|
|
|
|
Tukaj se nahaja celotna konfiguracija za emacs urejevalnik, ki jo uporabljam, v ORGMODE obliki. Na ta - "literate programming" oz. pismeni način - podana konfiguracija daje v ospredje opis posameznih sekcij in s tem poveča preglednost, olajša pa tudi navigacijo po konfiguraciji.
|
|
|
|
Razdeljena je na poglavja ohlapno glede na vlogo oz področje. Področja so nekoliko raznosvrstna (evil način - tipkovnične bližnjice v slogu VIM so ena sekcija, programiranje druga...), bi pa moralo biti iz naslovov precej jasno, za kaj gre.
|
|
|
|
* Sekcije
|
|
|
|
** Zagon
|
|
~debug-on-error~ uresničimo, če bi radi sprožili razhroščevalnik, kadar pride do napake (zelo priročno pri reševanju težav).
|
|
|
|
#+begin_src emacs-lisp
|
|
(setq debug-on-error t)
|
|
#+end_src
|
|
|
|
Pospešimo zagon z zmanjšanjem frekvence zbiranja smeti (garbage collection).
|
|
|
|
#+begin_src emacs-lisp
|
|
(setq gc-cons-threshold (* 50 1024 1024))
|
|
#+end_src
|
|
|
|
** Paketi
|
|
|
|
Vklopi prikazovanje statistik naloženih paketov (prikažemo jih z ~M-x use-package-report~).
|
|
|
|
#+begin_src emacs-lisp
|
|
(setq use-package-compute-statistics t)
|
|
#+end_src
|
|
|
|
Nastavimo vire nalaganja paketov in pa vklopimo privzeto nalaganje ~use-package~ paketov iz spletnih zbirališč.
|
|
|
|
#+begin_src emacs-lisp
|
|
(require 'package)
|
|
(setq use-package-always-ensure t)
|
|
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
|
|
(add-to-list 'package-archives '("org" . "https://orgmode.org/elpa/") t)
|
|
(add-to-list 'package-archives '("elpa" . "https://elpa.gnu.org/packages/") t)
|
|
(package-initialize)
|
|
#+end_src
|
|
|
|
Vklop merjenja časa nalaganja posameznih paketov.
|
|
Rezultate merjenja lahko pogledamo z ~M-x benchmark-init/show-durations-tabulated~ ali ~M-x benchmark-init/show-durations-tree~
|
|
|
|
#+begin_src emacs-lisp
|
|
(use-package benchmark-init
|
|
:config
|
|
;; To disable collection of benchmark data after init is done.
|
|
(add-hook 'after-init-hook 'benchmark-init/deactivate))
|
|
#+end_src
|
|
|
|
** EVIL
|
|
|
|
Ta sekcija vsebuje razne konfiguracije povezane z ~evil-mode~ - modalnim načino editiranja, podobnim vi/vim urejevalnikom.
|
|
|
|
Vklopi evil mode!
|
|
|
|
#+begin_src emacs-lisp
|
|
(setq evil-want-integration t
|
|
evil-want-keybinding nil)
|
|
;org-return-follows-link t
|
|
(require 'evil)
|
|
(evil-mode 1)
|
|
#+end_src
|
|
|
|
Paket ~evil-collection~ pa vsebuje še dodatne evil bližnjice (recimo za ~help-mode~, ~eshell~ in tako dalje).
|
|
|
|
|
|
#+begin_src emacs-lisp
|
|
(use-package evil-collection
|
|
:after evil
|
|
:config
|
|
(evil-collection-init))
|
|
#+end_src
|
|
|
|
** Vezane tipke
|
|
|
|
S paketom ~general~ je definiranih več kategorij tipkovničnih bližnjic, ki so združene po svoji funkciji, podobno kot poglavja tega dokumenta. Če v ukaznem načinu kliknemo ~SPC~ (ali pa v tekstovnem načinu ~C-SPC~), se nam prikažejo tipke kategorij, po kliku na posamezno pa ukazi, ki jih sprožimo (ali pa podkategorije).
|
|
|
|
V sledečim podpoglavjih so navedene kategorije posameznih bližnjic.
|
|
|
|
#+begin_src emacs-lisp
|
|
(setq kategorije-bliznjic '())
|
|
|
|
(use-package general
|
|
:defer t
|
|
:config
|
|
(general-evil-setup)
|
|
|
|
;; Leader key nastavitev (za prozenje ukazov)
|
|
(general-create-definer start/leader-keys
|
|
:states '(normal insert visual emacs)
|
|
:keymaps 'override
|
|
:prefix "SPC"
|
|
:global-prefix "C-SPC")
|
|
#+end_src
|
|
|
|
|
|
*** Splošne bližnice
|
|
|
|
Tukaj se nahajate samo bližnjici za preklop med bufferji (kako bi to lepo prevedli?).
|
|
|
|
#+begin_src emacs-lisp
|
|
(start/leader-keys
|
|
;; Osnovne bliznjice
|
|
"[" 'previous-buffer
|
|
"]" 'next-buffer)
|
|
#+end_src
|
|
|
|
*** Upravljanje z okni
|
|
|
|
Navigacijo med okni izvajamo s klasičnimi HJKL UNIX smernimi tipkami, recimo okno pod trenutnim izberemo s ~SPC w j~. Posamezno okno pa lahko razdvojimo vertikalno ali horizontalno s ~SPC w v~ oz. ~SPC w s~. ~SPC w d~ "ubije" trenutni buffer in okno.
|
|
|
|
#+begin_src emacs-lisp
|
|
(start/leader-keys
|
|
"w" '(:ignore t :wk "window")
|
|
"w j" 'windmove-down
|
|
"w k" 'windmove-up
|
|
"w h" 'windmove-left
|
|
"w l" 'windmove-right
|
|
"w s" 'split-window-below
|
|
"w v" 'split-window-right
|
|
"w d" 'kill-buffer-and-window)
|
|
#+end_src
|
|
|
|
*** Upravljanje z bufferji
|
|
|
|
TODO napiši navodila
|
|
|
|
#+begin_src emacs-lisp
|
|
(defun nalozi-konfiguracijo () (interactive) (find-file "~/.emacs.d/config.org"))
|
|
(start/leader-keys
|
|
"b" '(:ignore t :wk "buffer")
|
|
"b b" 'switch-to-buffer
|
|
"b p" 'previous-buffer
|
|
"b n" 'next-buffer
|
|
"b e" 'eval-buffer
|
|
"b s" (defun scratch-buffer () "Show scratch buffer" (interactive) (switch-to-buffer "*scratch*"))
|
|
"b c" 'load-config
|
|
"b d" 'kill-current-buffer
|
|
"b k" 'kill-buffer)
|
|
#+end_src
|
|
|
|
|
|
*** Evalviranje
|
|
|
|
TODO napiši navodila
|
|
|
|
#+begin_src emacs-lisp
|
|
(add-to-list 'kategorije-bliznjic (lambda ()
|
|
(start/leader-keys
|
|
;; EVAL ukazi
|
|
"e" '(:ignore t :wk "eval")
|
|
"e b" 'eval-buffer
|
|
"e e" 'eval-expression
|
|
"e r" 'eval-region)))
|
|
#+end_src
|
|
|
|
*** Datoteke
|
|
|
|
TODO napiši navodila
|
|
|
|
#+begin_src emacs-lisp
|
|
(add-to-list 'kategorije-bliznjic (lambda ()
|
|
(start/leader-keys
|
|
"f" '(:ignore t :wk "file")
|
|
"f f" 'counsel-find-file
|
|
"f c" 'load-config)))
|
|
#+end_src
|
|
|
|
*** Vplogled / introspekcija
|
|
|
|
Emacs nudi kup uporabnih funkcij, ki so nepogrešljive na poti učenja o funkcionalnosti. Zaenkrat sem definiral bližnjice do štirih od njih; opis funkcije, tipke, simbola (to so recimo rezervirana imena spremenljivk), načina (~mode~).
|
|
|
|
#+begin_src emacs-lisp
|
|
(add-to-list 'kategorije-bliznjic (lambda ()
|
|
(start/leader-keys
|
|
"d" '(:ignore :t :wk "describe")
|
|
"d f" 'describe-function
|
|
"d k" 'describe-key
|
|
"d s" 'describe-symbol
|
|
"d m" 'describe-mode)))
|
|
#+end_src
|
|
|
|
*** Konec
|
|
|
|
Dodamo manjkajoči zaklepaj. :)
|
|
To pa je malo grdo pri pismenem programiranju.
|
|
|
|
#+begin_src emacs-lisp
|
|
)
|
|
#+end_src
|
|
|
|
** Zaključek
|