(Chapa 1)


Eev and Customize

I never liked Emacs's M-x customize. I always found it very hard to understand, for exactly the same reasons that I find Org very hard to understand. The support for Customize in eev is quite minimal - basically `M-h M-h' knows how to handle Customize buffers, and it can generate links like this one,

# (find-customizegroup 'faces)

that point to a certain Customize buffer - but eev doesn't have functions to display the variables associated to a certain "customization group" yet.


Eev contains several "experimental alternatives to customize". The oldest, and simplest, of these experiments, is from 2005: we can change the value of the variable `ee-hyperlink-prefix' by running `M-x ee-hyperlink-prefix'; note that this runs a command that has the same name as a variable. `M-x ee-hyperlink-prefix' creates a temporary buffer like the one in the screenshot below, in which the `setq' in the second line contains the current value of the variable, and the other setqs contain other common values.


In 2021 and 2022 I added to eev these four customization functions:

1. find-red-star-links (screenshot, defun)
2. find-angg-es-links (screenshot, defun, page, video)
3. find-newbrowser-links (screenshot, defun)
4. find-newpdfviewer-links (screenshot, defun)

They are "5-minute hacks", in the sense of my presentation at the EmacsConf2020; the only extra trick is that they are written using `find-elinks-elisp' instead of `find-elinks'; `find-elinks-elisp' puts the temporary buffer in emacs-lisp mode. For more info on "5-minute hacks" see the other video that I prepared for the EmacsConf2020, and the indexes for the main video and for the other one. Click on the thumbnails below to see full-sized screenshots:

The standard "customize" is intended to be used in this way: we navigate through the customization buffers pressing lots of magic buttons - that I never understood well because I'm a very bad user - and the buttons that say "Save for Future Sessions" save some settings in our ~/.emacs or in our custom-file.

My eev-ish alternatives to "customize" are intended to be used in two different ways. If people are willing to chat with me - usually via IRC of Telegram - then I'll diagnose their problems, run one of the functions that I've described above - for example, `find-newbrowser-links' -, cherry-pick some lines from the temporary buffer, send to the person a small chunk of elisp code like this,

;; Generated with:
;; (find-newbrowser-links "g" "iceweasel" "iceweasel-uxp")
(defun find-iceweasel (url &rest rest)
  (find-bgprocess `("iceweasel-uxp" ,url)))
(code-brurl 'find-iceweasel  :remote 'brg  :local 'brgl  :dired 'brgd)
;; Test: (brg "http://www.lua.org/start.html")

and say: put that in your ~/.emacs, and when you want to understand the details run the sexp after the "Generated with:"... and ta-da, problem solved in just a few minutes. The second way is for people who don't want to chat: they can run things like `M-x find-newbrowser-links' themselves, spend some hours or days or weeks following the links and running the tests in comments, and then they'll find the right solutions and modify their "~/.emacs"s themselves.

Note that many "configurations" in eev are done by redefining functions. This only works well because functions in eev are not byte-compiled.

I finished the page above in 2022-04-04, and in the same day it was announced in Emacs News.
Later in the same month I started to work on eev-wconfig.el.