emacskurs/init.org
2024-09-25 13:47:26 +02:00

234 lines
5.1 KiB
Org Mode
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#+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
* Tips
+ Det er lurt å forstå alt som legges inn i konfigurasjonsfilen
+ Du kan oppdatere Emacs under kjøring
+ Bruk =C-x C-e= for å evaluere et uttrykket bak pekeren
+ Bruk =M-x eval-buffer= for å evaluere hele filen
+ En konfigurasjonsfil bør være /idempotent/!
+ Det vil si at det er trygt å evaluere den flere ganger
* 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