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