|
Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
% (find-LATEX "2019emacsconf.tex")
% (defun c () (interactive) (find-LATEXsh "lualatex -record 2019emacsconf.tex" :end))
% (defun d () (interactive) (find-pdf-page "~/LATEX/2019emacsconf.pdf"))
% (defun d () (interactive) (find-pdftools-page "~/LATEX/2019emacsconf.pdf"))
% (defun e () (interactive) (find-LATEX "2019emacsconf.tex"))
% (defun u () (interactive) (find-latex-upload-links "2019emacsconf"))
% (setq revert-without-query '("pdf$"))
% (find-pdf-page "~/LATEX/2019emacsconf.pdf")
% (find-sh0 "cp -v ~/LATEX/2019emacsconf.pdf /tmp/")
% (find-sh0 "cp -v ~/LATEX/2019emacsconf.pdf /tmp/pen/")
% file:///home/edrx/LATEX/2019emacsconf.pdf
% file:///tmp/2019emacsconf.pdf
% file:///tmp/pen/2019emacsconf.pdf
% http://angg.twu.net/LATEX/2019emacsconf.pdf
% (find-LATEX "2019.mk")
% (find-fline "~/eev-videos/emacsconf-audios/")
% «.defs» (to "defs")
% «.co» (to "co")
% «.title-page» (to "title-page")
% «.prehistory» (to "prehistory")
% «.prehistory-2» (to "prehistory-2")
% «.prehistory-3» (to "prehistory-3")
% «.prehistory-4» (to "prehistory-4")
% «.prehistory-5» (to "prehistory-5")
% «.prehistory-6» (to "prehistory-6")
% «.prehistory-7» (to "prehistory-7")
% «.prehistory-8» (to "prehistory-8")
% «.prehistory-9» (to "prehistory-9")
% «.eev-elpa» (to "eev-elpa")
% «.eev-elpa-2» (to "eev-elpa-2")
% «.M-j» (to "M-j")
% «.demo» (to "demo")
% «.links» (to "links")
\documentclass[oneside]{book}
\usepackage[colorlinks,urlcolor=DarkRed]{hyperref} % (find-es "tex" "hyperref")
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{pict2e}
\usepackage[x11names,svgnames]{xcolor} % (find-es "tex" "xcolor")
\usepackage{colorweb} % (find-es "tex" "colorweb")
%\usepackage{tikz}
%
% (find-dn6 "preamble6.lua" "preamble0")
%\usepackage{proof} % For derivation trees ("%:" lines)
%\input diagxy % For 2D diagrams ("%D" lines)
%\xyoption{curve} % For the ".curve=" feature in 2D diagrams
%
\usepackage{edrx15} % (find-LATEX "edrx15.sty")
\input edrxaccents.tex % (find-LATEX "edrxaccents.tex")
\input edrxchars.tex % (find-LATEX "edrxchars.tex")
\input edrxheadfoot.tex % (find-LATEX "edrxheadfoot.tex")
\input edrxgac2.tex % (find-LATEX "edrxgac2.tex")
%
% (find-es "tex" "geometry")
\usepackage[paperwidth=11.5cm, paperheight=9cm,
%total={6.5in,4in},
%textwidth=4in, paperwidth=4.5in,
%textheight=5in, paperheight=4.5in,
%a4paper,
top=1.5cm, bottom=.5cm, left=1cm, right=1cm, includefoot
]{geometry}
%
\begin{document}
%\catcode`\^^J=10
%\directlua{dofile "dednat6load.lua"} % (find-LATEX "dednat6load.lua")
% %L dofile "edrxtikz.lua" -- (find-LATEX "edrxtikz.lua")
% %L dofile "edrxpict.lua" -- (find-LATEX "edrxpict.lua")
% \pu
% «defs» (to ".defs")
% (find-LATEX "edrx15.sty" "colors-2019")
\long\def\ColorRed #1{{\color{Red1}#1}}
\long\def\ColorViolet#1{{\color{MagentaVioletLight}#1}}
\long\def\ColorViolet#1{{\color{Violet!50!black}#1}}
\long\def\ColorGreen #1{{\color{SpringDarkHard}#1}}
\long\def\ColorGreen #1{{\color{SpringGreenDark}#1}}
\long\def\ColorGreen #1{{\color{SpringGreen4}#1}}
\long\def\ColorGray #1{{\color{GrayLight}#1}}
\long\def\ColorGray #1{{\color{black!30!white}#1}}
% pos-spec colors
% (find-es "tex" "xcolor")
% (find-xcolorpage 17 "2.4 Predefined colors")
% (find-xcolortext 17 "2.4 Predefined colors")
\def\Cnum#1{{\color{magenta}#1}}
\def\Cnum#1{{\color{Red1}#1}}
\def\Cnum#1{{\color{violet}#1}}
\def\Cnum#1{{\color{orange}#1}}
\def\Cstr#1{{\color{violet}#1}}
\def\Cstr#1{{\color{Red1}#1}}
\def\Csex#1{{\color{Red1}#1}}
% «co» (to ".co")
% (find-es "tex" "co")
% \co: a low-level way to typeset code; a poor man's "\verb"
\def\cocolor{}
\def\cocolor{\color{DarkGreen!80!black}}
\def\co#1{{%
\cocolor%
\def\%{\char37}%
\def\\{\char92}%
\def\^{\char94}%
\def\~{\char126}%
\tt#1%
}}
\def\qco#1{`\co{#1}'}
\def\qqco#1{``\co{#1}''}
\def\pco#1{\par\co{#1}}
\noedrxfooter % (find-LATEX "edrxheadfoot.tex")
\setlength{\parindent}{0em}
% _____ _ _ _
% |_ _(_) |_| | ___ _ __ __ _ __ _ ___
% | | | | __| |/ _ \ | '_ \ / _` |/ _` |/ _ \
% | | | | |_| | __/ | |_) | (_| | (_| | __/
% |_| |_|\__|_|\___| | .__/ \__,_|\__, |\___|
% |_| |___/
%
% «title-page» (to ".title-page")
% (ecop 1 "title-page")
% (eco "title-page")
% (find-LATEX "2019ilha-grande-slides.tex" "title-page")
% (find-LATEX "2018vichy-vgms-slides.tex" "title-page")
% (find-TH "emacsconf2019")
\thispagestyle{empty} % (find-es "tex" "thispagestyle")
\begin{center}
\begin{tabular}{c}
{\Large {\bf How to record \ColorRed{executable notes}}} \\[1pt]
{\Large {\bf with \ColorGreen{eev}, and how to}} \\[1pt]
{\Large {\bf \ColorViolet{play them back}}} \\[1pt]
\ColorGray{(talk @ EmacsConf 2019; short version)}
\end{tabular}
\bsk
\begin{tabular}[c]{r}
By: \\
Eduardo Ochs $→$ \\
\ColorGray{(original author)} \\
\\
Selana Ochs $→$ \\
\ColorGray{(recent contributor)} \\
\end{tabular}
\!\!\!\!\!\!\!
\begin{tabular}[c]{c}
$\includegraphics[height=90pt]{2019emacsconf-eu-e-selana.jpg}$
\end{tabular}
% \msk
% \url{http://angg.twu.net/\#eev}
\end{center}
\newpage
% ____ _ _ _
% | _ \ _ __ ___| |__ (_)___| |_ ___ _ __ _ _
% | |_) | '__/ _ \ '_ \| / __| __/ _ \| '__| | | |
% | __/| | | __/ | | | \__ \ || (_) | | | |_| |
% |_| |_| \___|_| |_|_|___/\__\___/|_| \__, |
% |___/
%
% «prehistory» (to ".prehistory")
% (ecop 2 "prehistory")
% (eco "prehistory")
% (find-escripts-intro "1. Prehistory")
{\bf Prehistory}
\ColorRed{Eev appeared by accident.}
\ssk
In 1995 I bought a computer that could run GNU/Linux
and a Linux CD. I was studying Maths at the university,
and I knew a tiny bit of *NIX and Lisp.
\ssk
I was fascinated by programming and *NIX seemed to be
``the right thing''.
\ssk
My social skills were bad. ``Everybody uses vi'', but...
\ssk
My memory was bad too, and I typed slowly and with
lots of mistakes, so at one point I gave up learning vi,
and tried Emacs.
\msk
It was \ColorRed{\bf\Large MIND-BLOWING.}
\newpage
% ____ _ _ _ ____
% | _ \ _ __ ___| |__ (_)___| |_ ___ _ __ _ _ |___ \
% | |_) | '__/ _ \ '_ \| / __| __/ _ \| '__| | | | __) |
% | __/| | | __/ | | | \__ \ || (_) | | | |_| | / __/
% |_| |_| \___|_| |_|_|___/\__\___/|_| \__, | |_____|
% |___/
%
% «prehistory-2» (to ".prehistory-2")
% (ecop 3 "prehistory-2")
% (eco "prehistory-2")
{\bf Prehistory (2)}
My notes started to have lots of ``elisp hyperlinks''
to files and directories that I found interesting...
\msk
{\footnotesize
\pco{\ \ (find-file "/usr/share/emacs/19.24/lisp/")}
\pco{\ \ (find-file "/usr/share/emacs/19.24/lisp/files.el")}
%\pco{\ \ (find-fline "/usr/share/emacs/19.24/lisp/files.el")}
%\pco{\ \ (find-fline "/usr/share/emacs/19.24/lisp/files.el" \Cnum{423})}
%\pco{\ \ (find-efile "files.el")}
%\pco{\ \ (find-efile "files.el" \Cnum{423})}
%\pco{\ \ (find-efile "files.el" \Cstr{"(defun find-file "})}
}
\msk
At first I used \qco{find-file}, then I created a
variant called \qco{find-fline}, that accepted a
\Cnum{line number}, then I made it accept a \Cstr{string to search for},
then I invented ``shorter hyperlinks'', like \qco{find-efile}...
\msk
{\footnotesize
%\pco{\ \ (find-file "/usr/share/emacs/19.24/lisp/")}
%\pco{\ \ (find-file "/usr/share/emacs/19.24/lisp/files.el")}
\pco{\ \ (find-fline "/usr/share/emacs/19.24/lisp/files.el")}
\pco{\ \ (find-fline "/usr/share/emacs/19.24/lisp/files.el" \Cnum{423})}
\pco{\ \ (find-efile "files.el")}
\pco{\ \ (find-efile "files.el" \Cnum{423})}
\pco{\ \ (find-efile "files.el" \Cstr{"(defun find-file "})}
}
\newpage
% ____ _ _ _ _____
% | _ \ _ __ ___| |__ (_)___| |_ ___ _ __ _ _ |___ /
% | |_) | '__/ _ \ '_ \| / __| __/ _ \| '__| | | | |_ \
% | __/| | | __/ | | | \__ \ || (_) | | | |_| | ___) |
% |_| |_| \___|_| |_|_|___/\__\___/|_| \__, | |____/
% |___/
%
% «prehistory-3» (to ".prehistory-3")
% (ecop 4 "prehistory-3")
% (eco "prehistory-3")
{\bf Prehistory (3)}
I also wrote a \ColorRed{very primitive} way to send the region to a shell.
\qco{M-x eev} (meaning: emacs-execute-verbosely) wrote
the region into the file \qco{\~/.eev/ee.sh} (actually \qco{\$EE}),
and if I typed \qco{ee} in a shell it would run the commands
in \qco{\$EE} in \ColorRed{verbose mode}, i.e., outputting each command
before executing it.
I had this in my \qco{\~/.zshrc}:
\msk
{\footnotesize
\pco{\ \ export EEVTMPDIR=\$HOME/.eev}
\pco{\ \ export EE=\$EEVTMPDIR/ee.sh}
\pco{\ \ function ee () \{ set -v; . \$EE; set +v; \}}
}
\msk
The \qco{. \$EE} was a trick to run the commands
``\ColorRed{in the current shell environment}'', so that things like
\qco{cd} and \qco{export} would work ``as expected''...
\newpage
% ____ _ _ _ _ _
% | _ \ _ __ ___| |__ (_)___| |_ ___ _ __ _ _ | || |
% | |_) | '__/ _ \ '_ \| / __| __/ _ \| '__| | | | | || |_
% | __/| | | __/ | | | \__ \ || (_) | | | |_| | |__ _|
% |_| |_| \___|_| |_|_|___/\__\___/|_| \__, | |_|
% |___/
%
% «prehistory-4» (to ".prehistory-4")
% (ecop 5 "prehistory-4")
% (eco "prehistory-4")
{\bf Prehistory (4)}
In a few months I had created several other kinds of elisp
hyperlinks that also supported those extra arguments
(``\ColorRed{pos-spec-lists}'') that indicated \ColorRed{strings to
search for...}
Some examples:
\msk
{\footnotesize
\pco{\ \ \# (find-man "1 gawk" \Cstr{"Built-in Variables"})}
\pco{\ \ \# (find-man "1 gawk" \Cstr{"I/O Statements"})}
\pco{\ \ \# (find-man "1 gawk" \Cstr{"String Functions"})}
\pco{\ \ \# (find-node "(make)Automatic Variables" \Cstr{"\$*" "stem"})}
\pco{\ \ \# (find-node "(make)Recursion")}
\pco{\ \ \# (find-node "(make)Special Targets" \Cstr{".PRECIOUS"})}
\pco{\ \ \# (find-node "(make)Chained Rules" \Cstr{".SECONDARY"})}
\pco{\ \ \# (find-sh "man -d print > /dev/null")}
\pco{\ \ \# (find-sh "man -d print > /dev/null |\& grep print")}
}
\newpage
% ____ _ _ _ ____
% | _ \ _ __ ___| |__ (_)___| |_ ___ _ __ _ _ | ___|
% | |_) | '__/ _ \ '_ \| / __| __/ _ \| '__| | | | |___ \
% | __/| | | __/ | | | \__ \ || (_) | | | |_| | ___) |
% |_| |_| \___|_| |_|_|___/\__\___/|_| \__, | |____/
% |___/
%
% «prehistory-5» (to ".prehistory-5")
% (ecop 6 "prehistory-5")
% (eco "prehistory-5")
{\bf Prehistory (5)}
These elisp hyperlinks could be put in comments.
They were always the \ColorRed{sexp at the end of the line:}
\msk
{\footnotesize
\pco{\ \ \#!/usr/bin/tclsh}
\pco{\ \ \# \Csex{(find-fline "\~/TCL/inc.tcl")}}
\pco{\ \ source \$env(HOME)/TCL/inc.tcl}
\pco{\ \ eval [lindex \$argv 1]}
}
\msk
I made \qco{M-e} work like \qco{C-e C-x C-e}:
\msk
\begin{tabular}{rcl}
\quad
\qco{C-x C-e} & $→$ & \qco{eval-last-sexp} \\
\qco{M-e} & $→$ & \qco{eval-sexp-eol} \\
\end{tabular}
\msk
At that time I was using mostly shell, elisp, Awk, Icon, Tcl, Expect,
C, Forth, makefiles, \TeX/\LaTeX, and config files, and \ColorRed{all
these languages and interpreters supported elisp hyperlinks in
comments.}
\newpage
% ____ _ _ _ __
% | _ \ _ __ ___| |__ (_)___| |_ ___ _ __ _ _ / /_
% | |_) | '__/ _ \ '_ \| / __| __/ _ \| '__| | | | | '_ \
% | __/| | | __/ | | | \__ \ || (_) | | | |_| | | (_) |
% |_| |_| \___|_| |_|_|___/\__\___/|_| \__, | \___/
% |___/
%
% «prehistory-6» (to ".prehistory-6")
% (ecop 7 "prehistory-6")
% (eco "prehistory-6")
% (find-eev "eev-prepared.el")
{\bf Prehistory (6)}
I also created variants of \qco{M-x eev} that could
send regions of text to other external interpreters
besides shells, like Tcl, GDB, \LaTeX, and...
\newpage
% ____ _ _ _ _____
% | _ \ _ __ ___| |__ (_)___| |_ ___ _ __ _ _ |___ |
% | |_) | '__/ _ \ '_ \| / __| __/ _ \| '__| | | | / /
% | __/| | | __/ | | | \__ \ || (_) | | | |_| | / /
% |_| |_| \___|_| |_|_|___/\__\___/|_| \__, | /_/
% |___/
%
% «prehistory-7» (to ".prehistory-7")
% (ecop 8 "prehistory-7")
% (eco "prehistory-7")
{\bf Prehistory (7)}
...and in a few years I had several megabytes of:
\ssk
\begin{tabular}{cl}
1) & \ColorRed{scripts} with elisp hyperlinks in comments, \\[2.5pt]
2) & ``\ColorRed{executable notes}'' (or ``\ColorRed{e-scripts}''): a
free-form mix \\& of elisp hyperlinks, blocks of code to be sent to \\& shells
and other interpreters, and comments \\&
in English/Portuguese/whatever... \\
\end{tabular}
\msk
In 1997 I started to have internet at home, and in 1999
I created a home page and uploaded \ColorRed{all} these scripts
and
notes to it, because it was
\ssk
\begin{tabular}{cl}
1) & good karma, \\[2.5pt]
2) & a way to become a person who \\& \ColorRed{deserves hints and help.} \\
\end{tabular}
\newpage
% ____ _ _ _ ___
% | _ \ _ __ ___| |__ (_)___| |_ ___ _ __ _ _ ( _ )
% | |_) | '__/ _ \ '_ \| / __| __/ _ \| '__| | | | / _ \
% | __/| | | __/ | | | \__ \ || (_) | | | |_| | | (_) |
% |_| |_| \___|_| |_|_|___/\__\___/|_| \__, | \___/
% |___/
%
% «prehistory-8» (to ".prehistory-8")
{\bf Prehistory (8)}
I was sure that \ColorRed{everybody} was using Emacs like that.
At one point I sent an e-mail to one of the Emacs MLs.
In the e-mail I used some elisp hyperlinks and other tricks.
I explained how to use everything there, and I apologized:
``I don't know what are the standard functions that do that,
so I wrote my own ones. Sorry for the ugly names...''
\msk
RMS himself answered. It was sort of:
``This looks interesting, and AFAIK no one else is using
Emacs like this. Someone should clean up the code and
document it so that we can included it in Emacs.
Can you do that?''
\newpage
% ____ _ _ _ ___
% | _ \ _ __ ___| |__ (_)___| |_ ___ _ __ _ _ / _ \
% | |_) | '__/ _ \ '_ \| / __| __/ _ \| '__| | | | | (_) |
% | __/| | | __/ | | | \__ \ || (_) | | | |_| | \__, |
% |_| |_| \___|_| |_|_|___/\__\___/|_| \__, | /_/
% |___/
%
% «prehistory-9» (to ".prehistory-9")
% (ecop 10 "prehistory-9")
% (eco "prehistory-9")
{\bf Prehistory (9)}
I started to work to make Eev an official package,
and I submitted some code. RMS had some objections...
\ssk
In 2000 (?) he gave a talk in Campinas, that is 500Km
away from where I live (Rio de Janeiro). I went there,
and chatted with him after the talk.
\ssk
He said that \ColorRed{users should not be forced to see Lisp}.
\msk
I was \ColorRed{\large \bf INCREDIBLY OFFENDED.}
RMS was so startled by my reaction that he walked away.
\ssk
For me the ability to write elisp one-liners was
\ColorRed{\large \bf THE} thing
that completely dissolved the barrier
between ``users'' and ``programmers''. It was a beautiful
catalyst, and the distilled essence of Free Software.
\newpage
% _____ _____ _ ____ _
% | ____|_____ __ | ____| | | _ \ / \
% | _| / _ \ \ / / | _| | | | |_) / _ \
% | |__| __/\ V / | |___| |___| __/ ___ \
% |_____\___| \_/ |_____|_____|_| /_/ \_\
%
% «eev-elpa» (to ".eev-elpa")
% (ecop 11 "eev-elpa")
% (eco "eev-elpa")
{\bf Eev as an ELPA package}
\ssk
\begin{tabular}{ll}
2000: & \ColorRed{``users should not be forced to see Lisp''} \\
& \qco{M-x eev} was hard to set up \\
& (it needed changing rcfiles) \\[5pt]
2019: & \qco{M-x eev} is now obsolete ($→$ \co{eepitch}) \\
& setup is now trivial \\
& lots of sandboxed tutorials: \co{(find-*-intro)} \\[2pt]
& I've been using eev to teach Emacs and \\
& Free Software principles to people who \\
& didn't know programming or *NIX \\[2pt]
& people can learn it by memorizing just three keys: \\
& \qco{M-e} (``execute''), \qco{M-j} (``jump''), \\
& \qco{M-k} (``kill this buffer'')
%
\end{tabular}
% (like in Neal Stephenson's \\
% & ``In the Beginning it was the command line'') \\
\newpage
% _____ _____ _ ____ _ ____
% | ____|_____ __ | ____| | | _ \ / \ |___ \
% | _| / _ \ \ / / | _| | | | |_) / _ \ __) |
% | |__| __/\ V / | |___| |___| __/ ___ \ / __/
% |_____\___| \_/ |_____|_____|_| /_/ \_\ |_____|
%
% «eev-elpa-2» (to ".eev-elpa-2")
% (ecop 12 "eev-elpa-2")
% (eco "eev-elpa-2")
% (find-es "eev" "eev-in-elpa")
{\bf Eev as an ELPA package (2)}
In april 10, 2019 Eev became an ELPA package.
The new eev has lots of tutorials, with names like:
\ssk
{\footnotesize
\pco{\ \ 0. (find-eev-quick-intro)}
\pco{\ \ 1. (find-emacs-keys-intro)}
\pco{\ \ 2. (find-eev-intro)}
\pco{\ \ 3. (find-here-links-intro)}
\pco{\ \ 4. (find-refining-intro)}
\pco{\ \ 5. (find-pdf-like-intro)}
\pco{\ \ 6. (find-eepitch-intro)}
\pco{\ \ 7. (find-audiovideo-intro)}
\pco{\ \ 8. (find-rcirc-intro)}
\pco{\ \ 9. (find-eev-install-intro)}
}
\msk
The ``beginner setup'' turns \co{eev-mode} on and
opens \co{(find-eev-quick-intro)}.
% People can learn it by memorizing just three keys:
% \qco{M-e} (``execute''), \qco{M-j} (``jump''), \qco{M-k} (``kill this buffer'')
\newpage
% __ __ _
% | \/ | (_)
% | |\/| |_____| |
% | | | |_____| |
% |_| |_| _/ |
% |__/
%
% «M-j» (to ".M-j")
% (ecop 13 "M-j")
% (eco "M-j")
{\bf `M-j'}
If you type just \qco{M-j} without a numeric prefix
you get a page whose header is this:
\msk
{\footnotesize
\pco{\ \ ;; Generated by: (find-eejumps)}
\pco{\ \ ;; See: \Csex{(find-eev-quick-intro "7.1. `eejump'" "`M-j'")}}
\pco{\ \ ;; \ \ \ \ \ \Csex{(find-emacs-keys-intro "1. Basic keys (eev)")}}
\pco{\ \ ;; \ \ \ \ \ \Csex{(find-emacs-keys-intro "2. Key sequences")}}
\pco{\ \ ;; For example,}
\pco{\ \ ;; \ \ \ \ M-1 M-j \ runs: \ (find-fline "\~/TODO")}
\pco{\ \ ;; \ \ \ \ M-2 M-j \ runs: \ \Csex{(find-emacs-keys-intro)}}
\pco{\ \ ;; \ \ \ \ M-5 M-j \ runs: \ \Csex{(find-eev-quick-intro)}}
\pco{\ \ ;; Current eejump targets:}
}
\msk
The tutorial \qco{(find-emacs-keys-intro)} starts with a section about
the keys of eev and then has several sections about the main keys of
Emacs, \ColorRed{with hyperlinks to the Emacs manuals.}
\newpage
% ____
% | _ \ ___ _ __ ___ ___
% | | | |/ _ \ '_ ` _ \ / _ \
% | |_| | __/ | | | | | (_) |
% |____/ \___|_| |_| |_|\___/
%
% «demo» (to ".demo")
% (ecop 13 "demo")
% (eco "demo")
{\bf A demo}
% (find-eev-install-intro "1. Beginners and experts")
% (find-eev-install-intro "2. The expert setup")
% (Only one minute left!)
So: \qco{M-x eev} is obsolete,
It has been replaced by \qco{<f8>}, that
always operates on the current line, and moves down.
\ssk
On \ColorRed{normal lines} it sends the current line to the
target buffer (usually \qqco{*shell*})
\ssk
On \ColorRed{red star lines} it executes the current line
as Lisp (we use this to set up the target buffer).
\msk
The following demo shows how I:
downloaded the Debian source package of \co{xpdf},
unpacked it, found the code that implemented
``touchpad scroll'', commented it out, and compiled
and installed the changed version.
\newpage
% _ _ _
% | | (_)_ __ | | _____
% | | | | '_ \| |/ / __|
% | |___| | | | | <\__ \
% |_____|_|_| |_|_|\_\___/
%
% «links» (to ".links")
% (ecop 15 "links")
% (eco "links")
{\bf Links}
See:
\url{http://angg.twu.net/\#eev}
\url{http://angg.twu.net/emacsconf2019.html}
\url{http://angg.twu.net/e/emacsconf2019.e.html\#short}
\msk
Most of the ``several megabytes of free-form executable notes''
mentioned in slide 8 are here:
\url{http://angg.twu.net/e/}
% (find-sh "cd ~/e/ && wc *.e")
% (find-sh "cd ~/e/ && wc *.e | sort -n")
\bsk
\phantom{aa} \ColorRed{Thank you! $=)$}
% (find-es "emacsconf2019" "short")
% (find-es "ps" "xpdf-touchpad-scroll")
% (find-TH "emacsconf2019")
% https://en.wikipedia.org/wiki/Touchpad
% https://en.wikipedia.org/wiki/Scroll_wheel
% https://help.gnome.org/users/gnome-help/stable/mouse-touchpad-click.html.en
% https://en.wikipedia.org/wiki/Pointing_device_gesture
\end{document}
% (find-es "eev" "eek-pkg-announcement")
% (find-angg ".zshrc" "ee")
% (find-zshnode "Shell Builtin Commands" "source FILE")
% (find-zshnode "Shell Builtin Commands" ". FILE")
% (find-anggfile ".bashrc")
% (find-escripts-intro "3. Sharing")
% (find-escripts-intro "3. Sharing" "Eev Manifesto")
% (find-escripts-intro "3. Sharing" "in a public place")
% One of its features was incompatible with UTF-8
% https://en.wikipedia.org/wiki/UTF-8
% Since 2009, UTF-8 has been the dominant encoding (of any kind, not
% just of Unicode encodings) for the World Wide Web
\end{document}
% Local Variables:
% coding: utf-8-unix
% ee-tla: "eco"
% End: