9.0 KiB
- Tanker og noter
- Filen selv
- Grunnleggende
- Filer og buffere
- Hjelp og dokumentasjon
- LISP
- Generelt for prog-mode
Jeg har brukt Org for å kunne beskrive tanker og idéer uten kludrete
kommentarer.
Tanker og noter
- For å la det føles naturlig å gå inn og legge til eller endre, er nok naturlige inndelinger viktig.
- Skal vi utforme
early-init.el
òg? -
Skal vi anbefale dem å kompilere
init.el
?- Skal vi i så fall nevne
sharpquote
(#'
)?
- Skal vi i så fall nevne
-
Bør vi anbefale
consult
?consult-theme
gjør det enkelt å raskt bytte mellom tema. Det kan gi et godt førsteinntrykk …consult-buffer
,consult-line
,consult-imenu
…
vertico
og ~marginalia~(?) må finne sin plass.-
Samspillet mellom deamon, auto-revert og lockfiles
- lockfiles blir nok et forvirringsmoment (de var det for meg)
-
Bør vi se etter en subtil måte å sette indenteringspreferanser på?
- Tab som default
- Mellomrom i LISP
Filen selv
Jeg har forsøkt å bruke inndelinger og kalle package-install
eller
use-pacakge
ved hver inndeling i stedet for å hope dem opp på ett sted, så får
de mer innsikt i hvordan ting henger sammen, og det blir lettere å finne ting.
;;; init-forslag.el -- Forslag til init.el -*- lexical-binding: t -*-
;; Noen info om filens opphav.
;; - Hvem som skrev + epost?
;; - Lenke til repoet så de kan finne det igjen.
;;; Commentary:
;; Sammenfatting av hva vi har tatt med, og kort om hva vi har
;; vektlagt. Vi kan nevne her at vi legger vekt på IN2040.
;;; Code:
;;; Grunnleggende oppsett
<<grunnleggende>>
;;; Filer og buffere
<<filer-og-buffere>>
;;; Hjelp og dokumentasjon
<<docs>>
;;; LISP
<<lisp>>
;;; Annen programmering
<<prog-mode>>
;;; init-forslag.el ends here
Grunnleggende
Her har jeg lagt inn ting som gjelder Emacs fremfor programmering. Overskriften
bør kasnkje byttes, for det er ikke usannsynlig at det er her consult
kan høre
hjemme.
;; Emacs ber deg iblant svare "yes" eller "no". Dette gjør at Emacs
;; nøyer seg med "y" eller "n".
(fset 'yes-or-no-p 'y-or-n-p)
;; Dette fjerner velkomstskjermen ved oppstart av Emacs.
(setq inhibit-splash-screen t)
Vi bør kanskje gi en kort forklaring av hva custom gjør: Holder på enkelte verdier mellom sessions. Vi
(setq custom-file (expand-file-name "custom.el" user-emacs-directory))
Oppsett for pakker
;;;; Installering av tredjepartspakker
Jeg har aldri brukt package.el
eller use-package
(har alltid håndtert ting
manuelt og byttet nylig til straight.el
)
package-initialize
er autoloaded, så vi trenger ikke (require 'package)
.
Det kan ha pedagogisk hensikt å inkludere, da, for autoload er et konsept som
ikke alltid føles naturlig …
(require 'package)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
(unless package-archive-contents
(package-refresh-contents))
(package-initialize)
use-package
Konfig-generatoren har denne tingen med, og en liten forklaring som dette er betraktelig vennligere for en nybegynner enn dokumentasjonen …
;; (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
Oppsett for egen elisp
Hvis de skriver egen LISP, bør vi kanskje ha med dette så kompilering ikke forvirrer resultatet …
(setq load-prefer-newer t)
Tema
;;;; Tema og farger
Det er nok en god idé å installere begge tema så det er raskere å bytte mellom.
;; Vi har foreslått et mørkt og et lyst tema:
(package-install 'monokai-theme)
(package-install 'leuven-theme)
;; Avkommenter for å bruke foreslått mørkt tema:
;; (load-theme 'monokai t)
;; Avkommenter for å bruke foreslått lyst tema:
;; (load-theme 'leuven t)
GUI-elementer
;;;; GUI-elementer
Jeg er enig i at scroll-, tool- og menu-bar bør skrus av. Jeg er veldig enig i
at blink-cursor-mode
bør være av for menneskets velbehag, men har merket av
folk har sterkere meninger der. Jeg tenker at vi foreslår det …
;; Skru av blinkende peker.
(blink-cursor-mode 0)
;; Disse skrur av diverse GUI-elementer.
(menu-bar-mode 0)
(tool-bar-mode 0)
(scroll-bar-mode 0)
Filer og buffere
Her må vi vurdere hvor mye vi vil ha med. Jeg har lagt til recentf-mode
, men
vi kan vurdere consult-buffer
, ibuffer
og project.el
.
;; For at Emacs skal huske hvor peker var da du sist lukket en fil.
(save-place-mode)
Uten consult-buffer
, må kommandoen recentf
brukes, og den er ikke bundet til noe.
(recentf-mode)
(setq recentf-max-saved-items 199
recentf-auto-cleanup 300)
ffap
(find-file-at-point) gjør at find-file
med peker på et filnavn bruker
det filnavnet som default.
;; Med dette vil Emacs hvis peker er på et filnavn når du bruker
;; `find-file-at-point', foreslå å åpne den filen.
(ffap-bindings)
Navn på filer og buffere
Er det en god idé å gi dem en tast til å gi en fil de besøker nytt navn? Jeg husker at jeg lette en del etter noe slikt da jeg begynte.
(keymap-set ctl-x-x-map "R" #'rename-visited-file)
Uniquify gjør det lettere å se forskjell på buffere med samme navn. Jeg har
tatt med instillingene fra min egen config. De gir formatet
buffernavn |kontekst
.
(setq uniquify-buffer-name-style 'post-forward
uniquify-strip-common-suffix t
uniquify-separator " |"
uniquify-after-kill-buffer-p t
uniquify-ignore-buffers-re "^\\*")
Auto-revert og lock-files
Hvordan vi håndterer auto-revert avhenger vel litt av hvordan vi presenterer "lockfiles". "Lockfiles" er noe som forvirrer
(global-auto-revert-mode)
(setq global-auto-revert-non-file-buffers t
create-lockfiles nil)
Backups
Jeg tenker at vi ikke snakker for mye om backups, men kanskje legger inn denne linjen, for backups legges per default inn i samme mappen som filen, og det kan være like plagsomt som det føles rotete …
backup-directory-alist `(("." . ,(locate-user-emacs-file "backups")))
Hjelp og dokumentasjon
Jeg tenker det er viktig at vi får frem Emacs' selvdokumenterende natur.
which-key og tastetrykk
which-key
er innebygd fra og med Emacs 30. Hvis vi skal ha det med, foreslår
jeg denne kombinajonen av innstillinger for which-key
og echo-keystrokes
for
å gi et responsivt, men ikke bråkete inntrykk, og med which-key
alltid lett
tilgjengelig for oversikt.
(setq which-key-show-early-on-C-h t
which-key-idle-delay 600)
(setq echo-keystrokes 0.1)
(setq echo-keystrokes-help nil)
Helpful
Jeg tror det kan være en god idé å bruke helpful
, for informasjonen det gir,
tydeliggjør at Emacs er satt sammen av funksjoner og variable vi kan fly rundt
og skrive om. Når jeg selv hacker på Emacs, er nesten all kildekodeinteraksjon
gjennom helpful …
Helpful har dessuten en liste av keymaps hver kommando er bundet til. Generelt gjør helpful Emacs veldig transparent. :D
Jeg tenker at det er en god idé å binde disse til taster:
helpful-callable
help-variable
helpful-symbol
helpful-key
helpful-at-point
helpful-at-point
har jeg selv stor glede av …
LISP
Vi bør nok separere Scheme og elisp, men dette gjelder for begge. Paredit kan
være noe stort for en introduksjon, men electric-pair-mode
lar oss det minste
sette inn balanserte par.
;; Automatically insert closing parens
(electric-pair-mode)
;; Visualize matching parens
(show-paren-mode 1)
;; (setq show-paren-delay 0
;; show-paren-style 'parenthesis)
Generelt for prog-mode
Bør få med:
-
corfu
kind-icon
(virker det på non-u*ix?)
eglot
Det er sikkert noen som vil ha linjenummer i margen. Folk som kommer fra vim
,
har jeg inntrykk av at pleier å ville ha relative tall på talllinjen.
(setq display-line-numbers-type t)
;; (setq display-line-numbers-type 'relative)
(add-hook 'prog-mode-hook #'display-line-numbers-mode)