From 67392fb4ed48f02b1a0f740a945c2784eeaeb940 Mon Sep 17 00:00:00 2001 From: idun Date: Thu, 12 Sep 2024 08:14:03 +0200 Subject: [PATCH] =?UTF-8?q?Legg=20til=20id=C3=A9mylding=20til=20utgangspun?= =?UTF-8?q?kt=20for=20samtale?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- idemyldring.org | 349 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 349 insertions(+) create mode 100644 idemyldring.org diff --git a/idemyldring.org b/idemyldring.org new file mode 100644 index 0000000..0cc6bbe --- /dev/null +++ b/idemyldring.org @@ -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 + +<> + + +;;; Filer og buffere + +<> + + +;;; Hjelp og dokumentasjon + +<> + + +;;; LISP + +<> + + +;;; Annen programmering + +<> + +;;; 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