srečanje emacs.si skupnosti #45

Table of Contents

Čas: [2026-10-12 pon]

Prisotni: moe, miha, g1smo, lio

1. autosave

restore-session nekak ne dela liotu. Auto Save (GNU Emacs Manual)

Moe uporablja to: help:recover-this-file za vsako datoteko posebej.

g1smo: ima nastavljen skupen autosave directory znotraj .emacs.d namesto lokacije fajlov.

(setq backup-directory-alist `(("." . ,(concat user-emacs-directory "saves")))

Trenutno nanesejo dobrega pol GB v 1887 fajlih. Približno zadnjih 5 let.

Še nekaj drugih povezanih nastavitev:

(setq backup-by-copying t
      delete-old-versions t
      kept-new-versions 6
      kept-old-versions 2
      version-control t)

2. elisp funkcij v tabelah

Uglavnm, vsak mesec moram napisat porocilo, kaj sem delal za NGI0 in oddat preglednico po dnevih. In to bi rad avtomatiziral. Verjetno rabim org-capture-template, ki ima nastavljeno tabelo, s prvim dnem v mesecu. Se pravi, ce je 1. v mesecu delovni dan, potem bi bila ta vrednost vnesena v tabelo, ce pa ne, potem pa bi bil prvi ponedeljek v mesecu. Druga stvar so pa potem formule na tabeli, ki preracunajo naslednji dan (glej codeblock spodaj). Ceprav, zdaj vidim, da imam edge case, ce delam cez vikend.

(defun ngi0-first-date (&optional month year)
  "Return first date of the month"
  ;; pustimo to zaenkrat
    )

(defun ngi0-report-date (previous)
  "Based on PREVIOUS day return current date."
  (let* ((days '("Mon" "Tue" "Wed" "Thu" "Fri"))
         (remaining (drop-while (lambda (x) (not (equal x previous))) days))
         )
    (if (member previous days)
        (if (null (cdr remaining))
            "Mon" ;; Also needs a check if previous is Fri.
          (car (cdr remaining))
          )
      (error "Parameter should be one of the working days: Mon, Tue, Wed, Thu or Fri! `%s' provided." previous)
      )
    )
  )

(defun ngi0-report-day (previous last-day)
  "Skip two days for weekend if LAST-DAY is Friday, otherwise return next integer to PREVIOUS."
  (if (not (numberp previous))
      (error "Parameter PREVIOUS should be a number"))
  (let ((days '("Mon" "Tue" "Wed" "Thu" "Fri")))
    (if (member last-day days)
        (if (equal last-day "Fri")
            (+ previous 3)
          (+ previous 1)
            )
      (error "Parameter LAST-DAY should be one of the working days: Mon, Tue, Wed, Thu or Fri! `%s' provided." last-day)
        )
    )
  )

3. Org mode kot interaktivni kalkulator

Iz tabele lahko peljemo posamezne podatke naprej mmed bloki elisp kode. Podatki se med bloki prenašajo kot spremenljivke zaglavja (header arguments variables). Referenciramo lahko tudi posamezno celico v tabeli, kar omogoča uporabo kot je prikazana spodaj.

Evaluacija celotnega bufferja se izvede s C-c C-v C-b.

#+name: data-tab
| loan amount  |  230000 |
| down payment |  100000 |
| loan monthly | 1374.64 |
| rent         |    1000 |
| apr          |    0.03 |

C-c C-v C-b to execute all

#+name: property-value
#+begin_src elisp :var down=data-tab[1,1] :var loan=data-tab[0,1]
  (+ down loan)
#+end_src

#+RESULTS: property-value
: 330000

A loan constant is a percentage that shows the annual debt service
#+name: loan-const
#+begin_src elisp :var loan-monthly=data-tab[2,1] :var loan-amount=data-tab[0,1]
  (/ (* 12 loan-monthly)
     loan-amount)
#+end_src

#+RESULTS: loan-const
: 0.07172034782608695

Rent plus appreciation
#+name: internal-profit
#+begin_src elisp :var rent=data-tab[3,1] :var value=property-value :var apr=data-tab[4,1]
  (+ (* 12 rent)
     (* value apr))
#+end_src

#+RESULTS: internal-profit
: 21900.0

#+begin_src elisp :var monthly=data-tab[2,1] :var down=data-tab[1,1] :var profit=internal-profit
    (/ (- profit (* 12 monthly)) down)
#+end_src

#+RESULTS:
: 0.0540432

Profitability in case of buying.

4. Org package archive

g1smo: Opazil sem, da se mi kdaj emacs na čuden način pokvari. Nedavno sem spoznal, da je problem v vključevanju org package arhiva:

(add-to-list 'package-archives '("org" . "https://orgmode.org/elpa/") t)

Nekoč v preteklosti je morda bil aktualen ali pa je še za kaj uporaben. Točneje: Arhiv Org ELPA je bil opuščen v Org v9.5 in stran, ki kaže nanj, je bila potem odstranjena l. 2024. Čeprav ni več nobenih uradnih navodil, vi ta arhiv navajajo, kaže, da je še na voljo.

se pa zgodi da pri posodobitvi paketov zlouda star orgmode kot dependency - pride do problema večih orgmode verzij vzporedno.

V list-packages recimo se pojavi:

org                            20210929       available    org      Outline-based notes management and organizer

Že pred časom je bil elpa arhiv org proglašen za opuščenega, vendar še vedno deluje. Treba pazit na tole.

(org-version)

5. random

5.1. guix - network manager povezave brez sudo

Treba je polkit med service definicije v /etc/config.scm:

(services
 (cons*

  .....

  ;; Urejanje NM povezav dovoljeno za člane grupe "netdev"
  (simple-service 'polkit-network polkit-service-type (list polkit-network))

  %katerikoli-ze-services))

Mora pa biti user za možnost povezovanja v netdev skupini:

(users
 (cons*
  (user-account
   (name "jelen")
   ...
   (supplementary-groups
    '(... "netdev"))
   ...
   )))

5.2. guix - GUI za printanje

Obstaja system-config-printer, dost fajn GTK gui za upravljanje s tiskalniki.

Author: Yuri

Created: 2026-10-13 tor 00:20

Validate