Chapa 1)


Eev-wconfig.el: configuring eev on M$ Windows without magic

The index of the video is here.
The text that I used as a "script" for the video is here.
Slides for my talk at the EmacsConf2019: (find-emacsconf2019page)
See also: http://anggtwu.net/#eev
You can read the subtitles here.

0. Introduction

Let's start with a slogan:

"Any sufficiently advanced technology is indistinguishable from magic"

In this page I will use the term "magic" as a shorthand for a "sufficiently advanced technology", i.e., something complex and non-obvious, "that is indistinguishable from magic", in the sense of being almost impossible to understand. I will also use "black box" as a near-synonym for "magic"; "black box" has more letters than "magic", but it invites us to use expressions like "opening the black box".

The standard way to configure things in Emacs is with M-x customize - that has too much "magic" for me, and that has too many black boxes that I don't know how to open... for example, buttons. This page, from april/2022, describes some of my experiments in trying to make parts of eev configurable "with less magic". What I am going to describe here is another experiment: eev-wconfig.el, that became ready in may/2022.

Note that one of the parts of my presentation at the EmacsConf2020 was about alternatives "with no black boxes" to the main help commands of Emacs. You can access it here:

(find-1stclassvideoindex "eev2020")
(find-eev2020video "29:39" "2. A tale of two `describe-key's")
(find-eev2020video "30:24"   "the standard `describe-key'")
(find-eev2020video "30:40"   "their targets are not visible")
(find-eev2020video "31:31"   "the problem with the standard `describe-key': TARGET")
(find-eev2020video "32:05"   "inspect text properties")
(find-eev2020video "33:50"   "find-ebufferandpos")
(find-eev2020video "35:07"   "My variant: `find-ekey-links'")
(find-eev2020video "37:00"   "how `find-ekey-links' generates its links")
(find-eev2020video "37:14"   "hacker-friendly in the way that I wanted")

Making eev work fully on M$ Windows used to be nightmarishly hard. Here is another famous quote (taken from here):

LISP is worth learning for a different reason - the profound enlightenment experience you will have when you finally get it. That experience will make you a better programmer for the rest of your days, even if you never actually use LISP itself a lot.

A Windows user who has never used Emacs or a *NIX-like system in his life can learn lots of life-, mind-, and soul-changing ideas by just installing Emacs and eev by following the instuctions here and here, and then playing with them a few hours... but everything will make sense much faster if the person can also set up the modules of eev that download local copies of videos and PDFs, and that access these local videos and PDFs - and this requires downloading some external programs, and configuring them.

The introduction of eev-wconfig.el explains that in this way:

;; Some parts of eev call external programs:
;;   (find-eev-quick-intro "3.1. Non-elisp hyperlinks")
;;   (find-eev-quick-intro "3.1. Non-elisp hyperlinks" "firefox")
;;   (find-eev-quick-intro "3.1. Non-elisp hyperlinks" "chrome")
;;   (find-eev-quick-intro "6.2. Other targets")
;;   (find-eev-quick-intro "6.2. Other targets" "python")
;;   (find-psne-intro "1. Local copies of files from the internet")
;;   (find-psne-intro "1. Local copies of files from the internet" "wget")
;;   (find-video-links-intro "1. Introduction")
;;   (find-video-links-intro "1. Introduction" "[Video links:]")
;;   (find-audiovideo-intro "4.3. A demo")
;;   (find-audiovideo-intro "4.3. A demo" "mpv")
;;   (find-pdf-like-intro "3. Hyperlinks to PDF files")
;;   (find-pdf-like-intro "3. Hyperlinks to PDF files" "xpdf")
;;   (find-pdf-like-intro "3. Hyperlinks to PDF files" "pdftotext")
;; On *NIX systems the installation of these programs is easy, and no
;; configuration is needed - if "firefox", "google-chrome", "python3",
;; "wget", "xpdf", "pdftotext", and "mpv" are in the path then eev
;; simply calls them with the right arguments, and (usually)
;; everything works.
;; On M$ Windows things are much harder: 1) eev needs to know the full
;; paths of the ".exe"s of these programs, 2) wget and pdftotext are
;; hard to install, 3) it is better to use a browser to open PDFs, 4)
;; I don't have access to a machine with Windows, 5) I have very
;; little access to people who use Windows and who can be convinced to
;; test this...
;; This file is an attempt to solve this problem both "without magic"
;; and "with very little magic". (...)

The easiest way to explain how the configuration "without magic" works is by screenshots. If we run `M-x find-wconfig-links' we get the temporary buffer in the first screenshot below; each of the `(find-wconfig-*-links)' sexps in the blue region is a "sub-wconfig" that we need to run to complete the configuration. The second screenshot below shows what we should have in our ~/.emacs after the configuration; each one of its five blocks is the end result of running one of five sub-wconfigs, and each of these five blocks starts with comments that include a line like this,

;; See: (find-wconfig-wget-links)

that "opens a black box" and shows where that block came from.

Some of these sub-wconfigs contain sections that only need to be run once. For example, the sections 1 and 2 of `(find-wconfig-wget-links)' - in the third screenshot above - contain code for downloading a version of wget for Windows and many other files from this directory, and to put these files in the directory ~/eev-wconfig/.

The source code of eev-wconfig.el is here. Introduction, usage.

1. The videos

I recorded three videos about eev-wconfig.el: one in English and two in Portuguese. The ones in Portuguese were recorded first, as a kind of a rehearsal for the one in English - the video in English is much better. Screenshots:

The videos are called:
(YT) "Eev-wconfig.el: a way without "magic" to configure eev on M$ Windows",
(YT) "Configuração sem mágica: um experimento com o eev (versão em Português)",
(YT) "Configuração sem mágica: um experimento com o eev (versão em Português, parte 2)".
You can watch them on youtube here by clicking on the (YT) links,
and you can download their .mp4s and subtitles with:

# See:  http://anggtwu.net/eev-videos.html
#       http://anggtwu.net/eev-videos.html#mpv-keys
# Play: (find-2022eevwconfigvideo "0:00")
# Info: (find-1stclassvideo-links "2022eevwconfig")
# Subs: (find-1stclassvideolsubs  "2022eevwconfig")

wget -nc http://anggtwu.net/eev-videos/2022-eev-wconfig.mp4
wget -N  http://anggtwu.net/eev-videos/2022-eev-wconfig.vtt
mpv --fs --osd-level=2 2022-eev-wconfig.mp4
# (find-video-links-intro "5. Local copies")
# (find-1stclassvideo-links "2022eevwconfigpt1")
# (find-1stclassvideoindex  "2022eevwconfigpt1")
wget -nc http://anggtwu.net/eev-videos/2022-eev-wconfig-pt-1.mp4
# (find-video-links-intro "5. Local copies")
# (find-1stclassvideo-links "2022eevwconfigpt2")
# (find-1stclassvideoindex  "2022eevwconfigpt2")
wget -nc http://anggtwu.net/eev-videos/2022-eev-wconfig-pt-2.mp4

The images that I used in the opening screens of the videos in Portuguese are stills from this episode of Sítio do Pica-Pau Amarelo. Most of the graphic design of the series was made by Rui de Oliveira; here is a text that he wrote about Cuca, the witch that was a cross between Baba Yaga, a tyranosaur, and a crocodile, and that was the villain of that arc of the series. The image that I used in the video in English is a still from "Gwen, or: The Book of Sand"; I also mentioned that movie in my video about the small elisp tutorial that comes with eev.

In 2022may22 I announced the eev-wconfig video on the Org mailing list. I got some angry feedback from Ihor Radchenko (who had been kind of "unkind" to me in the past, in a thread about this question); I answered this.

2. Exercise: Learn Org!

The video in English ends with an exercise, that is roughly this:

"...now use eev to learn Org Mode (with Rainer König's videos)!"

The README of the .zip file with the videos about Org is here,
and the .zip with all the videos can be downloaded from here.
Warning: the .zip is big - about 1.7GB.