Legg til idémylding til utgangspunkt for samtale
This commit is contained in:
parent
4bdb1e429c
commit
67392fb4ed
349
idemyldring.org
Normal file
349
idemyldring.org
Normal file
@ -0,0 +1,349 @@
|
|||||||
|
#+PROPERTY: header-args:emacs-lisp :noweb yes
|
||||||
|
|
||||||
|
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= (=#'=)?
|
||||||
|
+ 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.
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp :tangle init-forslag.el
|
||||||
|
;;; 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
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* Grunnleggende
|
||||||
|
:PROPERTIES:
|
||||||
|
:header-args:emacs-lisp: :noweb-ref grunnleggende
|
||||||
|
:END:
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
;; 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)
|
||||||
|
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
Vi bør kanskje gi en kort forklaring av hva custom gjør: Holder på enkelte
|
||||||
|
verdier mellom sessions. Vi
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(setq custom-file (expand-file-name "custom.el" user-emacs-directory))
|
||||||
|
|
||||||
|
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Oppsett for pakker
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
;;;; Installering av tredjepartspakker
|
||||||
|
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
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 ...
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(require 'package)
|
||||||
|
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
|
||||||
|
(unless package-archive-contents
|
||||||
|
(package-refresh-contents))
|
||||||
|
(package-initialize)
|
||||||
|
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
*** ~use-package~
|
||||||
|
|
||||||
|
Konfig-generatoren har denne tingen med, og en liten forklaring som dette er
|
||||||
|
betraktelig vennligere for en nybegynner enn [[help:use-package][dokumentasjonen]] ...
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
;; (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
|
||||||
|
|
||||||
|
** Oppsett for egen elisp
|
||||||
|
|
||||||
|
Hvis de skriver egen LISP, bør vi kanskje ha med dette så kompilering ikke
|
||||||
|
forvirrer resultatet ...
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(setq load-prefer-newer t)
|
||||||
|
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Tema
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
;;;; Tema og farger
|
||||||
|
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
Det er nok en god idé å installere begge tema så det er raskere å bytte mellom.
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
;; 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)
|
||||||
|
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** GUI-elementer
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
;;;; GUI-elementer
|
||||||
|
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
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 ...
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
;; 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)
|
||||||
|
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* Filer og buffere
|
||||||
|
:PROPERTIES:
|
||||||
|
:header-args:emacs-lisp: :noweb-ref filer-og-buffere
|
||||||
|
:END:
|
||||||
|
|
||||||
|
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=.
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
;; For at Emacs skal huske hvor peker var da du sist lukket en fil.
|
||||||
|
(save-place-mode)
|
||||||
|
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
Uten ~consult-buffer~, må kommandoen ~recentf~ brukes, og den er ikke bundet til noe.
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(recentf-mode)
|
||||||
|
(setq recentf-max-saved-items 199
|
||||||
|
recentf-auto-cleanup 300)
|
||||||
|
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
~ffap~ (/find-file-at-point/) gjør at ~find-file~ med peker på et filnavn bruker
|
||||||
|
det filnavnet som default.
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
;; Med dette vil Emacs hvis peker er på et filnavn når du bruker
|
||||||
|
;; `find-file-at-point', foreslå å åpne den filen.
|
||||||
|
(ffap-bindings)
|
||||||
|
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** 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.
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(keymap-set ctl-x-x-map "R" #'rename-visited-file)
|
||||||
|
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
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=.
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(setq uniquify-buffer-name-style 'post-forward
|
||||||
|
uniquify-strip-common-suffix t
|
||||||
|
uniquify-separator " |"
|
||||||
|
uniquify-after-kill-buffer-p t
|
||||||
|
uniquify-ignore-buffers-re "^\\*")
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Auto-revert og lock-files
|
||||||
|
|
||||||
|
Hvordan vi håndterer auto-revert avhenger vel litt av hvordan vi presenterer
|
||||||
|
"lockfiles". "Lockfiles" er noe som forvirrer
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(global-auto-revert-mode)
|
||||||
|
(setq global-auto-revert-non-file-buffers t
|
||||||
|
create-lockfiles nil)
|
||||||
|
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** 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 ...
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
backup-directory-alist `(("." . ,(locate-user-emacs-file "backups")))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* Hjelp og dokumentasjon
|
||||||
|
:PROPERTIES:
|
||||||
|
:header-args:emacs-lisp: :noweb-ref docs
|
||||||
|
:END:
|
||||||
|
|
||||||
|
Jeg tenker det er viktig at vi får frem Emacs' /selvdokumenterende natur/.
|
||||||
|
|
||||||
|
** which-key og tastetrykk
|
||||||
|
|
||||||
|
~which-key~ er innebygd fra og med [[file:~/src/share/emacs/31.0.50/etc/NEWS.30::New package 'which-key'.][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.
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(setq which-key-show-early-on-C-h t
|
||||||
|
which-key-idle-delay 600)
|
||||||
|
(setq echo-keystrokes 0.1)
|
||||||
|
(setq echo-keystrokes-help nil)
|
||||||
|
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
|
||||||
|
** 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
|
||||||
|
:PROPERTIES:
|
||||||
|
:header-args:emacs-lisp: :noweb-ref lisp
|
||||||
|
:END:
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
;; Automatically insert closing parens
|
||||||
|
(electric-pair-mode)
|
||||||
|
|
||||||
|
;; Visualize matching parens
|
||||||
|
(show-paren-mode 1)
|
||||||
|
;; (setq show-paren-delay 0
|
||||||
|
;; show-paren-style 'parenthesis)
|
||||||
|
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* Generelt for prog-mode
|
||||||
|
:PROPERTIES:
|
||||||
|
:header-args:emacs-lisp: :noweb-ref prog-mode
|
||||||
|
:END:
|
||||||
|
|
||||||
|
Bør få med:
|
||||||
|
+ ~corfu~
|
||||||
|
+ ~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.
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(setq display-line-numbers-type t)
|
||||||
|
;; (setq display-line-numbers-type 'relative)
|
||||||
|
(add-hook 'prog-mode-hook #'display-line-numbers-mode)
|
||||||
|
|
||||||
|
#+end_src
|
Loading…
Reference in New Issue
Block a user