#+TITLE: Konfigurer din egen Emacs! #+EMAIL: larstvei@ifi.uio.no * Installer Emacs + Følg de offisielle instruksjonene + https://www.gnu.org/software/emacs/download.html * Finn konfigurasjonsfilen + Emacs leter etter en Emacs Lisp fil den kan kjøre ved oppstart + =~/.emacs.el= (få bruker dette) + =~/.emacs= + =~/.emacs.d/init.el= + I den rekkefølgen + Se https://www.gnu.org/software/emacs/manual/html_node/emacs/Find-Init.html + For Windows + https://www.gnu.org/software/emacs/manual/html_node/emacs/Windows-HOME.html * Sette variabler + Enkle konfigurasjoner gjøres ved å sette variabler + Få en mindre bråkete velkomst #+begin_src emacs-lisp :tangle yes ;; Dette fjerner velkomstskjermen ved oppstart av Emacs. (setq inhibit-splash-screen t) #+end_src + Gi korte svar når Emacs ber om input #+begin_src emacs-lisp :tangle yes ;; Emacs ber deg iblant svare "yes" eller "no". Dette gjør at Emacs ;; nøyer seg med "y" eller "n". (setq use-short-answers t) #+end_src * Mindre distraksjoner ved å skru av modes + En blinkende peker blir fort gammelt #+begin_src emacs-lisp :tangle yes ;; Skru av blinkende peker. (blink-cursor-mode 0) #+end_src + Andre GUI-elementer er også lite nyttig i et tastaturdrevet program! #+begin_src emacs-lisp :tangle yes ;; Disse skrur av diverse GUI-elementer. (menu-bar-mode 0) (tool-bar-mode 0) (scroll-bar-mode 0) #+end_src * Auto-revert + Vanligvis vil ikke Emacs automatisk oppdatere innholdet i et buffer når filen endrer seg + I tillegg lagrer den «lås-filer» for å unngå at to programmer jobber på samme fil + Det kan være litt forvirrende, så la oss endre det #+begin_src emacs-lisp :tangle yes (global-auto-revert-mode) (setq global-auto-revert-non-file-buffers t create-lockfiles nil) #+end_src * Backup-filer + Emacs liker å lagre backupfiler, som kan være litt forkludrende + La oss gjemme de vekk #+begin_src emacs-lisp :tangle yes (setq backup-directory-alist `(("." . ,(locate-user-emacs-file "backups")))) #+end_src * Pakker + Det finnes utrolig mange pakker til Emacs + Legg til dette for å få tilgang til flere tusen pakker! #+begin_src emacs-lisp :tangle yes (require 'package) (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/")) #+end_src + Den enkleste måten å ta i bruk en pakke er med =use-package= #+begin_src emacs-lisp :tangle yes ;; (use-package my-package-name ;; :ensure t ; Ensure my-package is installed ;; :after foo ; Load my-package after foo is loaded (seldom used) ;; :init ; Run this code before my-package is loaded ;; :bind ; Bind these keys to these functions ;; :custom ; Set these variables ;; :config ; Run this code after my-package is loaded #+end_src * Vertikalt minubuffer + Pakken =vertigo= gir en mer oversiktlig måte å interagere med minibufferet #+begin_src emacs-lisp :tangle yes ;; VERTical Interactive COmpletion (use-package vertico :ensure t :config (setq vertico-count 25) (vertico-mode 1)) #+end_src * Husk tidligere kommandoer + =savehist-mode= gjør at kommandoer du brukte nylig vises først #+begin_src emacs-lisp :tangle yes ;; Save minibuffer history (use-package savehist :config (savehist-mode 1)) #+end_src * Navigering og søking + Pakken =consult= forbedrer mange kommandoer når du skal navigere og søke #+begin_src emacs-lisp :tangle yes (use-package consult :ensure t :bind ("C-x b" . consult-buffer) :config (setq consult-preview-key (list :debounce 0.1 'any))) #+end_src * Tidligere besøkte filer + Emacs har såklart en mode for å tilgjengeliggjøre nylig besøkte filer #+begin_src emacs-lisp :tangle yes (recentf-mode t) (setq recentf-max-saved-items 1000) #+end_src * Which-key + =which-key= er en pakke som hjelper deg finne tastekombinasjoner #+begin_src emacs-lisp :tangle yes ;; Display available keybindings in popup (use-package which-key :ensure t :config (which-key-mode 1)) #+end_src * Fargetema! + Du kan Style emacs som du vil + Se https://emacsthemes.com/ + Pakken =ef-themes= har mange gode fargetemaer #+begin_src emacs-lisp :tangle yes (use-package ef-themes :ensure t :config (ef-themes-select 'ef-light)) #+end_src + Bruk =M-x consult-theme= for å teste ut ulike fargetemaer! * Programmering + /Noen/ liker linjenummere #+begin_src emacs-lisp :tangle yes (add-hook 'prog-mode-hook 'display-line-numbers-mode) #+end_src + /Noen/ liker også relative linjenummere #+begin_src emacs-lisp :tangle yes (setq display-line-numbers-type t) #+end_src + /Alle/ liker å se hvor en parentes starter og slutter #+begin_src emacs-lisp :tangle yes (show-paren-mode 1) #+end_src