Warning: this is an htmlized version!
The original is here, and
the conversion rules are here.
#######
#
# E-scripts on eev itself: demos, hints, packing, works in progress, etc.
#
# Note 1: use the eev command (defined in eev.el) and the
# ee alias (in my .zshrc) to execute parts of this file.
# Executing this file as a whole makes no sense.
# An introduction to eev can be found here:
#
#   (find-eev-quick-intro)
#   http://angg.twu.net/eev-intros/find-eev-quick-intro.html
#
# Note 2: be VERY careful and make sure you understand what
# you're doing.
#
# Note 3: If you use a shell other than zsh things like |&
# and the for loops may not work.
#
# Note 4: I always run as root.
#
# Note 5: some parts are too old and don't work anymore. Some
# never worked.
#
# Note 6: the definitions for the find-xxxfile commands are on my
# .emacs.
#
# Note 7: if you see a strange command check my .zshrc -- it may
# be defined there as a function or an alias.
#
# Note 8: the sections without dates are always older than the
# sections with dates.
#
# This file is at <http://angg.twu.net/e/eev.e>
#           or at <http://angg.twu.net/e/eev.e.html>.
#        See also <http://angg.twu.net/emacs.html>,
#                 <http://angg.twu.net/.emacs[.html]>,
#                 <http://angg.twu.net/.zshrc[.html]>,
#                 <http://angg.twu.net/escripts.html>,
#             and <http://angg.twu.net/>.
#
#######





# «.mailing-list»		(to "mailing-list")
# «.git-repo»			(to "git-repo")
# «.byte-compilation-bug»	(to "byte-compilation-bug")
# «.debian-package»		(to "debian-package")
# «.cdbs»			(to "cdbs")
# «.dh-make»			(to "dh-make")
# «.dh-make-2»			(to "dh-make-2")
# «.inspect-the-DEBIAN-dir»	(to "inspect-the-DEBIAN-dir")
# «.eev-deb-unpacked»		(to "eev-deb-unpacked")
# «.eev-repository.tar»		(to "eev-repository.tar")
# «.upload-the-deb»		(to "upload-the-deb")
# «.sources.list»		(to "sources.list")
# «.dpkg-i»			(to "dpkg-i")
# «.what-the-deb»		(to "what-the-deb")
# «.backtick-eev-mode»		(to "backtick-eev-mode")
# «.code-c-d-docs»		(to "code-c-d-docs")
# «.README.Debian»		(to "README.Debian")
# «.vncserver-very-old»		(to "vncserver-very-old")
# «.vnc2swf»			(to "vnc2swf")
# «.byzanz»			(to "byzanz")
# «.isend»			(to "isend")
# «.dmarc»			(to "dmarc")
# «.eepitch-indented»		(to "eepitch-indented")
# «.eepitch-indented-tomas»	(to "eepitch-indented-tomas")
# «.eev2.tgz»			(to "eev2.tgz")
# «.eev2-video-1.sh»		(to "eev2-video-1.sh")
# «.eev2-build-tgz»		(to "eev2-build-tgz")
# «.eev2-test-unpack»		(to "eev2-test-unpack")
# «.eev2-test»			(to "eev2-test")
# «.eev2-hmtlize-intros»	(to "eev2-hmtlize-intros")
# «.eev2-add-new-intro»		(to "eev2-add-new-intro")
# «.eev2-add-new-file»		(to "eev2-add-new-file")
# «.eev2-upload»		(to "eev2-upload")
# «.eev2-video-2.sh»		(to "eev2-video-2.sh")
# «.eev2-video3-eepitch»	(to "eev2-video3-eepitch")
# «.eev2-announcements»		(to "eev2-announcements")
# «.move-to-eev-mode»		(to "move-to-eev-mode")
# «.video-eev-quick-0»		(to "video-eev-quick-0")
# «.video-eev-quick-1»		(to "video-eev-quick-1")
# «.video-sympy-1»		(to "video-sympy-1")
# «.video-sympy-1-end»		(to "video-sympy-1-end")
# «.video-three-keys-pt-1»	(to "video-three-keys-pt-1")
# «.video-three-keys-2»		(to "video-three-keys-2")
# «.video-three-keys-index»	(to "video-three-keys-index")
# «.video-emacsconf-short»	(to "video-emacsconf-short")
# «.video-emacsconf-short-i»	(to "video-emacsconf-short-i")
# «.video-emacsconf-short-dt»	(to "video-emacsconf-short-dt")
# «.video-workshop-0»		(to "video-workshop-0")
# «.video-workshop-1»		(to "video-workshop-1")
# «.video-workshop-2»		(to "video-workshop-2")
# «.video-workshop-3»		(to "video-workshop-3")
# «.video-workshop-4»		(to "video-workshop-4")
# «.video-workshop-5»		(to "video-workshop-5")
# «.video-eev-wconfig-pt»	(to "video-eev-wconfig-pt")
# «.video-eev-wconfig»		(to "video-eev-wconfig")
# «.punch-and-judy»		(to "punch-and-judy")
# «.emacsconf2019-captions»	(to "emacsconf2019-captions")
# «.2020-several-tbfs»		(to "2020-several-tbfs")
# «.find-esymbol»		(to "find-esymbol")
# «.find-elisp-into-subs»	(to "find-elisp-into-subs")

# «.carmen-1»			(to "carmen-1")
# «.eegchannel-test»		(to "eegchannel-test")
# «.eexterm-test»		(to "eexterm-test")

# «.eev-emacs-package»		(to "eev-emacs-package")
# «.eev-pkg.el-fields»		(to "eev-pkg.el-fields")
# «.eev-pkg-repo»		(to "eev-pkg-repo")
# «.eev-pkg-build»		(to "eev-pkg-build")
# «.eev-pkg-readme»		(to "eev-pkg-readme")
# «.eev-pkg-test-0»		(to "eev-pkg-test-0")
# «.eev-pkg-submit-to-ELPA»	(to "eev-pkg-submit-to-ELPA")
# «.eek-pkg-announcement»	(to "eek-pkg-announcement")
# «.eev-pkg-signing»		(to "eev-pkg-signing")
# «.eev-in-elpa»		(to "eev-in-elpa")
# «.eev-tar-windows»		(to "eev-tar-windows")
# «.push-master»		(to "push-master")
# «.git-merge-elpa»		(to "git-merge-elpa")
# «.find-wget-email»		(to "find-wget-email")
# «.describe-symbol»		(to "describe-symbol")
# «.eepitch-shell-vterm»	(to "eepitch-shell-vterm")
# «.quick-load»			(to "quick-load")
# «.eev-on-windows-on-linux»	(to "eev-on-windows-on-linux")
# «.eev-on-windows-julha»	(to "eev-on-windows-julha")
# «.eev-on-windows-aniketgm»	(to "eev-on-windows-aniketgm")
# «.felipe-bastos»		(to "felipe-bastos")
# «.felipe-bastos-pdf-bug»	(to "felipe-bastos-pdf-bug")
# «.felipe-bastos-wgeta-bug»	(to "felipe-bastos-wgeta-bug")
# «.find-wget-jan-2024»		(to "find-wget-jan-2024")
# «.lucatelli»			(to "lucatelli")
# «.info-tutorial»		(to "info-tutorial")
# «.kla-symlink-bug»		(to "kla-symlink-bug")
# «.find-yttranscript-video»	(to "find-yttranscript-video")
# «.2021-workshop-log»		(to "2021-workshop-log")
# «.vagner-settings»		(to "vagner-settings")
# «.eev-on-windows-lucas»	(to "eev-on-windows-lucas")
# «.wconfig-fake-wget.exe»	(to "wconfig-fake-wget.exe")
# «.eev-and-tikz-video»		(to "eev-and-tikz-video")
# «.ee-goto-position-mini»	(to "ee-goto-position-mini")
# «.find-dbsw-call-mini»	(to "find-dbsw-call-mini")
# «.overlays-for-understand»	(to "overlays-for-understand")
# «.how-to-test-a-buttonizer»	(to "how-to-test-a-buttonizer")
# «.eev-rcd-tap-1.el»		(to "eev-rcd-tap-1.el")
# «.summarize-it-in-a-single»	(to "summarize-it-in-a-single")
# «.find-estring-mini»		(to "find-estring-mini")


# (find-angg "TEXINFO/eev-article.texi")
# (find-eevex "")
# (find-eevex "lua.e" "quick-presentation")





#####
#
# Mailing list
# 2012apr06
#
#####

# «mailing-list»  (to ".mailing-list")

# http://lists.gnu.org/archive/html/eev/        archives
# http://lists.nongnu.org/mailman/listinfo/eev  subscription
# http://dir.gmane.org/gmane.emacs.eev.devel    gmane
# http://news.gmane.org/gmane.emacs.eev.devel

https://www.gnu.org/software/maintainer-tips.en.html

# E-mail to maintainers@gnu, 2019jan22:
# https://mail.google.com/mail/ca/u/0/#sent/QgrcJHsHkxCzVrHtZWklGZRhJTxKVNjqwvG

I lost admin access to the eev mailing list

Hi Maintainers,

I lost admin access to the eev mailing list,

  http://lists.gnu.org/archive/html/eev/
  https://lists.nongnu.org/mailman/listinfo/eev

even though my main e-mail, eduardoochs@gmail.com, is still one of the
administrative e-mails of the list... What do I do? 

Thanks in advance!
  Eduardo Ochs
  http://angg.twu.net/#eev


# 2021jun06:
# http://savannah.nongnu.org/projects/eev
# https://savannah.nongnu.org/support/?109635




#####
#
# git-repo
# 2023jan15
#
#####

# «git-repo»  (to ".git-repo")
# https://github.com/edrx/eev





#####
#
# Michael Heerdegen's bug
# 2008sep04
#
#####

# «byte-compilation-bug»  (to ".byte-compilation-bug")
# https://mail.google.com/mail/ca/u/0/#search/Michael+Heerdegen
# https://mail.google.com/mail/ca/u/0/#search/Michael+Heerdegen/11ca96503c16e1dc glyphs
# https://mail.google.com/mail/ca/u/0/#search/Michael+Heerdegen/11c2996861415ce6 byte-compilation

Hi Michael!

Thanks a lot for your report - I've been able to reproduce the bug at
my machine... here's the e-script that I used, by the way:

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
cd /tmp/
rm -v /tmp/test.elc
cat > /tmp/test.el <<'%%%'
(setq y (+ 1 2))
%%%
cat > /tmp/loadeev.el <<'%%%'
(progn
  (add-to-list 'load-path "~/eev-current/")
  (require 'eev-all)
  (eev-mode 1))
(eev-mode 0)
(byte-compile-file "/tmp/test.el")
%%%
~/bigsrc/emacs/src/emacs -Q loadeev.el

The "loadeev.el" file gives me an easy way to choose which sexps to
execute.

I know very little about byte-compilation too (really!), but I have
some ideas for what to do to track down this bug... I'll try them over
the next days. Anyway: strangely, if I run the sexp

  (byte-compile-file "/tmp/test.el")

with M-5 M-e - this is a way to eval a sexp with debug-on-error
temporarily turned on - the byte-compiler does not stop when the "End
of file during parsing" error occurs...

  Cheers, & thanks again,
    Eduardo Ochs
    eduardoochs@gmail.com
    http://angg.twu.net/


P.S.: did you notice that byte-compiling test.el always gives a
warning?

  Compiling file /tmp/test.el at Thu Sep  4 22:48:58 2008
  test.el:1:7:Warning: assignment to free variable `y'
  test.el:1:3:Error: End of file during parsing

Assignment to non-defvar'ed variables is frowned upon...






#####
#
# New ideas for a Debian package for eev
# 2009jul26
#
#####

# «debian-package»  (to ".debian-package")
# «cdbs»  (to ".cdbs")
# (find-angg ".emacs" "debian-devel-docs")

# (find-efile "progmodes/ps-mode.el" ":prefix \"ps-run-\"")
# (find-fline "/usr/share/doc/emacsen-common/debian-emacs-policy.gz")
# (find-fline "/usr/share/emacs/")
# (find-fline "/etc/emacs/site-start.d/")
# (find-sitelispfile "maxima/")

# (find-status   "cdbs")
# (find-vldifile "cdbs.list")
# (find-udfile   "cdbs/")
# (find-udw3m "cdbs/cdbs-doc.html")
# (find-udw3m "cdbs/cdbs-doc.html" "\nSwitching the Package to CDBS\n\n")
# (find-udw3m "cdbs/cdbs-doc.html" "DEB_DESTDIR")
# (find-udw3m "cdbs/cdbs-doc.html" "build/myprog::")
# (find-fline "/usr/share/cdbs/1/")

# (find-sh "grep -niH -e cdbs ~/usrc/*/*/debian/*")
# (find-fline "~/usrc/camlp5/camlp5-5.10/debian/rules")

#*
# (eev-bounded)

rm -Rv ~/usrc/eev/
mkdir  ~/usrc/eev/
mkdir  ~/usrc/eev/eev-0.1/
mkdir  ~/usrc/eev/eev-0.1/debian/
cat >  ~/usrc/eev/eev-0.1/debian/rules <<'%%%'
#!/usr/bin/make -f
include /usr/share/cdbs/1/class/makefile.mk
include /usr/share/cdbs/1/rules/debhelper.mk
DEB_PACKAGES = eev
PKGNAME = eev
configure/$(PKGNAME):: debian/configure-stamp
debian/configure-stamp:
	./configure $(CONFIGURE_FLAGS)
	touch debian/configure-stamp
clean::
	rm -f debian/configure-stamp
build/$(PKGNAME)::
	$(MAKE) -C doc/
	echo foo > doc/foo
%%%

# (find-anggfile "mktclapp-3.9/debian/changelog")
# (find-fline "~/usrc/eev/eev-0.1/debian/changelog")
# (find-maintgtext "dh_make -e your.maintainer@address")
# (find-man "8 dh_make")

# (find-status   "dh-make")
# (find-vldifile "dh-make.list")
# (find-udfile   "dh-make/")

cat > ~/usrc/eev/eev-0.1/debian/changelog <<'%%%'
%%%

# (find-



cat  > ~/usrc/eev/eev-0.1/debian/control <<'%%%'
Source: eev
Section: editors
Priority: optional
Maintainer: Eduardo Ochs <eduardoochs@gmail.com>
Uploaders: Eduardo Ochs <eduardoochs@gmail.com>
Standards-Version: 3.7.3
Build-Depends:

Package: eev
Architecture: any
Depends: emacsen-common
Recommends: maxima
Suggests: bash
Description: Eev.
 Long description.
%%%

cd     ~/usrc/eev/eev-0.1/
dpkg-buildpackage -us -uc -b -rfakeroot     |& tee odb

#*
# (find-fline "~/usrc/eev/eev-0.1/")
# (find-fline "~/usrc/eev/eev-0.1/debian/")




#####
#
# dh-make (first attempt, obsolete)
# 2009aug03
#
#####

# «dh-make»  (to ".dh-make")
# (find-eev "debian/control.sh")
# (find-eev "debian/90eev.el")
# (find-maintgtext "dh_make -e your.maintainer@address")
# (find-man "8 dh_make")
# (find-fline "/var/cache/apt/archives/")
# (find-fline "/var/cache/apt/archives/debian-el_29.3-2_all.deb")
#*
rm -Rv ~/usrc/eev/
mkdir  ~/usrc/eev/
mkdir  ~/usrc/eev/eev-0.1/
cd     ~/usrc/eev/eev-0.1/

mkdir -p etc/emacs/site-start.d/
mkdir -p usr/share/emacs/site-lisp/eev/
cat    > etc/emacs/site-start.d/90eev.el <<'%%%'
;; (find-angg ".emacs" "eev-block")
;; (add-to-list 'load-path "/usr/share/emacs/site-lisp/eev")
;; (require 'eev-all)      ; (find-eev "eev-all.el")
;; (eev-mode 1)
(message "The debianized eev package would be loaded.")
%%%
cat    > usr/share/emacs/site-lisp/eev/foo.el <<'%%%'
(message "Foo!")
%%%
cat    > Makefile <<'%%%'
clean:
%%%

# (find-udw3m "cdbs/cdbs-doc.html" "DEB_DESTDIR")
# (find-udw3m "cdbs/cdbs-doc.html" "build/myprog::")
# (find-udw3m "cdbs/cdbs-doc.html" "install/foo::")
# (find-maintgtext "")
# (find-maintgtext "4.4. `rules' file")

# (find-man "8 dh_make")
echo | \
DEBFULLNAME="Eduardo Ochs" \
  dh_make --email eduardoochs@gmail.com \
          --copyright=gpl \
          --cdbs \
          --native

rm -v debian/README.Debian debian/*.EX debian/*.ex

cat >> debian/rules <<'%%%'
build/eev::
install/eev::
	echo "In install: $(DEB_DESTDIR)"
	cp -Rv etc/ usr/ debian/eev/
%%%

mv -iv debian/control debian/control.orig
cat >  debian/control <<'%%%'
Source: eev
Section: editors
Priority: extra
Maintainer: Eduardo Ochs <eduardoochs@gmail.com>
Build-Depends: cdbs, debhelper (>= 7)
Standards-Version: 3.7.3
Homepage: http://angg.twu.net/

Package: eev
Architecture: all
Depends: emacs
Description: <insert up to 60 chars description>
 <insert long description, indented with spaces>
%%%

dpkg-buildpackage -us -uc -b -rfakeroot     |& tee odb

#*
# (find-fline "~/usrc/eev/eev-0.1/")
# (find-fline "~/usrc/eev/eev-0.1/odb")
# (find-fline "~/usrc/eev/eev-0.1/debian/")
# (find-fline "~/usrc/eev/eev-0.1/debian/control")
# (find-sh "cd ~/usrc/eev/eev-0.1/debian/eev/ && find")
# (find-fline "~/usrc/eev/eev-0.1/debian/dirs")

# (find-fline   "~/usrc/eev/eev_0.1_i386.deb")
# (find-sh "ar t ~/usrc/eev/eev_0.1_i386.deb")
# (find-sh "ar p ~/usrc/eev/eev_0.1_i386.deb control.tar.gz | tar -tvzf -")
# (find-sh "ar p ~/usrc/eev/eev_0.1_i386.deb data.tar.gz    | tar -tvzf -")
# (find-sh "ar p ~/usrc/eev/eev_0.1_i386.deb debian-binary")

# (find-fline   "~/usrc/eev/eev_0.1_all.deb")
# (find-sh "ar t ~/usrc/eev/eev_0.1_all.deb")
# (find-sh "ar p ~/usrc/eev/eev_0.1_all.deb control.tar.gz | tar -tvzf -")
# (find-sh "ar p ~/usrc/eev/eev_0.1_all.deb data.tar.gz    | tar -tvzf -")
# (find-sh "ar p ~/usrc/eev/eev_0.1_all.deb debian-binary")

# (find-man "1 ar")


# (find-maintgtext "5.4. dirs")
# cat > debian/dirs <<'%%%'
# /usr/share/emacs/site-lisp/eev
# etc/emacs/site-start.d
# %%%




#####
#
# Building a Debian package for eev with dh-make (attempt 2)
# 2009aug16 / 2009nov25
#
#####

# «dh-make-2»  (to ".dh-make-2")
# (find-angg ".emacs" "eevbuild")
# (find-dhmake-links "eev" "eevbuild" "20110612")

# (find-eev "debian/README.Debian" nil "How the .deb is built")
# (find-eevsh "ls *.el")
# (find-eev "debian/")
# (find-eev "debian/emacs-eev")
# (find-eev "debian/90eev.el")
# (find-eev "debian/Makefile")
# (find-eev "debian/rules")
# (find-eev "debian/control.sh")
# (find-eev "debian/README.Debian")
# (find-maintgtext "5.1. README.Debian")
# (find-es "lenny" "apt-ftparchive")
# (find-angg ".emacs" "date")

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
#*
rm -Rv ~/usrc/eev/
mkdir  ~/usrc/eev/
mkdir  ~/usrc/eev/eev-0.1.20110612/
ln -s             eev-0.1.20110612 ~/usrc/eev/eev-0.1
cd     ~/usrc/eev/eev-0.1.20110612/

# Copy the files from (find-eev "debian/")
# to their correct positions in the build dir of the deb package.

# Create the directories,
mkdir -p etc/emacs/site-start.d/
mkdir -p usr/share/emacs/site-lisp/eev/
mkdir -p usr/bin/
mkdir -p usr/share/eev/

# Copy the files.
cp -v  ~/eev-current/debian/Makefile   .
cp -v  ~/eev-current/debian/emacs-eev  usr/bin/
cp -v  ~/eev-current/eev-rctool        usr/bin/
cp -v  ~/eev-current/debian/90eev.el   etc/emacs/site-start.d/
cp -av ~/eev-current/eev*.el           usr/share/emacs/site-lisp/eev/
cp -v  ~/eev-current/debian/eev_16.xpm usr/share/eev/
cp -v  ~/eev-current/debian/eev_32.xpm usr/share/eev/

# (find-udw3m "cdbs/cdbs-doc.html" "DEB_DESTDIR")
# (find-udw3m "cdbs/cdbs-doc.html" "build/myprog::")
# (find-udw3m "cdbs/cdbs-doc.html" "install/foo::")
# (find-man "1 dpkg-architecture" "linux-any")

# (find-maintgtext "")
# (find-maintgtext "4.4. `rules' file")

# (find-man "8 dh_make")
echo | \
DEBFULLNAME="Eduardo Ochs" \
  dh_make --email eduardoochs@gmail.com \
          --copyright=gpl \
          --cdbs \
          --native
rm -v debian/README.Debian
rm -v debian/*.EX
rm -v debian/*.ex
mv -iv debian/control debian/control.orig

# (find-eevbuilddfile "")
# (find-eevbuilddfile "rules")

      ~/eev-current/debian/control.sh    >  debian/control
cp -v ~/eev-current/debian/README.Debian    debian/README.Debian
cat   ~/eev-current/debian/rules         >> debian/rules
cp -v ~/eev-current/debian/eev.menu         debian/eev.menu
cp -v ~/eev-current/debian/eev.desktop      debian/eev.desktop

# (find-eev "debian/control.sh")
# (find-eev "debian/README.Debian")
# (find-eev "debian/rules")

# (find-eevbuildfile  "")
# (find-eevbuilddfile "")
# (find-eevbuilddfile "control")
# (find-man "1 dpkg-buildpackage")
# dpkg-buildpackage -us -uc    -rfakeroot     |& tee odb
  dpkg-buildpackage -us -uc -b -rfakeroot     |& tee odb
# (find-eevbuildfile "odb")

# «eev-deb-unpacked»  (to ".eev-deb-unpacked")
rm -Rv ~/usrc/eev/eev-unpacked/
mkdir  ~/usrc/eev/eev-unpacked/
mkdir  ~/usrc/eev/eev-unpacked/DEBIAN/
cd     ~/usrc/eev/
ar p eev_*_all.deb control.tar.gz | tar -C eev-unpacked/DEBIAN/ -xvzf -
ar p eev_*_all.deb data.tar.gz    | tar -C eev-unpacked/        -xvzf -

# (find-eevbuildufile "")
# (find-eevbuildufile "DEBIAN/")
# (find-eevbuildufile "DEBIAN/control")

# «inspect-the-DEBIAN-dir»  (to ".inspect-the-DEBIAN-dir")
# (find-eevbuildddsh "find * | sort")
# (find-eevbuildush  "find * | sort")

cd     ~/usrc/eev/
sudo dpkg -i eev*.deb
sudo dselect update

# (find-status   "eev")
# (find-vldifile "eev.list")
# (find-udfile   "eev/")

# (find-eev "debian/README.Debian")
# (find-angg "debian/README")

#*
# «apt-ftparchive»  (to ".apt-ftparchive")
# (find-es "lenny" "apt-ftparchive")
# (find-man "1 apt-ftparchive")

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
cd     ~/usrc/eev/
mkdir -p dists/./main/binary-i386/
mkdir -p dists/./main/binary-amd64/
laf
apt-ftparchive packages .
apt-ftparchive packages . \
  | tee        dists/./main/binary-i386/Packages \
  | gzip -c9 > dists/./main/binary-i386/Packages.gz
apt-ftparchive packages . \
  | tee        dists/./main/binary-amd64/Packages \
  | gzip -c9 > dists/./main/binary-amd64/Packages.gz

find * | sort

# «eev-repository.tar»  (to ".eev-repository.tar")
# (find-sh "cd ~/usrc/eev/; find eev_* dists")
# (find-sh "cd ~/usrc/eev/; find eev_* dists -type f")
#   eev_0.1_all.deb
#   eev_0.1_i386.changes
#   dists/main/binary-i386/Packages.gz
#   dists/main/binary-i386/Packages
#   (find-twusfile "debian/dists/main/binary-i386/")
#   (find-twusfile "debian/dists/main/binary-i386/Packages")
#   (find-twusfile "debian/dists/main/binary-amd64/Packages")
#
# Make a tarball of the repository:
cd ~/usrc/eev/
tar -cvf eev-repository.tar eev_*_all.deb dists eev-unpacked/

# «upload-the-deb»  (to ".upload-the-deb")
# Copy it to twu and unpack it there:
# (find-fline "~/usrc/eev/")
# (find-fline "~/usrc/eev/eev-repository.tar")
# (find-twufile  "tmp/")
# (find-twusfile  "debian/")
# (find-twusfile  "debian/eev-repository.tar")
# (ee-cp "~/usrc/eev/eev-repository.tar" (ee-twufile "tmp/eev-repository.tar") 'over)
# (find-es "page" "makepagefromtar-at-twu")

* (fvwm-sloppy-focus)
* (eebgTWU)
* (fvwm-click-to-focus)
zsh
cd     ~/slow_html/debian/
rm -Rv ~/slow_html/debian/eev-unpacked/
laf
tar -xvf ~/tmp/eev-repository.tar
laf
laf  dists/
find dists/main/   | sort
find eev-unpacked/ | sort
#
cd; tar -xvf edrx.tar; rezshrc
{makepagefromtar; makepageindexhtmls} |& tee ~/ompft



# «sources.list»  (to ".sources.list")
# Patch the /etc/apt/sources.list file (by hand):
# (find-fline "/etc/apt/sources.list")
# (find-man "5 sources.list")
# (find-es "eev" "sources.list")
# deb file:/home/edrx/usrc/eev . main
# deb http://angg.twu.net/debian . main
#
#

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
# Install the eev deb in the clean way:
sudo apt-get update
sudo dselect update

# (find-available "eev")
aptrm eev
y
apti  eev
y


# «dpkg-i»  (to ".dpkg-i")

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
# The dirty way:
cd     ~/usrc/eev/
sudo dpkg -i *.deb

# (find-sh "sudo dselect update")
# (find-available "eev")
# (find-status   "eev")
# (find-vldifile "eev.list")
# (find-udfile   "eev/")



# Test: log as aleph, run emacs-eev, type M-h M-e.
# (find-man "1 ssh" "-X" "Enables X11 forwarding.")
# (eev "ssh -X aleph@localhost xterm")

# To do: fix math glyphs,
#   http://angg.twu.net/debian/
#   http://angg.twu.net/debian/README
#   .dsc package.





#####
#
# What the debian package should do
# 2009aug03
#
#####

# «what-the-deb»  (to ".what-the-deb")
# (find-man "1 readlink")
# (find-node "(coreutils)")
# (find-node "(coreutils)readlink invocation")

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
w emacs
laf /usr/bin/emacs
laf /etc/alternatives/emacs
laf /usr/bin/emacs22-x
laf /usr/bin/emacs22

# (find-angg ".zshrc" "ae")

cat > usr/bin/emacs-eev <<'%%%'
#!/bin/sh
exec emacs -fg bisque -bg black $*
%%%

# (find-enode "Action Arguments" "`--funcall=FUNCTION'")

# Mode: add "eev"
# (find-eevfile "eev.el" "define-minor-mode eev-mode")
# (find-elnode "Index" "* define-minor-mode:")
# (find-elnode "Defining Minor Modes" "`:lighter LIGHTER'")

Two packages: emacs-eev and emacs-eev-puro
  emacs-eev should be minimal (sort of)
  emacs-eev-puro should depend on maxima and such stuff

Icon pointing to /usr/bin/emacs-eev:
# (find-angg "elisp/myxpm.el")
# (find-eevfile "eev-icon.png")





#####
#
# Backticking the definition of eev-mode
# 2009aug18
#
#####

# «backtick-eev-mode»  (to ".backtick-eev-mode")
# (find-es "emacs" "define-minor-mode")
# To be done. Big mess at the moment.

# (find-elnode "Defining Minor Modes")
# (find-elnode "Defining Minor Modes" "hungry-mode")

# (find-evardescr 'minor-mode-list)
# (find-eapropos "hung")
# (find-eapropos "hung")
# (find-eapropos "mode-line")
# (find-eapropos "mode-line-modes")
# (find-evardescr 'mode-line-modes)
# (find-evardescr 'minor-mode-alist)
# (find-evardescr 'minor-mode-alist "hungry-mode")

# (find-efunction 'hungry-mode)
# (find-efunctionpp 'hungry-mode)

(setq hungry-mode-lighter " Hungry")
(setq hungry-mode-lighter " Hung")
(setq hungry-mode-lighter nil)
(define-minor-mode hungry-mode 
  :init-value 0
  :lighter hungry-mode-lighter
  :group 'hunger)

(hungry-mode 1)
(hungry-mode 0)

# (find-eevfile "eev.el" "define-minor-mode eev-mode")

# (find-eevfile "debian/90eev.el")




#####
#
# Adding documentation to functions generated by code-c-d and friends
# 2010jul30
#
#####

# «code-c-d-docs»  (to ".code-c-d-docs")
# (find-efunction 'find-code-c-d-new)
# (find-efunction 'code-c-d)

Just a vague idea at the moment...





#####
#
# Old stuff removed from the README.Debian
# 2010sep28
#
#####

# «README.Debian»  (to ".README.Debian")
# (find-eev "debian/README.Debian")


# «.exploring-the-deb»		(to "exploring-the-deb")
# «.what-the-deb-does»		(to "what-the-deb-does")
# «.how-the-deb-is-built»	(to "how-the-deb-is-built")
# «.upstream»			(to "upstream")
# «.repository»			(to "repository")

# «exploring-the-deb»  (to ".exploring-the-deb")
# «what-the-deb-does»  (to ".what-the-deb-does")
# «how-the-deb-is-built»  (to ".how-the-deb-is-built")


Exploring the .deb (without installing it)
==========================================
This package is so trivial at this moment that it would be pointless -
and misleading - to create a source debian package for it. The best
way to inspect the .deb, then, is to unpack it directly:

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
  rm -Rv ~/usrc/eev-deb/
  mkdir  ~/usrc/eev-deb/
  cd     ~/usrc/eev-deb/
  cp -v  ~/usrc/eev/eev_0.1_all.deb .

  ar t eev_0.1_all.deb
  ar p eev_0.1_all.deb debian-binary
  ar p eev_0.1_all.deb control.tar.gz | tar -tvzf -
  ar p eev_0.1_all.deb data.tar.gz    | tar -tvzf -

  mkdir DEBIAN/
  ar p eev_0.1_all.deb control.tar.gz | tar -C DEBIAN/ -xvzf -
  ar p eev_0.1_all.deb data.tar.gz    | tar -xvzf -
  #
  # (find-sh "cd ~/usrc/eev-deb/ && find | sort")
  # (find-fline "~/usrc/eev-deb/")



What the .deb does
==================
See:

In short: nothing! 8-)
Well, not exactly, but the .deb is incredibly non-invasive: the
"find-sh ... find | sort" above reports these files:


There are no installation scripts - no eev.{pre,post}{inst,rm} files in:
  (find-fline "/var/lib/dpkg/info/" "eev")
and the only thing that runs automatically in some sense is this file,
  (find-eev       "debian/90eev.el")
  /etc/emacs/site-start.d/90eev.el
that only contains one definition, for `eev-activate-initial' (see below).
If you start Emacs with
  (find-eev "debian/emacs-eev")
  /usr/bin/emacs-eev
rather than with "emacs", the "--funcall=eev-activate-initial"
argument in the emacs-eev script runs the `eev-activate-initial'
function in 90eev.el, which is:

  (defun eev-activate-initial ()
    (interactive)
    (add-to-list 'load-path "/usr/share/emacs/site-lisp/eev")
    (setq eev-lighter " eev")
    (require 'eev-all)      ; (find-eev "eev-all.el")
    (eev-mode 1))

it is that function that adds the /usr/share/emacs/site-lisp/eev/
directory to the load-path, loads the eev modules and turns on
eev-mode. So: if you invoke Emacs using the `emacs-eev' script you get
an Emacs with eev loaded - from /usr/share/emacs/site-lisp/eev/ - and
turned on; if you invoke the standard `emacs' there are no changes at
all - not even in the load-path!

  (find-debemacspoltext)

How the .deb is built
=====================
Currently, by this script:
  (find-es "eev" "dh-make-2")

# «upstream»  (to ".upstream")

Upstream
========
The correct way to obtain the *most current* eev source tree is to
fetch this tarball:
  http://angg.twu.net/edrx.tgz
It contains the sources that are used to generate the pages at
<http://angg.twu.net/>. That tarball is updated about twice a week.
The "official" eev-current tarball, at
  http://angg.twu.net/eev-current.tar.gz
is updated less often.

The .deb package is very alpha-ish now, and it is changing very often.


# «repository»  (to ".repository")

The repository
==============
It should be possible to install the .deb in your machine with apt by
adding this line to your /etc/apt/sources.list file,

  deb http://angg.twu.net/debian . main

and then doing the usual "apt-get update; apt-get install eev"
sequence.

The repository is generated with these commands:

  (find-es "eev" "eev-repository.tar")

actually they generate a tarball that you can install anywhere - e.g.,
on a local server (this is what I plan to do for the local undergrad
lab at my university). See:

  (find-es "eev" "sources.list")
  (find-fline "/etc/apt/sources.list")





#####
#
# Very old notes on vncserver
# 2021oct27
#
#####

# «vncserver-very-old»  (to ".vncserver-very-old")

# Kill the running vncserver
vncserver -kill :2
killall -9 Xrealvnc
rm -fv /tmp/.X2-lock
rm -fv /tmp/.X11-unix/X2

rm -Rv ~/.vnc/     ;# goodbye, old vnc password, goodbye
vncserver -geometry 600x400 -depth 16 :2
password
password

export DISPLAY=:0.0
my_vnc2swf -nostatus /tmp/channels.swf :2
password





#####
#
# vnc2swf
# 2010nov14
#
#####

# «vnc2swf»  (to ".vnc2swf")
# (find-es "vnc" "vnc2swf")
# (find-eev "anim/")
# (find-eev "examples/anim.e" "compile-vnc2swf")





#####
#
# byzanz
# 2010nov14
#
#####

# «byzanz»  (to ".byzanz")
# (find-eev "examples/anim.e" "movie1_A0")

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
apti byzanz
# (find-status   "byzanz")
# (find-vldifile "byzanz.list")
# (find-udfile   "byzanz/")

# (find-man "1 byzanz-record")
# (find-man "1 byzanz-record" "--display=DISPLAY")
# (find-man "1 byzanz-record" "    byzanz ")
# (find-man "1 byzanz-playback")

# (find-sh "byzanz-record --help")
# (find-sh "byzanz-record --help-all")




#####
#
# isend
# 2016apr19
#
#####

# «isend» (to ".isend")
# (find-es "emacs" "isend")
# (find-epackage 'isend-mode)
(code-c-d "isend" "~/.emacs.d/elpa/isend-mode-20190201.832/")
# (find-isendfile "")

# https://github.com/ffevotte/isend-mode.el
# https://github.com/ffevotte/isend-mode.el.git
# (find-git-links "https://github.com/ffevotte/isend-mode.el.git" "isendmode")
# (code-c-d "isendmode" "~/usrc/isend-mode.el/")
# (find-isendmodefile "")

(add-to-list 'load-path "~/usrc/isend-mode.el/")
(require 'isend-mode)
(require 'isend)
;; (find-efunctiondescr 'isend-mode)

# http://lists.gnu.org/archive/html/emacs-orgmode/2016-04/msg00495.html Xor3
# http://lists.gnu.org/archive/html/emacs-orgmode/2016-04/msg00498.html Edrx






#####
#
# Message about removing the "[eev]" from the eev mailing list (for dmarc)
# 2019oct24
#
#####

# «dmarc» (to ".dmarc")
# https://mail.google.com/mail/ca/u/0/#inbox/FMfcgxwDrtxxhkrDfHmzpZSGQwmFTtMQ
# https://lists.gnu.org/archive/html/eev/2019-10/msg00000.html

# https://lists.gnu.org/archive/html/savannah-hackers-public/2019-06/msg00018.html
# https://lists.gnu.org/archive/html/savannah-hackers-public/2019-09/msg00016.html

[1]: https://wiki.list.org/DEV/DMARC
[2]: https://lists.debian.org/debian-devel-announce/2015/08/msg00003.html
[5]: https://en.wikipedia.org/wiki/DomainKeys_Identified_Mail
[6]: https://en.wikipedia.org/wiki/DMARC
[7]: https://dmarc.org/wiki/FAQ#senders
[8]: https://tools.ietf.org/html/rfc7489




#####
#
# Modifying eepitch to make it drop the first two space chars in each line
# 2019dec22
#
#####

# «eepitch-indented» (to ".eepitch-indented")
# (find-anggfile "dednat6/extra-modules.txt")

;; (find-efunction 'eepitch-this-line)
;; (find-evariable 'eepitch-regexp)
;; (find-evardescr 'eepitch-regexp)

(setq eepitch-regexp "^*\\(.*\\)")
(setq eepitch-regexp "^ **\\(.*\\)")

;; (find-efunction 'eepitch-line)
;; (replace-regexp-in-string "^  " "" "  foo")
;; (replace-regexp-in-string "^  " ""   "foo")
;;
(defun eepitch-line (line)
  "Modified version - strips two spaces from the beginning"
  (eepitch-eval-at-target-window
   '(progn (goto-char (point-max))
	   (insert (replace-regexp-in-string "^  " "" line))
	   (call-interactively (key-binding "\r")))))




#####
#
# Make eepitch ignore ";;"s at the beginning of lines (for Tomas Hlavaty)
# 2021feb21
#
#####

# «eepitch-indented-tomas»  (to ".eepitch-indented-tomas")
# Original defs:
# (find-eev "eepitch.el" "eepitch")
# (find-eev "eepitch.el" "eepitch" "(defvar eepitch-regexp")
# (find-eev "eepitch.el" "eepitch-this-line")
# (find-eev "eepitch.el" "eepitch-this-line" "(defun eepitch-line")
# (setq eepitch-regexp "^*\\(.*\\)")

(setq eepitch-regexp (rx bol (opt ";;" (opt " ")) "*" (group (* any)) eol))

(defun eepitch-line (line)
  "Modified version - strips `;;'s from the beginning of lines"
  (eepitch-eval-at-target-window
   '(progn (goto-char (point-max))
	   (insert (replace-regexp-in-string "^;;[ \t]?" "" line))
	   (call-interactively (key-binding "\r")))))

;; * (eepitch-shell)
;; * (eepitch-kill)
;; * (eepitch-shell)
;; cd /tmp

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
cd /tmp/



#####
#
# eev2.tgz
# 2012nov03
#
#####

# «eev2.tgz» (to ".eev2.tgz")
# (find-angg ".zshrc" "eev2-files")
# (find-angg ".zshrc" "eev2-files" "eev2-test ()")
# (find-zsh "eev2-test")
# (find-eev "Makefile" "tarball" "VERSION")
# (find-eevsh "grep ^.require eev2-all.el")
# (find-eevsh "grep ^.require eev2-all.el | awk '{print $2}'")
# (find-eevsh "grep ^.require eev2-all.el | awk '{print substr($2, 2, length($2)-2)}'")
# (find-eevsh "grep ^.require eev2-all.el | awk '{print substr($2, 2, length($2)-2) \".el\"}'")

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
cd ~/eev-current/
(TZ=GMT date; date) > VERSION
A=( eepitch.el eev-wrap.el eev-flash.el eev-eval.el eev-multiwindow.el
    eev-mode.el eev-blinks.el eev-plinks.el eev-elinks.el
    eev-tlinks.el eev-code.el eev-env.el eev-brxxx.el eev-pdflike.el
    eev-audiovideo.el eev-anchors.el eev-intro.el eev-edit.el
    eejump.el eev-prepared.el eev-bounded.el eev-channels.el eev-rcirc.el )
tar -cvzf /tmp/eev2.tgz VERSION eev-readme.el eev2-all.el $A
laf       /tmp/eev2.tgz

# Test:
* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
rm -Rv /tmp/eev/
mkdir  /tmp/eev/
cd     /tmp/eev/
tar -xvzf ../eev2.tgz
FvwmCommand "CursorMove +0 +100" &&
  emacs -Q -fn 6x13 -fg bisque -bg black eev-readme.el





#####
#
# eev2 videos: 1.sh
# 2012nov03
#
#####

# «eev2-video-1.sh» (to ".eev2-video-1.sh")
# (find-angg "eev-videos/1.sh")

* (find-sh0 "~/eev-videos/1.sh down xterm 80x30+0+0 ffmpeg 530x550+0+0")
# (find-fline    "/tmp/" "out.mp4")
# (find-sh0 "killall    ffmpeg")
# (find-sh0 "killall -9 ffmpeg")
* (find-mplayer0 "/tmp/out.mp4")

# (find-zsh "eev2-build-tgz")

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
Scp -v /tmp/eev2.tgz edrx@angg.twu.net:slow_html/eev-current/
Scp -v /tmp/eev2.tgz edrx@angg.twu.net:public_html/eev-current/

* (eepitch-shell2)
* (eepitch-kill)
* (eepitch-shell2)
cd ~/eev-videos/
Scp -v 2* edrx@angg.twu.net:slow_html/eev-videos/



rm -Rv /tmp/eev/
mkdir  /tmp/eev/
cd     /tmp/eev/
wget http://angg.twu.net/eev-current/eev2.tgz && tar -xvzf eev2.tgz
# tar -C /tmp/eev/ -xvzf /tmp/eev2.tgz
emacs -Q -fn 6x13 -fg bisque -bg black eev-readme.el
# (find-fline "/tmp/eev/")
# (find-fline "/tmp/eev/eev-readme.el")



# (find-fline "/tmp/eev2-current.tar.gz")
# (find-eev "eev-readme.el")
# (find-eev-intro "\nInstalling eev\n")
# (find-efunction 'find-eev-intro "\nInstalling eev\n")



# (find-eevgrep "grep -nH -e ee-format *.el")
# (find-eevgrep "grep -nH -e find-function-read *.el")
# (find-eevgrep "grep -nH -e ee-buffer-name *.el")
# (find-eevgrep "grep -nH -e Info-goto-node *.el")
# (find-efunctiondescr 'Info-goto-node)
# (find-efunction      'Info-goto-node)
# (find-efunctiondescr 'info)
# (find-efunction      'info)

ee-buffer-name


(ee-no-properties (format-mode-line mode-line-format))



# (find-angg ".zshrc" "emacs-default")

cd /tmp/
cat > eev2-load.el <<'%%%'
(progn
 (menu-bar-mode 0)
 (tool-bar-mode 0)
 (scroll-bar-mode -1)
 (add-to-list 'load-path "~/eev-current/")
 (require 'eev2-all)
 (eev-mode 1)
 )
%%%

emacs-default-X -geometry 80x37+10+10 -Q eev2-load.el




#####
#
# eev2: pack, unpack, test
# 2012nov08
#
#####

# (find-angg ".zshrc" "eev2-files")
# «eev2-build-tgz»   (to ".eev2-build-tgz")
# «eev2-test-unpack» (to ".eev2-test-unpack")
# «eev2-test»        (to ".eev2-test")

# (find-eev "eev-readme.el")

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
rm -v /tmp/eev2.tgz
eev2-build-tgz
laf   /tmp/eev2.tgz
eev2-test

# (eek "M-h M-k C-x r l  ;; bookmark-bmenu-list")






#####
#
# eev2: htmlize intros
# 2012nov03
#
#####

# «eev2-hmtlize-intros» (to ".eev2-hmtlize-intros")
# (find-angg "eev-intros/README")
# (load    "~/eev-intros/README")
# file:///home/edrx/TH/L/eev-intros/
# file:///home/edrx/TH/L/eev-intros/find-eev-intro.html
#    http://angg.twu.net/eev-intros/
#    http://angg.twu.net/eev-intros/find-eev-intro.html



#####
#
# eev2: scripts to add a new intro
# 2012nov03
#
#####

# «eev2-add-new-intro» (to ".eev2-add-new-intro")
# (find-eev "eev-intro.el")
# (find-eev "eev-intro.el" ".find-eev-intro")
# (find-eev "eev-intro.el"  "find-eev-intro" "0. (find-eev-intro)")
# (find-angg "eev-intros/README")
# (find-blogme3 "angglisp.lua" "find_xxx_intros")
# (find-blogme3file "anggmake.lua" "eev-intros/find-eev-intro")
# (load    "~/eev-intros/README")

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
makeL

# file:///home/edrx/TH/L/eev-intros/
# file:///home/edrx/TH/L/eev-intros/find-eev-intro.html





#####
#
# eev2: scripts to add a new file
# 2012nov03
#
#####

# «eev2-add-new-file» (to ".eev2-add-new-file")




#####
#
# eev2: upload
# 2012nov08
#
#####

# «eev2-upload» (to ".eev2-upload")
# «eev2-video-2.sh» (to ".eev2-video-2.sh")
# (find-angg ".zshrc" "eev2-files")

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
eev2-build-tgz
~/eev-videos/2.sh record

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
eev2-build-tgz
eev2-upload -v
rm -v /tmp/eev2.tgz
~/eev-videos/2.sh record

# (find-angg "eev-videos/2.sh")

# http://www.emacswiki.org/emacs/EmacsForDebian








#####
#
# Video 3: eepitch
#
#####

# «eev2-video3-eepitch» (to ".eev2-video3-eepitch")
# (defun eejump-9 () (find-screencast-links  "108c 37c"))
# (find-eev-video-links "3pt-eepitch-preliminar")
# (find-eev "eepitch.el")

(defun eep2 (s1 s2)
  (eval s1) (eepitch-kill)
  (eval s2) (eepitch-kill)
  (find-wset "13o2_o_o"
	     `(ee-here ',s1)
	     `(ee-here ',s2)))







        A short video about eepitch
        ===========================
        Eduardo Ochs, 2012nov18
        http://angg.twu.net/#eev
  


* (eep2 '(eepitch-shell) '(eepitch-lua51))
* (eepitch-lua51)
readfile = function (fname)
    local f = assert(io.open(fname, "r"))
    local bigstr = f:read("*a")
    f:close()
    return bigstr
  end

* (eepitch-shell)
echo Hello... > /tmp/o
* (eepitch-lua51)
print(readfile("/tmp/o"))
* (eepitch-shell)
echo ...bye >> /tmp/o
* (eepitch-lua51)
print(readfile("/tmp/o"))





* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
cat > /tmp/o <<'%%%'
Hello
  hello
    hello
%%%


* (eepitch-shell)
* (eepitch-kill)
* (eepitch-lua51)
* (eepitch-kill)
*














#####
#
# eev2: announcements
# 2012nov12
#
#####

# «eev2-announcements» (to ".eev2-announcements")
# http://lists.gnu.org/archive/html/eev/2012-11/msg00000.html
# http://www.emacswiki.org/EevMode
# http://angg.twu.net/#eev
# http://angg.twu.net/eev-videos/README.html

# http://www.youtube.com/watch?v=_B_4vhsmRRI Marco Baringer
# rfm: ok
# #emacs: ok




#####
#
# Move all keybindings to eev-mode
# 2014mar25
#
#####

# «move-to-eev-mode» (to ".move-to-eev-mode")
# http://article.gmane.org/gmane.emacs.eev.devel/148
# http://lists.gnu.org/archive/html/eev/2014-03/index.html




#####
#
# video: eev-quick-0
# 2016oct08
#
#####

# «video-eev-quick-0» (to ".video-eev-quick-0")
# (find-angg ".emacs" "size")
# http://angg.twu.net/eev-videos/video-eev-quick-0.mp4
# (find-twusfile "eev-videos/")
# (find-angg "eev-videos/")

# Use this to reset aleph's home:
# (find-adduser-links "aleph" "aleph")

** Shrink this emacs window,
** start the recording,
** open an xterm covering the emacs window,
** and when the xterm finishes stop the recording.
**
* (set-frame-size nil  70 20)
{
  avconv -f x11grab -s xga -i :1.0 -y /tmp/out.mp4 &
  sudo -u aleph -i xterm -geometry +0+0
  killall avconv
}
* (set-frame-size nil  80 35)

** Test the video
** (find-video "/tmp/out.mp4")
** (find-video "~/eev-videos/video-eev-quick-0.mp4")
** (find-fline "~/eev-videos/" "video-eev-quick-0.mp4")




#####
#
# video: eev-quick-1
# 2016oct08
#
#####

# «video-eev-quick-1» (to ".video-eev-quick-1")
# (find-twusfile "eev-videos/")
# (find-angg     "eev-videos/")

# Use this to reset aleph's home:
# (find-adduser-links "aleph" "aleph")

** Use this to create "~aleph/es"
* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
cd
sudo -u aleph -i
cat > ~/es <<'%%%'
#!/bin/sh
cd ~/eev/ &&
emacs \
  -Q -D -fg bisque -bg black -fn fixed \
  -T emacs_bare -geometry 167x49+0+0 \
  -l eev-readme.el --eval="(find-eev-quick-intro)"
%%%
chmod 755 ~/es
# ~/es
exit

** Shrink this emacs window,
** start the recording,
** open an xterm covering the emacs window,
** and when the xterm finishes stop the recording.
**
* (set-frame-size nil  70 20)
{
  avconv -f x11grab -s xga -i :1.0 -y /tmp/out.mp4 &
  # sudo -u aleph -i xterm -geometry +0+0
    sudo -u aleph -i ~aleph/es
  killall avconv
}

** Test the video
** (find-video "/tmp/out.mp4")
** (find-video "~/eev-videos/video-eev-quick-0.mp4")





#####
#
# video: eev-ipython-1
# 2016oct08
#
#####

# «video-sympy-1» (to ".video-sympy-1")

* (defun end0 () (message (find-sh0 "killall avconv")))
* (defun end  () (interactive) (end0) (find-es "eev" "video-sympy-1-end"))
*
* (eepitch-shell2)
* (eepitch-kill)
* (eepitch-shell2)
* (size 167 59)
avconv -f x11grab -s xga -i :1.0 -y /tmp/out.mp4 &
* (find-wset "1_" '(find-es "sympy" "tutorial"))

** «video-sympy-1-end» (to ".video-sympy-1-end")
* (eek "C-x 1")
* (size  80 35)
* ;; Test the video
* (find-googlechrome "file:///tmp/out.mp4")
* (size 210 61)

** (find-video "~/eev-videos/video-eev-quick-0.mp4")
** (find-video "/tmp/out.mp4")

* (eepitch-shell2)
* (eepitch-kill)
* (eepitch-shell2)
cd /tmp/
Scp-np -v out.mp4  edrx@angg.twu.net:/home/edrx/public_html/eev-videos/
# http://angg.twu.net/eev-videos/out.mp4





#####
#
# video-three-keys-pt-1
# 2019aug10
#
#####

# «video-three-keys-pt-1» (to ".video-three-keys-pt-1")
# (find-TH "index" "eev")
# (find-TH "index" "eev" "some screencasts")
# (find-TH "index" "eev" "some screencasts" "three-keys-1-pt")
# http://angg.twu.net/eev-videos/three-keys-1-pt.mp4
# http://www.youtube.com/watch?v=GUuCpmLItTs
# https://www.facebook.com/eduardo.ochs/posts/10220135271041709
# https://drive.google.com/drive/folders/1xKobEd6YLq31besdSrfSbPwX66QyC3di
# http://angg.twu.net/eev-videos/
# (find-twusfile     "eev-videos/")
# (find-fline      "~/eev-videos/")
# (find-fline      "~/eev-videos/" "three-keys-1-pt")
# (find-eev "eev-intro.el" "find-three-main-keys-intro")
# (find-three-main-keys-intro)

(defun big () (interactive) (set-frame-font "Monospace 22"))
(defun med () (interactive) (set-frame-font "Monospace 9"))

(big)

AINDA NÃO COMEÇOU!

(find-three-main-keys-intro)


https://youtu.be/GUuCpmLItTs
http://www.youtube.com/watch?v=GUuCpmLItTs

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
cd ~/eev-videos/
Scp-np -v three-keys-1-pt.mp4 \
  edrx@angg.twu.net:/home/edrx/slow_html/eev-videos/

# http://angg.twu.net/eev-videos/three-keys-1-pt.mp4





#####
#
# video-three-keys-2
# 2019aug14
#
#####

# «video-three-keys-2» (to ".video-three-keys-2")

(defun big () (interactive) (set-frame-font "Monospace 22"))
(defun big () (interactive) (set-frame-font "Monospace 20"))
(defun med () (interactive) (set-frame-font "Monospace 9"))
(defun yk ()  (interactive) (find-sh0 "yaxg stop") (eepitch-shell))

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
cd /tmp/
yaxg stop
laf   *.webm
rm -v *.webm
yaxg
*  (eek "C-x 1")
** (find-sh0 "yaxg stop")
*
*
** AINDA NÃO COMEÇOU!
*
*  (setq scroll-conservatively 0)
*  (setq scroll-conservatively 1)
*  (eek "C-x 1")
*  (big)
*  (find-three-main-keys-intro)


* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
cd ~/eev-videos/
Scp-np -v three-keys-2.mp4 \
  edrx@angg.twu.net:/home/edrx/slow_html/eev-videos/

# http://angg.twu.net/eev-videos/three-keys-2.mp4




#####
#
# video-three-keys-index
# 2019aug15
#
#####

# «video-three-keys-index» (to ".video-three-keys-index")
# (find-fline "~/eev-videos/")
# (find-code-audiovideo-links "~/eev-videos/three-keys-1-pt.mp4" "eevtk1")
# (find-code-audiovideo-links "~/eev-videos/three-keys-2.mp4"    "eevtk2")

;; (find-video "~/eev-videos/three-keys-1-pt.mp4")
(code-video "eevtk1video" "~/eev-videos/three-keys-1-pt.mp4")
;; (find-eevtk1video)
;; (find-eevtk1video "1:34" "Três teclas")
;; (find-eevtk1video "3:08" "Emacs é um ambiente Lisp")
;; (find-eevtk1video "4:22" "São programas pequenininhos")

;; (find-video "~/eev-videos/three-keys-2.mp4")
(code-video "eevtk2video" "~/eev-videos/three-keys-2.mp4")
;; (find-eevtk2video)
;; (find-eevtk2video "9:46" "Emacs calls the cursor the point")
;; (find-eevtk2video "9:49" "the sexp before point")
;; (find-eevtk2video "10:03" "C-x C-e")

# (eev-avadj-mode)
# (eev-avadj-mode 0)



#####
#
# video-emacsconf-short
# 2019oct24
#
#####

# «video-emacsconf-short» (to ".video-emacsconf-short")
# https://drive.google.com/drive/folders/1rKrtcF873TP3bUjMVRpVb_TiJ9l3PBWy
# (find-es "ffmpeg" "webm-to-mp4")

# (find-es "emacsconf2019" "short")
# (set-frame-font "Monospace 19")
# (set-frame-font "Monospace Bold 19")
# (find-es "emacs" "blink-cursor-mode")
# (setq blink-cursor-blinks 2)

* (big)
* (find-es "emacsconf2019" "short")

* (defun big () (interactive) (set-frame-font "Monospace 19"))
* (defun med () (interactive) (set-frame-font "Monospace 11"))
* (eek "C-x 1")
* (big)
# (find-es "emacsconf2019" "short" '(eek "C-u 9 C-l"))

* (find-sh0 "killall unclutter")
* (find-bgprocess "unclutter -idle 1")
*
* (find-3EE '(eepitch-shell2) '(eepitch-shell3))
* (eepitch-shell3)
cd /tmp/
laf   *.webm
rm -v *.webm
yaxg
* (ecop)
* (eepitch-shell2)
cd /tmp/
yaxg stop
yaxg stop
laf *.webm
* (eepitch-shell2)

# (find-fline "~/eev-videos/emacsconf/")
cd ~/eev-videos/emacsconf/
time ffmpeg -i ZOOM0035_video.webm ZOOM0035_video.mp4
time ffmpeg -i ZOOM0035end_video.webm ZOOM0035end_video.mp4



#####
#
# video-emacsconf-short: an index
# 2019nov13
#
#####

# «video-emacsconf-short-i» (to ".video-emacsconf-short-i")
# http://www.youtube.com/watch?v=86yiRG8YJD0

# (find-video "~/eev-videos/emacsconf/25_35_end0001-69788.mp4")
# (code-video "emacsconfshortvideo" "~/eev-videos/emacsconf/25_35_end0001-69788.mp4")
# (find-emacsconfshortvideo)
# (find-emacsconfshortvideo "0:00")
# (eev-avadj-mode 0)
# (eev-avadj-mode)

Index of the video:
0:00 Title page
0:15 Prehistory 1: eev appeared by accident
1:08 Prehistory 2: my notes started to have lots of elisp hyperlinks
2:35 Prehistory 3: M-x eev
3:04 Prehistory 4: several other kinds of elisp kyperlinks
4:05 Prehistory 5: these elisp hyperlinks could be put in comments
5:34 Prehistory 6: variants of M-x eev
5:41 Prehistory 7: several megabytes of scripts and notes
6:41 Prehistory 8: I was sure that everybody was using Emacs like that
7:52 Prehistory 9: users should not be forced to see Lisp
9:22 Eev as an ELPA package
10:47 Eev as an ELPA package 2: tutorials, beginner setup
11:19 M-j
12:54 A demo
13:10 Demo: patching xpdf
14:01 Demo: the `find-man' links
14:45 Demo: the `find-apt-get-source-links'
15:11 Demo: the eepitch block (in red star lines)
15:48 Demo: eepitch on non-red star lines
15:56 Demo: eepitch in action (two windows, smaller font)
16:40 Demo: I will not run the apt-get source --build
16:47 Demo: the `find-fline's to the source directory
17:07 Demo: `code-c-d'
17:22 Demo: `find-xpdffile'
17:32 Demo: `find-xpdfsh'
17:44 Demo: `find-xpdfgrep'
18:29 Demo: (back to the big font)
18:32 Demo: the second `find-xpdfgrep'
18:46 Demo: the relevant occurrence / direct link to it
19:18 Links




#####
#
# video-emacsconf-short: transcription of the "demo" part
# 2019nov13
#
#####

# «video-emacsconf-short-dt» (to ".video-emacsconf-short-dt")

13:11 Let me show you an example of executable notes and how to play them back.
13:18 I will only be able to explain how to _record_ these executable notes in the longer video.
13:25 Anyway: when I was recording this video I realized that xpdf was behaving in a very annoying way -
13:34 it was changing the page in moments that I didn't want it to...
13:39 and the problem was that when my finger was at the right side of the touchpad
13:45 and I moved it up or down this would be interpreted as a _mousewheel scroll_,
13:52 that would be interpreted as PageUp or PageDown,
13:57 and I wanted to disable that - I wanted to disable the support for mousewheel scroll in xpdf.
14:01 So I took a look at the man page for xpdf - here -
14:06 I didn't find a simple way to change that by changing a configuration file
14:11 but I found a section that described all the default mouse bindings - here -
14:18 I found a line that seemed to be relevant - this one -
14:21 I created a hyperlink that pointed directly to that line - this one -
14:30 and I also found an explanation for what this function does
14:35 and the explanation says that this function either scrolls up by some pixels
14:41 or it moves to the previous page - which means PageUp.
14:46 So the _quickest_ way to change xpdf - because I was in a hurry -
14:51 was by downloading and recompiling the Debian source with some changes.
14:56 I used this hyperlink here, that uses a template, to generate several links
15:01 and several shell commands for downloading and recompiling a debian source package.
15:08 I copied these lines to my notes with some small changes,
15:15 and this part - here - uses the alternative to M-x eev...
15:20 remember that I said that my old way of sending lines to the shell was by using M-x eev,
15:27 that was very clumsy: it needed several keystrokes, and it was difficult to install
15:34 because we would need to change an rcfile.
15:38 So, the new alternative to it uses just <f8>,
15:43 that behaves in one way in lines that start with a red star - like these ones -
15:49 and in another way in lines that do not start with a red star.
15:54 Let me change the font to a smaller one to show how it works.
16:00 If I type <f8> in these three lines - here -
16:03 this will set up a target buffer - here - running a shell,
16:08 and if I type <f8> in these lines - here - this will send these commands to the shell.
16:14 This command, in particular, it downloads - sorry, it _makes sure_ that I have
16:20 all the Debian packages that I need to be able to compile the source for xpdf,
16:27 and this command - here - downloads the source package for xpdf
16:34 and unpacks it. It takes a few seconds - here.
16:40 I do not want to execute this thing now - this thing would recompile the source.
16:49 So, this hyperlink - here - opens this temporary directory,
16:54 and it turns out that the source package was unpacked in this subdirectory - here -
17:04 so this hyperlink points to the subdirectory,
17:07 and this s-expression - here - defines several shorter hyperlinks with "find-xpdf" in their names
17:17 that operate in this subdirectory - here.
17:22 So, this hyperlink - here - opens that directory,
17:30 this one - here - runs these shell commands in that directory
17:37 to list all the files - remember that I haven't compiled anything yet,
17:41 so all these files belong to the source package,
17:46 and this one is much more interesting - it runs a grep in that directory.
17:51 Remember that I discovered that the name of the mouse event that was bound to
17:57 PageUp, or to the _bad_ PageUp in the bad PageDown,
18:02 was MousePress4 (and MousePress5)...
18:06 So this grep here searches for all the occurrences of MousePress4
18:12 in the source... and it shows that there are only two occurrences,
18:18 one of them in the source for the man page and the other one
18:22 in the rendered version of that source, which is not good...
18:27 Let me change to the bigger font again.
18:31 So I decided to search for the function that was associated to that mouse event -
18:39 this function here - and I found several occurrences of that string,
18:45 and it turned out that _this_ is a relevant occurrence,
18:49 so I created a direct link to that source file,
18:53 and I discovered that if I commented out these lines by hand
19:03 and recompiled everything and installed the new debian binary package
19:09 then I would get an xpdf that does not have the annoying behavior. But...
19:15 That's it.

* (eepitch-blogme3)
* (eepitch-kill)
* (eepitch-blogme3)
bigstr = [[
18:45 and it turned out that _this_ is a relevant occurrence,
18:49 so I created a direct link to that source file,
18:53 and I discovered that if I commented out these lines by hand
]]






#####
#
# video-workshop-0
# 2021nov29
#
#####

# «video-workshop-0»  (to ".video-workshop-0")
# http://angg.twu.net/2021-workshop.html
# (find-angg "elisp/emacsconf2021.el")

  Workshop: Creating and Saving Elisp Hyperlinks
  Version 0 - monday, 2021-nov-29
  Eduardo Ochs

    See: http://angg.twu.net/#eev
         http://angg.twu.net/2021-workshop.html





  (find-emacs-keys-intro "1. Basic keys (eev)")
  (find-emacs-keys-intro "1. Basic keys (eev)" "hyperlinks to here")

  (find-here-links-intro)
  (find-here-links-intro "4. `find-here-links-3'")
  (find-here-links-intro "5. `find-here-links-1'")
    (eek "C-x 1 C-x 2 C-x 2 C-x +")

  (find-eev "eev-videolinks.el" "ee-1stclassvideos-field")

           ___________________________
	  |             |             |
 M-h M-3  |     [T]     |    [EH]     |
--------> | M-1 M-h M-h |   M-h M-2   |
	  |             |   M-h M-y   |
	  |             |   M-h M--   |
          |             |   M-w       |
          |             |______::_____|
          |             |      \/     |
          |             |             |
          |             |     [N]     |
          |             |     C-y     |
          |             |             |
          |             |             |
          |_____________|_____________|





#####
#
# video-workshop-1
# 2021dec01
#
#####

# «video-workshop-1»  (to ".video-workshop-1")
# (find-eev-exercises-intro)
# (find-ssr-links     "2021workshop1" "2021-workshop-1" "HuqJFPD871E")
# (code-eevvideo      "2021workshop1" "2021-workshop-1" "HuqJFPD871E")
# (code-eevlinksvideo "2021workshop1" "2021-workshop-1" "HuqJFPD871E")
# (find-2021workshop1video "0:00")
# (sshot 5 "2021-workshop-1")



  Very short video 1:
  the base cases 1 and 2

  Eduardo Ochs


  For the  --->  Workshop on Creating and
                 Saving Elisp Hyperlinks

            Today: Wednesday, 2021-dec-01
          Workshop: Saturday, 2021-dec-04

    See: http://angg.twu.net/#eev
         http://angg.twu.net/2021-workshop.html





#####
#
# video-workshop-2
# 2021dec02
#
#####

# «video-workshop-2»  (to ".video-workshop-2")
# (find-eev-exercises-intro "3. Two-window settings")
# (find-eev-exercises-intro "Very short video 2")
# (find-ssr-links     "2021workshop2" "2021-workshop-2" "hqqIlZBXNhk")
# (code-eevvideo      "2021workshop2" "2021-workshop-2" "hqqIlZBXNhk")
# (code-eevlinksvideo "2021workshop2" "2021-workshop-2" "hqqIlZBXNhk")
# (find-2021workshop2video "0:00")
# (find-2021workshop2video "1:10")
# (find-2021workshop2video "2:18")
# (find-2021workshop2video "3:07")

# (find-sshot-links "5" "2021-workshop-2")

# (find-fline "~/TODO" :end -100 '(eek "M-2 M-5 C-l"))

# (defun e () (interactive) (find-es "eev" "video-workshop-2"))

# (find-fline "~/TODO" :end -100)

# (eek "C-x 1")
# (eejump-16)
# (find-eev-exercises-intro "Very short video 2" 9 '(eek "C-l") -5)


  Very short video 2:
  Creating a link to a file
    with a 2-window setting

  Eduardo Ochs


  For the  --->  Workshop on Creating and
                 Saving Elisp Hyperlinks

             Today: Thursday, 2021-dec-01
          Workshop: Saturday, 2021-dec-04

    See: http://angg.twu.net/#eev
         http://angg.twu.net/2021-workshop.html




#####
#
# video-workshop-3
# 2021dec03
#
#####

# «video-workshop-3»  (to ".video-workshop-3")
# (find-sshot-links "5" "2021-workshop-3")
# (find-ssr-links     "2021workshop3" "2021-workshop-3" "r83inf9s8zo")
# (code-eevvideo      "2021workshop3" "2021-workshop-3" "r83inf9s8zo")
# (code-eevlinksvideo "2021workshop3" "2021-workshop-3" "r83inf9s8zo")
# (find-2021workshop3video "0:00")

https://youtu.be/r83inf9s8zo

(defun a () (interactive) (find-fline "/tmp/a"))
(defun b () (interactive) (find-fline "/tmp/b"))
(defun ab () (interactive) (find-2a '(a) (b)))
(defun tb () (interactive) (find-2a '(eejump-1) (b)))






  Very short video 3:
  Material on `M-3 M-e'

    or: What does it mean to
        "save links to everything
         that is interesting"?

        ^ (this is the harder half of
           "taking executable notes")

  Eduardo Ochs



  For the  --->  Workshop on Creating and
                 Saving Elisp Hyperlinks

               Today: Friday, 2021-dec-03
          Workshop: Saturday, 2021-dec-04

    See: http://angg.twu.net/#eev
         http://angg.twu.net/2021-workshop.html




       (find-eev-quick-intro "2. Evaluating Lisp")
       (find-eev-quick-intro "2. Evaluating Lisp" "M-0 M-e")

       What are these other prefixes? What do they do?
        Is there a place in the documentation that lists these prefixes?
        Where is the source code? Is it readable?
        How can we discover all that?

        My memory is very bad.
        I wiil pretend that it's even worse.

       How can I rediscover what `M-3 M-e' does?
       How can I rediscover all my material on `M-3 M-e'?
          How do I find this material?
          How do I save hyperlinks to everything interesting
           that I find on the way?







  3-window setting (for beginners):
   _______________           _____________________           ________________
  |               |         |          |          |         |                |
  |               |         |          |  elinks  |         |                |
  |               |         |          |  buffer  |         |                |
  |    target     | M-h M-3 |  target  |__________| M-h M-1 |     target     |
  |    buffer     | ------> |  buffer  |          | ------> |     buffer     |
  |               |         |          |  notes   |         |                |
  |               |         |          |  buffer  |         |                |
  |_______________|         |__________|__________|         |________________|


  1-window setting:
  (for experts and addicts)
   __________         __________         __________         __________ 
  |          |       |          |       |          |	   |          |
  |  target  | M-hh  |  elinks  | M-1j  |  notes   | M-K*  |  target  |
  |  buffer  | ----> |  buffer  | ----> |  buffer  | ----> |  buffer  |
  |          |       |          |       |          |	   |          |
  |__________|       |__________|       |__________|  	   |__________|


  In this video:
   ______________________ 
  |           |          |
  |  target/  |          |
  |  elinks/  |  cheat   |
  |  notes    |  sheet   |
  |  buffer   |          |
  |           |          |
  |___________|__________|





       (find-eev-quick-intro "2. Evaluating Lisp")
       (find-eev-quick-intro "2. Evaluating Lisp" "M-0 M-e")
       (find-eev-quick-intro "4.2. `find-ekey-links' and friends")
       (eek "M-h M-k  M-e")
       (eek "M-h M-k  M-e  ;; ee-eval-sexp-eol")
  (find-eek "M-h M-k  M-e  ;; ee-eval-sexp-eol")
  (find-eek "M-h M-k  M-e  ;; ee-eval-sexp-eol" "(find-efunction ')")
             (find-efunction 'ee-eval-sexp-eol)
             (find-efunction 'ee-eval-sexp-eol "3:")
             (eek "2*<up> M-3 M-e")
             (find-efunction 'ee-eval-last-sexp)
             (find-efunction 'ee-eval-last-sexp-3)
             (find-efunction 'ee-eval-last-sexp-3 "find-wset")
             (find-efunction 'find-wset)

  (find-emacs-keys-intro "6. Windows")
  (find-emacs-keys-intro "6. Windows" "L|R")

  (find-eev-intro)
  (find-eev-intro "M-5 M-0 M-j")
  (find-eev-intro "(find-multiwindow-intro)")
  (find-multiwindow-intro)

  (find-wset "13o_2o2o23oo33ooo"  '(find-ebuffer "B"))
  (find-wset "13o_2o2o23oo33ooo+" '(find-ebuffer "B"))
  (find-2a nil '(find-efunction 'ee-eval-sexp-eol))
  (find-2b nil '(find-efunction 'ee-eval-sexp-eol))




#####
#
# video-workshop-4
# 2021dec04
#
#####

# «video-workshop-4»  (to ".video-workshop-4")
# (find-eev-exercises-intro "2.3. Invisible text")
# (find-1stclassvideo-links "2021workshop4")
# (find-2021workshop4video "0:00")
# (find-sshot-links "5" "2021-workshop-4")

  Very short video 4:
  invisible text

  Eduardo Ochs

  For the  --->  Workshop on Creating and
                 Saving Elisp Hyperlinks

          Workshop: Saturday, 2021-dec-04

    See: http://angg.twu.net/#eev
         http://angg.twu.net/2021-workshop.html






#####
#
# video-workshop-5
# 2021dec04
#
#####

# «video-workshop-5»  (to ".video-workshop-5")
# (find-eev-exercises-intro "2. Copy from left to right")
# (find-ssr-links "2021workshop5" "2021-workshop-5" "VzRsterVSXs")
# (find-1stclassvideo-links "2021workshop5")
# (find-2021workshop5video "0:00")
# (find-sshot-links "5" "2021-workshop-5")

  Very short video 5:
  copy from left to right

  Eduardo Ochs

  For the  --->  Workshop on Creating and
                 Saving Elisp Hyperlinks

          Workshop: Saturday, 2021-dec-04

    See: http://angg.twu.net/#eev
         http://angg.twu.net/2021-workshop.html






#####
#
# video-workshop-6
# 2021dec04
#
#####

# «video-workshop-6»  (to ".video-workshop-6")
# (find-eev-exercises-intro "2.2. `find-extra-file-links'")
# (find-ssr-links "2021workshop6" "2021-workshop-6" "-gi15-liGaU")
# (find-1stclassvideo-links "2021workshop6")
# (find-2021workshop6video "0:00")
# (find-sshot-links "6" "2021-workshop-6")



  Very short video 6:
  `find-extra-file-links'

  Eduardo Ochs

  For the  --->  Workshop on Creating and
                 Saving Elisp Hyperlinks

          Workshop: Saturday, 2021-dec-04

    See: http://angg.twu.net/#eev
         http://angg.twu.net/2021-workshop.html




#####
#
# video-eev-wconfig-pt
# 2022apr30
#
#####

# «video-eev-wconfig-pt»  (to ".video-eev-wconfig-pt")
# (find-fline "~/IMAGES/2022-sitio-a-cuca-vai-pegar-EP01.jpg")
# (find-ssr-links "2022eevwconfigpt1" "2022-eev-wconfig-pt-1" "bdLbocmo3r8")
# (find-ssr-links "2022eevwconfigpt2" "2022-eev-wconfig-pt-2" "ZAAxrJX-Am8")
# (code-eevvideo  "2022eevwconfigpt1" "2022-eev-wconfig-pt-1" "bdLbocmo3r8")
% (code-eevvideo  "2022eevwconfigpt2" "2022-eev-wconfig-pt-2" "ZAAxrJX-Am8")
# (find-2022eevwconfigpt1video "0:00")
% (find-2022eevwconfigpt2video "0:00")


* (defun sitio () (interactive) (find-fline "~/IMAGES/2022-sitio-a-cuca-vai-pegar-EP01.jpg"))
* (defun sitio () (interactive) (find-fline "~/IMAGES/2022-sitio-a-cuca-vai-pegar-EP01-2.jpg"))
* (defun fo () (interactive) (set-frame-font "Monospace Bold 19"))
* (defun fo () (interactive) (set-frame-font "Monospace 19"))
* (defun fos () (interactive) (find-2a '(find-fline "/tmp/o") '(sitio)) (fo))
* (defun eo () (interactive) (find-fline "/tmp/o"))
* (defun cato () (interactive) (find-sh "cat /tmp/o"))
* (defun ewd () (interactive) (find-fline "~/eev-wconfig/" "" '(eek "g")))
* (defun ewshowdir () (interactive) (find-2a nil '(ewd)))



eev-wconfig: um modo "sem mágica"
de configurar o eev no M$ Windows

  Eduardo Ochs
  http://angg.twu.net/#eev
  http://angg.twu.net/#eev-blogposts
  http://angg.twu.net/eev-wconfig.html
    2022apr30





Configuração sem mágica:
um experimento com o eev
(versão em Português)

  Eduardo Ochs
  http://angg.twu.net/#eev
  http://angg.twu.net/#eev-blogposts
  http://angg.twu.net/eev-wconfig.html
    2022may02





* (eepitch-eshell)
* (eepitch-kill)
* (find-sh0 "eev-wconfig d")
* (ewshowdir)
* (eek "C-x 1")
* (find-eev "eev-wconfig.el" "intro")
*
* (find-wconfig-browser-links)
* (setq ee-googlechrome-program "google-chrome")
*
*
* (find-wconfig-wget-links)
* (ewshowdir)
* (find-sh0 "eev-wconfig w")
* (ewshowdir)
* (find-wconfig-wget-links 2 "2. Use wget.exe")
* (ewshowdir)
* (find-sh0 "eev-wconfig c")
* (ewshowdir)
* (find-wconfig-wget-links 2 "find-callprocess")
* (ewshowdir)
* (find-wconfig-wget-links 2 "3. Make `find-wget'")
*
* (find-wconfig-shell-links)
*
* (find-wconfig-lua-links)
*
* (find-wconfig-mpv-links)
* (setq ee-mpv-program "mpv")
*
* (setq ee-googlechrome-program "c:/mainprogs/chrome.exe")
* (setq ee-mpv-program "c:/otherprogs/mpv-directory/mpv.exe")

* (find-sh0 "eev-wconfig d")
* (find-sh0 "eev-wconfig r")
* (find-fline "~/eev-wconfig/")
* (eval (read ee-wconfig-undo-links))




#####
#
# video-eev-wconfig
# 2022may07
#
#####

# «video-eev-wconfig»  (to ".video-eev-wconfig")
# (find-angg "elisp/eev-wconfig-video.el")
# (load    "~/elisp/eev-wconfig-video.el")
# (find-THfile "eev-wconfig.blogme")
# (find-THfile "eev-wconfig.blogme" "Eev-config.el: configuring eev on M$ Windows without magic")
# (find-ecolor-links "SkyBlue4")













  Eev-config.el: a way without "magic"
  to configure eev on M$ Windows

   Eduardo Ochs
   http://angg.twu.net/#eev
   http://angg.twu.net/eev-wconfig.html
   (find-1stclassvideos)
   (find-1stclassvideos      "2022eevwconfig")
   (find-1stclassvideo-links "2022eevwconfig")
   2022may15


  1. "configure"?
    Installing Emacs and eev is easy,
    but for more advanced usage
    eev needs to:  play videos,
                   display pdfs,
                   download files...
    We need to:
    download some things
    configure some paths
    put some commands in ~/.emacs



  2. Target audience:
    2.1. mainly: beginners -
         people who use Windows
         but who don't even know
         how to use a terminal -
    2.2. also: people who have
         been using Emacs for years
         and who are interested
         in alternatives to
         `M-x customize'


  3. What is eev?
    3.1. see: (find-emacsconf2019page)
    3.2. a slogan: "eev lets you record
         executable notes, and lets you
         play them back" 🤔

         Demo:
         (ee-mpv-non-fullscreen)
         (find-2022findeevanggvideo "15:17")

         ...but very few people are 
         using eev "fluently" to record
         executable notes of what they do...

    3.3. an older slogan: "eev is a
         tool for automating almost
         everything" 🤔🤔

         ...and very few people are
         using eev for automating
         their tasks... 😥


    4. Org Mode
    4.1. Org mode can ALSO be used to
         "record executable notes" and to
         "automate almost everything"...

         PROBLEM: Org Mode is "intuitive"
                  to many people,
              and eev is "intuitive"
                  to VERY, VERY, VERY FEW
                  people.

                  Org Mode is "simple"
                  in one way - related
                  to "user-friendliness"...

                  eev is "simple" in
                  another way - related
                  to Lisp.

                  (I find Org very hard)

    4.2. A trick to make eev more popular...
         TA-DA: people can use eev to learn
         Emacs and Org Mode!!!


End of Part 1



  5. Basic installation:
    5.1. install Emacs
    5.2. M-x list-packages
    5.3. install eev

      Page:
      http://angg.twu.net/#eev

      Tutorials ("intros"):
      (find-eev-quick-intro)

      Videos:
      (find-1stclassvideos)
      (find-1stclassvideo-links "eevnav")
      (find-1stclassvideoindex  "eevnav")



  6. Non-basic installation:
    6.1. install mpv
    6.2. configure the paths to
         chrome and mpv
    6.3. download wget, pdftotext, Lua
    6.4. configure lots of things

    (find-1stclassvideos)
    (find-1stclassvideo-links "eev2021")
    (find-eev2021video "0:00")
    (find-eevvideosfile "")
    (find-eevvideossh "mv -v * ../eev-videos-old/")
    (find-eev2021video "0:00")
    (find-eevvideossh "mv -v ../eev-videos-old/* .")
    (find-eev2021video "0:00")
      Btw: (find-es "mplayer" "keys")

  7. ...or replace 6.2-6.4 by:
    (require 'eev-wconfig)
    (find-wconfig-links)



  8. Exercise: Learn Org!
    8.1. See: (find-wconfig-links)
    8.2. See: (find-wconfig-exercises-links)



(code-c-d "rainerkoenig" "/sda5/videos/Rainer_Koenig/")
;; (find-rainerkoenigfile "")
(code-video "E02S01video" "/sda5/videos/Rainer_Koenig/OrgMode_E02S01_-_Tags-GcUVvlClo9k.webm")
;; (find-E02S01video)
;; (find-E02S01video "0:00")

(code-c-d "rainerkoenig" "/sda5/videos/Rainer_Koenig/")
(code-video "E01S01video" "/sda5/videos/Rainer_Koenig/OrgMode_E01S01_-_Headlines_outline_mode-sQS06Qjnkcc.webm")
;; (find-rainerkoenigfile "")
;; (find-E01S01video "0:00")
;; (find-E01S01video "2:00" "blah")



* (eepitch-eshell)
* (eepitch-kill)
* (find-sh0 "eev-wconfig d")
* (ewshowdir)
* (eek "C-x 1")
* (find-eev "eev-wconfig.el" "intro")
*
* (find-wconfig-browser-links)
* (setq ee-googlechrome-program "google-chrome")
*
*
* (find-wconfig-wget-links)
* (ewshowdir)
* (find-sh0 "eev-wconfig w")
* (ewshowdir)
* (find-wconfig-wget-links 2 "2. Use wget.exe")
* (ewshowdir)
* (find-sh0 "eev-wconfig c")
* (ewshowdir)
* (find-wconfig-wget-links 2 "find-callprocess")
* (ewshowdir)
* (find-wconfig-wget-links 2 "3. Make `find-wget'")
*
* (find-wconfig-shell-links)
*
* (find-wconfig-lua-links)
*
* (find-wconfig-mpv-links)
* (setq ee-mpv-program "mpv")
*
* (setq ee-googlechrome-program "c:/mainprogs/chrome.exe")
* (setq ee-mpv-program "c:/otherprogs/mpv-directory/mpv.exe")

* (find-sh0 "eev-wconfig d")
* (find-sh0 "eev-wconfig r")
* (find-fline "~/eev-wconfig/")
* (eval (read ee-wconfig-undo-links))






     (find-emacsconf2019page)
     (find-emacsconf2019text)
     (find-emacsconf2019page 8 "megabytes")
     (find-emacsconf2019text 8 "megabytes")
     (find-1stclassvideo-links "eev2019")
     (find-1stclassvideoindex  "eev2019")
     (find-orgnode "Working with Source Code")
     (find-1stclassvideo-links "2021orgfornonusers")


(find-extra-file-links "/sda5/videos/Rainer_Koenig/OrgMode_E02S01_-_Tags-GcUVvlClo9k.webm" "orgE02S01tags")
(code-c-d "rainerkoenig" "/sda5/videos/Rainer_Koenig/")
(find-rainerkoenigfile "")

(code-video "orgE02S01tagsvideo" "/sda5/videos/Rainer_Koenig/OrgMode_E02S01_-_Tags-GcUVvlClo9k.webm")
(find-orgE02S01tagsvideo "0:00")









#####
#
# punch-and-judy
# 2019aug18
#
#####

# «punch-and-judy» (to ".punch-and-judy")
# (find-youtubedl-links "/sda5/videos/" "Punch_and_Judy_Show_at_London_Covent_Garden_May_Fayre" "K6LmZ0A1s9U" ".mp4" "punchandjudy")
# (find-fline "/sda5/videos/" "K6LmZ0A1s9U")
# (find-video "/sda5/videos/Punch_and_Judy_Show_at_London_Covent_Garden_May_Fayre-K6LmZ0A1s9U.mp4")
# (code-video "punchandjudyvideo" "/sda5/videos/Punch_and_Judy_Show_at_London_Covent_Garden_May_Fayre-K6LmZ0A1s9U.mp4")
# (find-twusfile "eev-videos/")
# (find-twusfile "eev-videos/" "Punch_and_Judy")
# (find-fline "~/eev-videos/" "Punch_and_Judy")

# (find-eev "eev-audiovideo.el" "find-mpv-video" "ee-mpv-video-options")
# (setq ee-mpv-video-options '("--fs" "--osd-level=2"))
# (setq ee-mpv-video-options        '("--osd-level=2"))

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
# http://www.youtube.com/watch?v=K6LmZ0A1s9U
# http://angg.twu.net/eev-videos/Punch_and_Judy_Mark_Poulton-K6LmZ0A1s9U.mp4
mkdir ~/eev-videos/
cd    ~/eev-videos/
wget -nc http://angg.twu.net/eev-videos/Punch_and_Judy_Mark_Poulton-K6LmZ0A1s9U.mp4

# (find-fline "~/eev-videos/")
# (find-video "~/eev-videos/Punch_and_Judy_Mark_Poulton-K6LmZ0A1s9U.mp4")
# (code-video "punchandjudyvideo" "~/eev-videos/Punch_and_Judy_Mark_Poulton-K6LmZ0A1s9U.mp4")
# (find-punchandjudyvideo)
# (find-punchandjudyvideo "0:00")
# (find-punchandjudyvideo "0:10" "calls the baby")
# (find-punchandjudyvideo "0:40" "where's the baby")
# (find-punchandjudyvideo "1:04" "right position")
# (find-punchandjudyvideo "1:17" "he will sing the baby to sleep")
# (find-punchandjudyvideo "1:33" "1-2-3")
# (find-punchandjudyvideo "1:48" "baby downstairs")
# (find-punchandjudyvideo "3:12" "slaps")
# (find-punchandjudyvideo "3:50" "1-2-3")
# (find-punchandjudyvideo "4:34" "you keep an eye on mr Punch")
# (find-punchandjudyvideo "4:46" "hat")
# (find-punchandjudyvideo "5:03" "hat")
# (find-punchandjudyvideo "5:25" "did you see him?")
# (find-punchandjudyvideo "5:55" "clown")
# (find-punchandjudyvideo "6:14" "slaps")
# (find-punchandjudyvideo "6:52" "sausages")
# (find-punchandjudyvideo "7:24" "crocodile")
# (find-punchandjudyvideo "8:07" "crocodile + sausages")
# (find-punchandjudyvideo "8:32" "another scene")
# (find-punchandjudyvideo "8:39" "fight")
# (find-punchandjudyvideo "9:03" "clown")
# (find-punchandjudyvideo "9:45" "mr punch")



#####
#
# emacsconf2019-captions
# 2020oct20
#
#####

# «emacsconf2019-captions»  (to ".emacsconf2019-captions")

[ECS 0:00 Title page]
[ECS 0:15 Prehistory 1: eev appeared by accident]
[ECS 1:08 Prehistory 2: my notes started to have lots of elisp hyperlinks]
[ECS 2:35 Prehistory 3: M-x eev]
[ECS 3:04 Prehistory 4: several other kinds of elisp kyperlinks]
[ECS 4:05 Prehistory 5: these elisp hyperlinks could be put in comments]
[ECS 5:34 Prehistory 6: variants of M-x eev]
[ECS 5:41 Prehistory 7: [COLOR RED several megabytes of scripts and notes]
             ([R http://angg.twu.net/e/ here])]
[ECS 6:41 Prehistory 8: I was sure that everybody was using Emacs like that]
[ECS 7:52 Prehistory 9: "[COLOR red users should not be forced to see Lisp]"]
[ECS 9:22 Eev as an ELPA package]
[ECS 10:51 Eev as an ELPA package (2)]
[ECS 11:20 M-j - and
  [R [STOT (find-eev-quick-intro "7.2. The list of eejump targets")]
     how beginners should use it]
  ]
[ECS 12:54 A demo]
[ECS 13:10 Demo: patching xpdf
  ([R [STOT (find-es "emacsconf2019" "short")] e-script])
  ]
[ECS 14:01 Demo: the `find-man' links]
[ECS 14:45 Demo: the `find-apt-get-source-links']
[ECS 15:11 Demo: the eepitch block (in red star lines)
  ([R [STOT (find-eev-quick-intro "6. Controlling shell-like programs")] see this])
  ]
[ECS 15:48 Demo: eepitch on non-red star lines]
[ECS 15:56 Demo: [COLOR red eepitch in action]]
[ECS 16:47 Demo: the `find-fline's to the source directory]
[ECS 17:07 Demo: `code-c-d'
  ([R [STOT (find-eev-quick-intro "9. Shorter hyperlinks")] see this])
  ]
[ECS 17:22 Demo: `find-xpdffile']
[ECS 17:32 Demo: `find-xpdfsh']
[ECS 17:44 Demo: `find-xpdfgrep']
[ECS 18:32 Demo: the second `find-xpdfgrep']
[ECS 18:46 Demo: the relevant occurrence / direct link to it]
[ECS 19:18 Links]
]

[P A transcription of what I say in the final part (i.e., in the demo):
[ECSQ 13:11 Let me show you an example of "executable notes and how to play them back".]
[ECSQ 13:18 I will only be able to explain how to _record_ these executable notes in the longer video.]
[ECSQ 13:25 Anyway: when I was recording this video I realized that xpdf was behaving in a very annoying way -]
[ECSQ 13:34 it was changing the page in moments that I didn't want it to...]
[ECSQ 13:39 and the problem was that when my finger was at the right side of the touchpad]
[ECSQ 13:45 and I moved it up or down this would be interpreted as a _mousewheel scroll_,]
[ECSQ 13:52 that would be interpreted as PageUp or PageDown,]
[ECSQ 13:57 and I wanted to disable that - I wanted to disable the support for mousewheel scroll in xpdf.]
[ECSQ 14:01 So I took a look at the man page for xpdf - here -]
[ECSQ 14:06 I didn't find a simple way to change that by changing a configuration file]
[ECSQ 14:11 but I found a section that described all the default mouse bindings - here -]
[ECSQ 14:18 I found a line that seemed to be relevant - this one -]
[ECSQ 14:21 I created a hyperlink that pointed directly to that line - this one -]
[ECSQ 14:30 and I also found an explanation for what this function does]
[ECSQ 14:35 and the explanation says that this function either scrolls up by some pixels]
[ECSQ 14:41 or it moves to the previous page - which means PageUp.]
[ECSQ 14:46 So the _quickest_ way to change xpdf - because I was in a hurry -]
[ECSQ 14:51 was by downloading and recompiling the Debian source with some changes.]
[ECSQ 14:56 I used this hyperlink here, that uses a template, to generate several links]
[ECSQ 15:01 and several shell commands for downloading and recompiling a debian source package.]
[ECSQ 15:08 I copied these lines to my notes with some small changes,]
[ECSQ 15:15 and this part - here - uses the alternative to M-x eev...]
[ECSQ 15:20 remember that I said that my old way of sending lines to the shell was by using M-x eev,]
[ECSQ 15:27 that was very clumsy: it needed several keystrokes, and it was difficult to install]
[ECSQ 15:34 because we would need to change an rcfile.]
[ECSQ 15:38 So, the new alternative to it uses just <f8>,]
[ECSQ 15:43 that behaves in one way in lines that start with a red star - like these ones -]
[ECSQ 15:49 and in another way in lines that do not start with a red star.]
[ECSQ 15:54 Let me change the font to a smaller one to show how it works.]
[ECSQ 16:00 If I type <f8> in these three lines - here -]
[ECSQ 16:03 this will set up a target buffer - here - running a shell,]
[ECSQ 16:08 and if I type <f8> in these lines - here - this will send these commands to the shell.]
[ECSQ 16:14 This command, in particular, it downloads - sorry, it _makes sure_ that I have]
[ECSQ 16:20 all the Debian packages that I need to be able to compile the source for xpdf,]
[ECSQ 16:27 and this command - here - downloads the source package for xpdf]
[ECSQ 16:34 and unpacks it. It takes a few seconds - here.]
[ECSQ 16:40 I do not want to execute this thing now - this thing would recompile the source.]
[ECSQ 16:49 So, this hyperlink - here - opens this temporary directory,]
[ECSQ 16:54 and it turns out that the source package was unpacked in this subdirectory - here -]
[ECSQ 17:04 so this hyperlink points to the subdirectory,]
[ECSQ 17:07 and this s-expression - here - defines several shorter hyperlinks with "find-xpdf" in their names]
[ECSQ 17:17 that operate in this subdirectory - here.]
[ECSQ 17:22 So, this hyperlink - here - opens that directory,]
[ECSQ 17:30 this one - here - runs these shell commands in that directory]
[ECSQ 17:37 to list all the files - remember that I haven't compiled anything yet,]
[ECSQ 17:41 so all these files belong to the source package,]
[ECSQ 17:46 and this one is much more interesting - it runs a grep in that directory.]
[ECSQ 17:51 Remember that I discovered that the name of the mouse event that was bound to]
[ECSQ 17:57 PageUp, or to the _bad_ PageUp in the bad PageDown,]
[ECSQ 18:02 was MousePress4 (and MousePress5)...]
[ECSQ 18:06 So this grep here searches for all the occurrences of MousePress4]
[ECSQ 18:12 in the source... and it shows that there are only two occurrences,]
[ECSQ 18:18 one of them in the source for the man page and the other one]
[ECSQ 18:22 in the rendered version of that source, which is not good...]
[ECSQ 18:27 Let me change to the bigger font again.]
[ECSQ 18:31 So I decided to search for the function that was associated to that mouse event -]
[ECSQ 18:39 this function here - and I found several occurrences of that string,]
[ECSQ 18:45 and it turned out that _this_ is a relevant occurrence,]
[ECSQ 18:49 so I created a direct link to that source file,]
[ECSQ 18:53 and I discovered that if I commented out these lines by hand]
[ECSQ 19:03 and recompiled everything and installed the new debian binary package]
[ECSQ 19:09 then I would get an xpdf that does not have the annoying behavior. But...]
[ECSQ 19:15 That's it.]




#####
#
# 2020-several-tbfs
# 2020dec25
#
#####

# «2020-several-tbfs»  (to ".2020-several-tbfs")
# (find-TH "2020-some-template-based")
# (defun e () (interactive) (find-fline "~/elisp/several-templated-functions-2020.el"))
# (find-ssr-links "2020sometbf" "2020_some_template-based_functions")
# (code-eevvideo  "2020sometbf" "2020_some_template-based_functions" "91-9YfRPsuk")
# http://angg.twu.net/eev-videos/2020_some_template-based_functions.mp4
# (code-video "2020sometbfvideo" "$S/http/angg.twu.net/eev-videos/2020_some_template-based_functions.mp4")
# (find-2020sometbfvideo  "0:00" "Title")
# (find-2020sometbfvideo  "0:17"   "the reason for this title")
# (find-2020sometbfvideo  "0:18" "1. `find-find-links-links-new'")
# (find-2020sometbfvideo  "1:29"   "generated again with these values")
# (find-2020sometbfvideo  "1:50"   "the implementation is very simple")
# (find-2020sometbfvideo  "2:00"   "in five minutes because ... generates skeletons")
# (find-2020sometbfvideo  "5:03" "2. `M-x brep'")
# (find-2020sometbfvideo  "5:43"   "a way to download local copies")
# (find-2020sometbfvideo  "7:11"   "The new way: `M-x brep'")
# (find-2020sometbfvideo  "8:15"   "by typing `M-x brep'")
# (find-2020sometbfvideo  "8:50"   "and then we get this buffer here")
# (find-2020sometbfvideo  "9:17" "3. The function that defines brep")
# (find-2020sometbfvideo  "9:38"   "`code-brurl' is a variant of `code-c-d'")
# (find-2020sometbfvideo "10:07"   "find-code-url shows the code instead of executing it")
# (find-2020sometbfvideo "11:26"   "this is explained in the main tutorial")
# (find-2020sometbfvideo "12:12"   "accept extra arguments")
# (find-2020sometbfvideo "12:34"   "if we run just this")
# (find-2020sometbfvideo "12:40"   "one of the reasons for using text: comments")
# (find-2020sometbfvideo "13:03"   "if we run just this with extra arguments")
# (find-2020sometbfvideo "14:10"   "code-brurl executes this code here")
# (find-2020sometbfvideo "14:20" "4. `find-esetkey-links'")
# (find-2020sometbfvideo "15:20"   "a big header with lots of help")
# (find-2020sometbfvideo "16:28"   "I have these keybindings, for toggling")
# (find-2020sometbfvideo "17:06"   "I realized that I use `M-x wrap' very often")
# (find-2020sometbfvideo "18:18"   "in the emacs-devel mailing list")
# (find-2020sometbfvideo "18:32"   "users should not be forced to see lisp")
# (find-2020sometbfvideo "19:23" "5. `find-youtubedl-links'")
# (find-2020sometbfvideo "19:43"   "if we twist the notion user enough")
# (find-2020sometbfvideo "20:02"   "user-friendly to me")
# (find-2020sometbfvideo "20:05"   "The documentation is in this tutorial:")
# (find-2020sometbfvideo "21:36"   "its code is here")
# (find-2020sometbfvideo "21:55"   "Let me show a demo")
# (find-2020sometbfvideo "22:15"   "I never type these rm -Rv/mkdir/cd by hand")
# (find-2020sometbfvideo "22:48"   "let me show how to download ... the hash is here")
# (find-2020sometbfvideo "23:25"   "they regenerate this buffer in slightly different ways")
# (find-2020sometbfvideo "24:03"   "a video with this hash. If I visit the directory")
# (find-2020sometbfvideo "24:32"   "my magic functions have to")
# (find-2020sometbfvideo "24:50"   "if I run this sexp here with nil")
# (find-2020sometbfvideo "25:00"   "it tries to guess the title")
# (find-2020sometbfvideo "25:28"   "and if I change this {stem} here I get short links")
# (find-2020sometbfvideo "26:14"   "has very long lines, but if I type super-w")
# (find-2020sometbfvideo "26:28"   "I get a buffer that shows the code for find-preadingvideo")
# (find-2020sometbfvideo "26:50"   "if I execute this I play the video")
# (find-2020sometbfvideo "27:15"   "make a copy of this that points to the right position")
# (find-2020sometbfvideo "27:53"   "summary: this is how I download videos from youtube")
# (find-2020sometbfvideo "28:12" "6. `find-here-links' and `find-extra-file-links'")
# (find-2020sometbfvideo "28:20"   "it deserves another presentation just to itself")
# (find-2020sometbfvideo "28:32"   "the central idea of eev")
# (find-2020sometbfvideo "29:17"   "it is bound to `M-h M-h'")
# (find-2020sometbfvideo "29:25"   "generates a temporary buffer with hyperlinks to here")
# (find-2020sometbfvideo "29:30"   "help and a link to the tutorial in which I was")
# (find-2020sometbfvideo "29:45"   "not very well documented yet")
# (find-2020sometbfvideo "30:05"   "it is explained in this section of the tutorial")
# (find-2020sometbfvideo "30:18"   "if we type `M-h M-e' this runs `find-extra-file-links'")
# (find-2020sometbfvideo "30:42"   "here is an example in Lisp")
# (find-2020sometbfvideo "31:06"   "and I can change this {c}")
# (find-2020sometbfvideo "31:22"   "Let me show a more realistic example of how to use it")
# (find-2020sometbfvideo "31:28"   "let's go to the directory with the video file")
# (find-2020sometbfvideo "31:45"   "this file is a video file")
# (find-2020sometbfvideo "32:00"   "(a glitch)")
# (find-2020sometbfvideo "33:03"   "these were the things that I wanted to show")

# (find-file "/tmp/o")
# (find-sh "cut -b27- /tmp/o | tr -d '\"' | rev | cut -b2- | rev")




#####
#
# find-esymbol
# 2021jun08
#
#####

# «find-esymbol»  (to ".find-esymbol")
# (eek "M-h M-k  C-h o  ;; describe-symbol")
# (find-efunctiondescr 'describe-symbol)
# (find-efunction      'describe-symbol)

# (find-eev "eev-blinks.el" "find-estruct")

        (cl-defstruct mytriple a b c)
                (make-mytriple :a 22 :c "44")
  (find-estruct (make-mytriple :a 22 :c "44"))
    (describe-symbol 'mytriple)




#####
#
# find-elisp-into-subs
# 2022jan24
#
#####

# «find-elisp-into-subs»  (to ".find-elisp-into-subs")
# (find-angg ".emacs.videos" "2022findelispintro")
# (setq ee-audiovideo-last 'find-2022findelispintrovideo)
# (find-TH "find-elisp-intro")

;; (find-{c}video)
;; (find-{c}video "0:00")

0:00 Hi! My name is Eduardo Ochs, I'm the author of an Emacs package
     called eev, and the title of this video is: "why eev comes with a
     weird elisp tutorial and how to use it".






#####
#
# Carmen Astrid
# 2014aug10
#
#####

# «carmen-1» (to ".carmen-1")

{
  rm -Rv ~/eev/
  mkdir  ~/eev/
  cd     ~/eev/
  rm -v eev2.tgz
  wget http://angg.twu.net/eev-current/eev2.tgz
  tar -xvzf eev2.tgz
}

{
  {
    echo '#!/bin/sh'
    echo 'cd ~/eev/ && emacs -l ./eev-readme.el --eval="(find-eval-intro)"'
  } > ~/e
  chmod 755 ~/e
}

# (find-man "wget")
# (find-man "rm")
# (find-man "mkdir")
# (find-man "tar")
# (find-man "tar" "-x, --extract")
# (find-man "tar" "-v, --verbose")
# (find-man "tar" "-z, --gzip, --gunzip")
# (find-man "tar" "-f, --file ARCHIVE")

(Re)generate: (find-eval-intro)




#####
#
# Low-level tests to see if eegchannel is working
# 2019mar10
#
#####

# «eegchannel-test» (to ".eegchannel-test")
# (find-eev "eegchannel")
# (find-eev "eegchannel" "proc pidfile")
# (find-eev "eegchannel-test" "proc pidfile")
# (find-channels-intro "2.2. Test eegchannel")




#####
#
# eexterm-test
# 2019mar10
#
#####

# «eexterm-test» (to ".eexterm-test")
# (find-eev "eev-channels.el" "eexterm")
# (find-eev "eev-channels.el" "eexterm" "Tests:")

* (eexterm "A")
echo hello
exit

* (eexterm "A" "ssh edrx@127.0.0.1")
* (eexterm "A" "ssh edrx@127.0.0.1" "-geometry +512+0")
edrx
exit





#####
#
# eev as an Emacs package (in ELPA or so)
# 2014oct11
#
#####

# «eev-emacs-package» (to ".eev-emacs-package")
# (find-es "emacs" "packages")
# (find-angg ".emacs" "eev-package")

;; (find-elnode "Packaging")
;; (find-elnode "Packaging Basics")
;; (find-elnode "Packaging Basics" "Long description")
;; (find-elnode "Multi-file Packages")
;; (find-elnode "Package Archives")
;; (find-elnode "Package Archives" "package-x")
;; (find-elnode "Library Headers")
;; (find-elnode "Library Headers" "Finder")

;; (find-enode "Packages")
;; (find-enode "Package Installation")

;; (find-es "emacs" "packages")
;; (find-sh "locate package-x")
;; (find-efile "emacs-lisp/package-x.el")
;; (find-ecvsfile "test/automated/package-x-test.el")
;; (find-ecvsfile "Makefile" "check:")

;; (find-epackage 'magit)
;; (find-epackage  'magit     "Invoking the magit-status function")
;; (find-magitfile "magit.el" "Invoking the magit-status function")




#####
#
# eev-pkg.el-fields
# 2019mar13
#
#####

# «eev-pkg.el-fields» (to ".eev-pkg.el-fields")
# (find-epackage      'isend-mode)
# (find-isendmodefile "isend-mode-pkg.el")
# (find-elpafile      "isend-mode-readme.txt")
# (find-pdftoolsfile  "pdf-tools-pkg.el")
# (find-elpafile      "pdf-tools-readme.txt")
# (find-eevfile       "eev-pkg.el")
# (find-epackage 'add-hooks)

# (find-elnode "Packaging")
# (find-elnode "Packaging Basics" "Name")
# (find-elnode "Packaging Basics" "Version")
# (find-elnode "Packaging Basics" "Brief description")
# (find-elnode "Packaging Basics" "Long description")
# (find-elnode "Packaging Basics" "Dependencies")
# (find-elnode "Packaging Basics" "package-initialize")
# (find-elnode "Simple Packages" "Keywords" "optional")
# (find-elnode "Multi-file Packages" "README")

# (find-elnode "Multi-file Packages" "(file-name-directory load-file-name)")

# Long description / readme:
# (find-escripts-intro "Eev's central idea")




#####
#
# eev-pkg-repo
# 2019mar13
#
#####

# «eev-pkg-repo» (to ".eev-pkg-repo")
# (find-elnode "Package Archives" "package-archives")





#####
#
# eev-pkg: build
# 2014oct11 / 2019mar13
#
#####

# «eev-pkg-build» (to ".eev-pkg-build")
# (find-es "emacs" "package-dummy")
# (find-es "emacs" "package-dummy" "package-install-file")
# (find-eev "eev-pkg.el")
# (find-sh "date +%Y%m%d")
# (setenv "DATE" "20190401")
# (code-c-d "eevpkg" (format "/tmp/eev-%s/"    (getenv "DATE")))
# (setq ee-eevpkgtar (format "/tmp/eev-%s.tar" (getenv "DATE")))
# (code-c-d "elpaeev" (format "~/.emacs.d/elpa/eev-%s/" (getenv "DATE")))
# (find-eevpkgfile "")
# (find-elpaeevfile "")
# (find-fline ee-eevpkgtar)

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
my-git-list-files /tmp/eev-g/
my-git-list-files /tmp/eev-g/ | grep '.el$' | tee /tmp/.files
echo README >> /tmp/.files

# (find-eev "README-pkg")
# (find-es "eev" "eev-pkg.el-fields")

rm -Rv /tmp/eev-2019*
mkdir  /tmp/eev-$DATE/
cd     /tmp/eev-$DATE/

# (to "eev-pkg.el")
# (find-elnode "Multi-file Packages" "README")

cd ~/eev-current/
cp -v $(cat /tmp/.files) /tmp/eev-$DATE/
# cp -v README-pkg       /tmp/eev-$DATE/eev-readme.txt
# cp -v README-pkg       /tmp/eev-$DATE/README
cd     /tmp/eev-$DATE/

cd /tmp/
tar -cvf /tmp/eev-$DATE.tar eev-$DATE/*

rm -Rv ~/.emacs.d/elpa/eev*

# (package-install-file ee-eevpkgtar)
# (find-elpafile "")
# (find-elpaeevfile "")

# (find-efunction 'package-install-file)

cd /tmp/
Scp-np /tmp/eev-$DATE.tar $TWUP/eev-current/elpa/
Scp-np /tmp/eev-$DATE.tar $TWUS/eev-current/elpa/
# (find-twusfile "eev-current/elpa/")
# (find-twupfile "eev-current/elpa/")
# http://angg.twu.net/eev-current/elpa/

* (eepitch-shell2)
* (eepitch-kill)
* (eepitch-shell2)
~/EXPECT/autopasswd ssh edrx@angg.twu.net
cd ~/public_html/ && makepageindexhtmls




# Old (2014):

eev2-build-tgz
echo $DATE
rm -Rv ~/usrc/eev-*
mkdir  ~/usrc/eev-$DATE/
cd     ~/usrc/eev-$DATE/
tar -C ~/usrc/eev-$DATE/ -xvzf /tmp/eev2.tgz

cp -v ~/eev-current/eev-pkg.el ~/usrc/eev-$DATE/

cp -v eev2-all.el eev.el
** Fix this by hand:
*  (find-eevpkgfile "eev.el" "(provide '")
cd     ~/usrc/
tar -cvf /tmp/eev-$DATE.tar eev-$DATE/*.el
laf /tmp/eev-$DATE.tar

Scp-np -v /tmp/eev-$DATE.tar $TWUS/packages-el/
Scp-np -v /tmp/eev-$DATE.tar $TWUP/packages-el/


* (eepitch-Twu)
* (eepitch-kill)
* (eepitch-Twu)
zsh
rm -v ~/public_html/packages-el/index.html
makepageindexhtmls

# http://angg.twu.net/packages-el/

# (find-angg ".zshrc" "makepagefromtar")

Scp -v eev-20141011.tar \
  edrx@angg.twu.net:/home/edrx/slow_html/




#####
#
# eev-pkg-readme
# 2019mar14
#
#####

# «eev-pkg-readme» (to ".eev-pkg-readme")
# http://elpa.gnu.org/packages/auctex-12.1.2.tar
# (find-fline "$S/http/elpa.gnu.org/packages/auctex-12.1.2.tar")
# (find-fline "$S/http/elpa.gnu.org/packages/auctex-12.1.2.tar" "auctex-12.1.2/README")

<edrx> anyone here maintains an ELPA package? If I'm reading the
       documentation correctly then the long description of the
       package that I'm building should be put at
       /tmp/eev-20190313/README before I run tar -cvf
       /tmp/eev-20190313.tar eev-20190313/*, but when I do this and
       run
<edrx> (package-install-file "/tmp/eev-20190313.tar") then this
       does not generate a file ~/.emacs.d/elpa/eev-readme.txt...

# (find-elpafile "")
# (find-elpafile "" "isend-mode")
# (find-elpafile "isend-mode-readme.txt")
# (find-epackage 'isend-mode)

# (find-epackage 'eev)
# (find-eev "README")




#####
#
# First tests on the eev package (before announcing it on emacs-devel)
# 2019mar14
#
#####

# «eev-pkg-test-0» (to ".eev-pkg-test-0")




#####
#
# eev-pkg-submit-to-ELPA
# 2019mar14
#
#####

# «eev-pkg-submit-to-ELPA» (to ".eev-pkg-submit-to-ELPA")
# http://git.savannah.gnu.org/cgit/emacs/elpa.git/plain/README



#####
#
# elpa.git
# 2019apr09
#
#####

# «elpa.git» (to ".elpa.git")
# http://git.savannah.gnu.org/cgit/emacs/elpa.git/
# http://git.savannah.gnu.org/cgit/emacs/elpa.git/commit/?h=externals/eev
# http://git.savannah.gnu.org/cgit/emacs/elpa.git/log/?h=externals/eev
# http://git.savannah.gnu.org/cgit/emacs/elpa.git/snapshot/elpa-externals/eev.tar.gz

# https://mail.google.com/mail/ca/u/0/#search/elpa.git/QgrcJHsBpWZnWNtbdGZtDPlljGRHJsdBTZv

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
# (find-fline "/tmp/eev-e/")
cd /tmp/
wget -nc http://git.savannah.gnu.org/cgit/emacs/elpa.git/snapshot/elpa-externals/eev.tar.gz

rm -Rv /tmp/eev-e
mkdir  /tmp/eev-e/
cd     /tmp/eev-e/
tar --strip-components 2 -xvzf ../eev.tar.gz

rm -Rfv /tmp/eev-g
mkdir   /tmp/eev-g/
cd      /tmp/eev-g/ && git clone https://github.com/edrx/eev.git .
cd      /tmp/eev-g/
git checkout UTF-8

'ls' /tmp/eev-e/ | my-cmp-tkdiff /tmp/eev-e/ /tmp/eev-g/
'ls' /tmp/eev-e/ | my-cmp-tkdiff /tmp/eev-e/ "~/eev-current/"

(find-tkdiff "/tmp/eev-e/ChangeLog" "~/eev-current/ChangeLog")
(find-tkdiff "/tmp/eev-e/VERSION" "~/eev-current/VERSION")
(find-tkdiff "/tmp/eev-e/eev-anchors.el" "~/eev-current/eev-anchors.el")
(find-tkdiff "/tmp/eev-e/eev-intro.el" "~/eev-current/eev-intro.el")
(find-tkdiff "/tmp/eev-e/eev-tlinks.el" "~/eev-current/eev-tlinks.el")
(find-tkdiff "/tmp/eev-e/eev.el" "~/eev-current/eev.el")

(find-fline "~/eev-current/eev-anchors.el")
(find-fline "~/eev-current/eev-intro.el")
(find-fline "~/eev-current/eev-tlinks.el")
(find-fline "~/eev-current/eev.el")

(find-fline "~/eev-current/eev-blinks.el")
(find-fline "~/eev-current/eev-code.el")
(find-fline "~/eev-current/eev-env.el")
(find-fline "~/eev-current/eev-eval.el")
(find-fline "~/eev-current/eev-mode.el")
(find-fline "~/eev-current/eev-plinks.el")
(find-fline "~/eev-current/eev-prepared.el")
(find-fline "~/eev-current/eev-template0.el")
(find-fline "~/eev-current/eev-tlinks.el")

(find-tkdiff> "/tmp/eev-e/eejump.el" "~/eev-current/eejump.el")
(find-tkdiff> "/tmp/eev-e/eev-audiovideo.el" "~/eev-current/eev-audiovideo.el")
(find-tkdiff> "/tmp/eev-e/eev-beginner.el" "~/eev-current/eev-beginner.el")
(find-tkdiff> "/tmp/eev-e/eev-blinks.el" "~/eev-current/eev-blinks.el")
(find-tkdiff> "/tmp/eev-e/eev-brxxx.el" "~/eev-current/eev-brxxx.el")
(find-tkdiff> "/tmp/eev-e/eev-channels.el" "~/eev-current/eev-channels.el")
(find-tkdiff> "/tmp/eev-e/eev-code.el" "~/eev-current/eev-code.el")
(find-tkdiff> "/tmp/eev-e/eev-codings.el" "~/eev-current/eev-codings.el")
(find-tkdiff> "/tmp/eev-e/eev-edit.el" "~/eev-current/eev-edit.el")
(find-tkdiff> "/tmp/eev-e/eev-elinks.el" "~/eev-current/eev-elinks.el")
(find-tkdiff> "/tmp/eev-e/eev-env.el" "~/eev-current/eev-env.el")
(find-tkdiff> "/tmp/eev-e/eev-eval.el" "~/eev-current/eev-eval.el")
(find-tkdiff> "/tmp/eev-e/eev-flash.el" "~/eev-current/eev-flash.el")
(find-tkdiff> "/tmp/eev-e/eev-load.el" "~/eev-current/eev-load.el")
(find-tkdiff> "/tmp/eev-e/eev-mode.el" "~/eev-current/eev-mode.el")
(find-tkdiff> "/tmp/eev-e/eev-multiwindow.el" "~/eev-current/eev-multiwindow.el")
(find-tkdiff> "/tmp/eev-e/eev-pdflike.el" "~/eev-current/eev-pdflike.el")
(find-tkdiff> "/tmp/eev-e/eev-plinks.el" "~/eev-current/eev-plinks.el")
(find-tkdiff> "/tmp/eev-e/eev-prepared.el" "~/eev-current/eev-prepared.el")
(find-tkdiff> "/tmp/eev-e/eev-rcirc.el" "~/eev-current/eev-rcirc.el")
(find-tkdiff> "/tmp/eev-e/eev-readme.el" "~/eev-current/eev-readme.el")
(find-tkdiff> "/tmp/eev-e/eev-template0.el" "~/eev-current/eev-template0.el")
(find-tkdiff> "/tmp/eev-e/eev2-all.el" "~/eev-current/eev2-all.el")

eejump.el, eev-anchors.el, eev-audiovideo.el, eev-beginner.el, eev-blinks.el, eev-brxxx.el, eev-channels.el, eev-code.el, eev-codings.el, eev-edit.el, eev-elinks.el, eev-env.el, eev-eval.el, eev-flash.el, eev-intro.el, eev-load.el, eev-mode.el, eev-multiwindow.el, eev-pdflike.el, eev-plinks.el, eev-prepared.el, eev-rcirc.el, eev-readme.el, eev-template0.el, eev-tlinks.el, eev.el, eev2-all.el




#####
#
# eek-pkg-announcement
# 2019mar15
#
#####

# «eek-pkg-announcement» (to ".eek-pkg-announcement")
# https://mail.google.com/mail/ca/u/0/#sent/QgrcJHshbMQhlqMWtLSdBzQzdbnhBGwxVnb
# http://lists.gnu.org/archive/html/emacs-devel/2019-03/msg00433.html

[ELPA] New package: eev
Hi list,

I would like to submit a package to ELPA. It is called "eev". Let me
copy its README here:

--snip--snip--

Eev's central idea is that you can keep "executable logs" of what you
do, in a format that is reasonably readable and that is easy to "play
back" later, step by step and in any order. We call these executable
logs "e-scripts". These "steps" are mainly of two kinds:

   1) elisp hyperlinks, and
   2) lines sent to shell-like programs.

To run the tutorial: install this package, then type `M-x
eev-beginner'. This will load all the main modules, activate the
eev-mode keybindings, and open this tutorial,

  http://angg.twu.net/eev-intros/find-eev-quick-intro.html
  (find-eev-quick-intro)

in a sandboxed buffer. For a list of the other sandboxed tutorials,
run:

  (find-eev-intro)

For a non-technical description of what e-scripts are, see:

  http://angg.twu.net/escripts.html

The home page of eev is:

  http://angg.twu.net/#eev

--snip--snip--

The current version of its ELPA-ish package is here:

  http://angg.twu.net/eev-current/elpa/
  http://angg.twu.net/eev-current/elpa/eev-20190314.tar

The home page points to other, more mature, ways to install it: a .tgz
that users can install by copying and pasting a script to a shell, and
its git repository.

Feedback VERY welcome.

Thanks in advance!

  Eduardo Ochs
  http://angg.twu.net/#eev

====================================

Hi Stefan!

Wow, that was quick!!!

1) About the README: I am trying to learn how to use modern tools to
   record screencasts to create a single video with the main features
   that will last less than two minutes. Does that help? Note that
   this page

     http://angg.twu.net/escripts.html

   explains the motivation in a non-technical way, but I still need a
   way to show the "play back" in action to people who only have two
   or three minutes to spend... any problems if I spend a few weeks
   more, or a month, to produce that short video?

2) Authorship: I am the author of everything but there is a module -
   eepitch.el - that is based on the ideas of a 57-line prototype that
   a user called Rubikitch (he never told me his real name, even
   though I asked) sent to the eev mailing list in 2006. I just added
   links to the discussion in the mailing list to the comments in
   eepitch.el - let me copy them here:

    ;; NOTE 2: eepitch is based on code that Rubikitch sent to the eev
    ;; mailing list in 2006, but I rewrote his code completely several
    ;; times since then. See:
    ;;
    ;;   http://lists.gnu.org/archive/html/eev/2006-01/msg00000.html
    ;;   http://lists.gnu.org/archive/html/eev/2006-02/msg00000.html
    ;;   http://lists.gnu.org/archive/html/eev/2006-02/msg00001.html

3) About eev-beginner.el. I never found a good way to set up the
   autoloads in eev until a few days ago - and what I got then was a
   *first* way to set up autoloads that was good enough to begin with,
   i.e., until I could discuss that with senior emacsers. Here's how
   it works.

   When you install eev from ELPA there is only a single autoload -
   for `eev-beginner', that loads all main modules and opens the
   tutorial.

   When you've grasped the main ideas and you want to install eev in a
   non-beginner way what you do is to run this, possibly from your
   .emacs:

     (require 'eev-load)

   This loads all the main modules but does not turn on eev-mode and
   does not open the tutorial.

4) About the Emacs version. I *guess* that eev would run on Emacs 22
   either unmodified or with at most two very small changes, but it
   would take me a while to install an Emacs 22 here. As a temporary
   solution I've changed the 4th argument to `define-package' in
   eev-pkg.el from nil to:

     '((emacs "24.3"))

5) About byte-compilation. There isn't any code in eev that takes more
   that 1/100 seconds to run, and there are some points in the
   tutorials in which I encourage people to look at the source code of
   the functions in two ways: with [the eev variant of] find-function
   and with `find-efunctionpp', whose docstring is:

     "Visit a temporary buffer containing the pretty-printed Lisp code
     for SYMBOL."

   Roughly,

     (find-efunctionpp 'foo)

   puts the result of

     (pp-to-string (symbol-function 'foo))

   into a temporary buffer and switches it to emacs-lisp-mode to
   fontify the code. If we don't byte-compile the modules of eev then
   beginners will have a reasonable corpus of functions for which
   `find-efunctionpp' shows something readable, which is good to help
   them understand the innards of Emacs.

6) About git. I prefer to keep using my own repository, at least for
   the next few months. I know less git that I should, and by the way
   - important caveat! - all the new developments are being pushed to
   the "UTF-8" branch of the git repository, but the "master" there
   still points to an obsolete branch and I don't know how to fix
   that... =(

Thanks for the feedback!!! I will upload a new version - including an
updated tarball - in a few minutes.

  Cheers!
    E.






#####
#
# eev pkg signing
# 2014oct11
#
#####

# «eev-pkg-signing» (to ".eev-pkg-signing")
gpg --sign --detach -- archive-contents
gpg --sign --detach -- eev-0.1.tar

# (find-epackage 'eev)
# (find-epackages)
# (package-install-file "/tmp/eev-20141011.tar")
# (find-efunction 'package-install-file)
# (find-epackages)

# (find-fline "~/.emacs.d/elpa/")
# (find-fline "~/.emacs.d/elpa/" "eev")
# (find-angg ".emacs" "eev-package")
# (find-eevpkgfile "")
# (find-eevpkgfile "eev-autoloads.el")

# (find-fline "~/.emacs.d/elpa/")
# (find-fline "~/.emacs.d/elpa/eev-20141011/")





#####
#
# eev in ELPA
# 2019apr08
#
#####

# «eev-in-elpa» (to ".eev-in-elpa")
# (to "eev-pkg-submit-to-ELPA")
# (find-es "emacs" "elpa")
# http://elpa.gnu.org/packages/eev.html
# http://elpa.gnu.org/packages/eev-20190401.tar
# http://elpa.gnu.org/packages/eev-20190410.tar




#####
#
# Producing a .tar or the current version (for Windows)
# 2019apr27
#
#####

# «eev-tar-windows» (to ".eev-tar-windows")
# (find-es "emacs" "package-install-file")
# (find-eev2-links)

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
# (find-man "cut")
cat ~/eev-current/eev.el | grep Version: | cut '-d ' -f 3 |& tee /tmp/ov
DATE=$(cat /tmp/ov)
FNAME=eev-$DATE
echo $FNAME
echo    /tmp/$FNAME.tar
rm -Rfv /tmp/$FNAME.tar
rm -Rfv /tmp/$FNAME
mkdir   /tmp/$FNAME
cd ~/eev-current/
cp -iv $(cd /tmp/eev-g/ && git ls-files) /tmp/$FNAME/
cd /tmp/
tar -cvf /tmp/$FNAME.tar $FNAME/*

tar -tvf /tmp/$FNAME.tar
laf      /tmp/$FNAME.tar

# (package-install-file "/tmp/eev-20190425.tar")
# (find-fline "$S/http/elpa.gnu.org/packages/eev-20190410.tar")
# (find-fline "/tmp/eev-20190425.tar")

cp -v $S/http/elpa.gnu.org/packages/eev-20190410.tar /tmp/
# (find-fline "/tmp/eev-20190410.tar")
# (package-install-file "/tmp/eev-20190410.tar")


laf       /tmp/eev2.tgz




#####
#
# Changing the "master" to UTF-8 using push
# 2019jun14
#
#####

# «push-master» (to ".push-master")
# (find-fline "/tmp/" " eev-")

# /tmp/eev-g(edrx:li)# git checkout UTF-8
# Branch UTF-8 set up to track remote branch UTF-8 from origin.
# Switched to a new branch 'UTF-8'
# /tmp/eev-g(edrx:li)# 

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)

rm -Rfv /tmp/eev-a
mkdir   /tmp/eev-a/
cd      /tmp/eev-a/ && git clone https://github.com/edrx/eev.git .
cd      /tmp/eev-a/

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)

rm -Rfv /tmp/eev-b
cp -av  /tmp/eev-a/ /tmp/eev-b

rm -Rfv /tmp/eev-c
mkdir   /tmp/eev-c/
cd      /tmp/eev-c/ && git clone /tmp/eev-b .

cd      /tmp/eev-c/
# (find-gitk  "/tmp/eev-c/")
git checkout UTF-8
# (find-gitk  "/tmp/eev-c/")

git branch --list -a
git for-each-ref
git for-each-ref | sort


# (find-fline "/tmp/eev-c/")
# (find-fline "/tmp/eev-c/.git/refs/heads/")
# (find-fline "/tmp/eev-c/.git/refs/heads/" "master")

# (find-es "git" "HEAD")
# (find-es "git" "HEAD")






#####
#
# git-merge-elpa
# 2019jun25
#
#####

# «git-merge-elpa» (to ".git-merge-elpa")
# (find-es "emacs" "elpa-git")
# https://mail.google.com/mail/ca/u/0/#inbox/QgrcJHsBpWsJwDdfTnZCpJWHvfbNNgnMLHQ

# Another thing you should likely do is:
#   git remote add elpa http://git.sv.gnu.org/r/emacs/elpa.git
#   git fetch elpa
#   git merge elpa/externals/eev

# (find-eev2-links)

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)

rm -Rfv /tmp/eev-g
mkdir   /tmp/eev-g/
cd      /tmp/eev-g/ && git clone https://github.com/edrx/eev.git .
cd      /tmp/eev-g/

git remote add elpa http://git.sv.gnu.org/r/emacs/elpa.git
git fetch elpa
git merge elpa/externals/eev

git branch --list -a
git for-each-ref
git for-each-ref | sort

git checkout hyperbole
git checkout remotes/elpa/externals/eev
git checkout remotes/elpa/externals/hyperbole


# (find-man "1 git-remote")
# (find-man "1 git-fetch")

# (find-gitk  "/tmp/eev-g/")
# (find-fline "/tmp/eev-g/")

# (find-sh "locate /elpa/")






#####
#
# E-mail to the mailing list about find-wget
# 2021aug09
#
#####

# «find-wget-email»  (to ".find-wget-email")
# https://lists.gnu.org/archive/html/eev/2021-08/msg00000.html
# ^ Note that the htmlization of URLs in ""s is wrong
#   (find-es "mail" "mhonarc-bug-aug2021")

# Subj: find-wget, find-wget-elisp, and 0x0

Hi list,

`find-wget' used to be a bad quick hack with no error checking -
that's no longer the case. See:

  http://angg.twu.net/eev-current/eev-plinks.el.html#find-wget

Also, now we have variants with "a" that use `ee-goto-anchor' instead
of `ee-goto-position', and variants with "-elisp" that put the
buffer with the downloaded stuff in emacs-lisp-mode. Try:

  (setq my-url "http://angg.twu.net/eev-current/eev-plinks.el")
  (find-wget        my-url "find-wget")
  (find-wgeta       my-url "find-wget")
  (find-wget-elisp  my-url "find-wget")
  (find-wgeta-elisp my-url "find-wget")

This can also be used to point to files in git repositories... try:

  (setq my-url "https://raw.githubusercontent.com/edrx/eev/UTF-8/eev-plinks.el")
  (find-wget        my-url "find-wget")
  (find-wgeta       my-url "find-wget")
  (find-wget-elisp  my-url "find-wget")
  (find-wgeta-elisp my-url "find-wget")

and it can also by used on IRC, to share elisp snippets. I use the
package `0x0' from MELPA, and I have a function called `u0' - that
means "upload the current region to https://0x0.st with 0x0 and show
some elisp hyperlinks". The source code for u0 is here:

  (find-wgeta-elisp "http://angg.twu.net/.emacs.templates" "u0")
  http://angg.twu.net/.emacs.templates.html#u0

The temporary buffer that `u0' shows has a header and then some links
like these:

  (find-wget "https://0x0.st/-JH1.bin")
  (find-wget-elisp "https://0x0.st/-JH1.bin")

I tested this in an IRC session with Erich Ruff yesterday and it was
FANTASTIC - the best way to share elisp snippets EVER. =)

  Cheers =),
    Eduardo Ochs
    http://angg.twu.net/#eev





#####
#
# describe-symbol
# 2021aug10
#
#####

# «describe-symbol»  (to ".describe-symbol")
# See this bug report by Stefan Monnier:
# https://mail.google.com/mail/ca/u/0/#inbox/FMfcgzGkZkWFTnSQNTGfxrXtnHKqrZDx





#####
#
# Redefine eepitch-shell to make it use vterm. For Vagner Rener
# 2021aug16
#
#####

# «eepitch-shell-vterm»  (to ".eepitch-shell-vterm")
# Put this in your .emacs:

;; (find-eevfile "eev-load.el" "1) to load all the main modules")
(require 'eev-load)
(eev-mode 1)

;; ;; Original definitions, from:
;; ;; (find-eev "eepitch.el" "eepitch-shell")
;; (defun eepitch-shell  () (interactive) (eepitch '(shell)))
;; (defun eepitch-shell2 () (interactive) (eepitch '(shell "*shell 2*")))
;; (defun eepitch-shell3 () (interactive) (eepitch '(shell "*shell 3*")))

;; See: (find-eev "eepitch.el" "eepitch-vterm")
(defun eepitch-shell  () (interactive) (eepitch-vterm))
(defun eepitch-shell2 () (interactive) (eepitch-vterm "shell 2"))
(defun eepitch-shell3 () (interactive) (eepitch-vterm "shell 3"))


# A test. See:
# (find-multiwindow-intro "7. Eepitch blocks for two targets")

* (find-3EE '(eepitch-shell) '(eepitch-shell2))
* (find-3ee '(eepitch-shell) '(eepitch-shell2))
* (eepitch-shell)
ls --color

* (eepitch-shell2)
cd /tmp/
ls
echo $TERM
ls --color





#####
#
# Ways to load eev quickly from an "emacs -Q"
# 2021oct25
#
#####

# «quick-load»  (to ".quick-load")
# (find-angg "elisp/emacsconf2021.el")
# (find-eev "eev-beginner.el")
# (find-efunctiondescr 'load)
# (find-efunction      'load)

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
cat > /tmp/o <<'%%%'
(load "~/eev-current/eev-beginner.el")
%%%

cat > /tmp/o <<'%%%'
(load "~/eev-current/eev-beginner.el")
(progn
  (require 'eev-prepared)
  (define-key eev-mode-map (kbd "<f12>") 'ee-svg-screenshot)
  (defun ee-svg-screenshot (&optional fname)
    (interactive)
    (ee-write-string
     (x-export-frames nil 'svg)
     (or fname "/tmp/screenshot.svg")))
  (if (fboundp 'menu-bar-mode)   (menu-bar-mode 0))
  (if (fboundp 'tool-bar-mode)   (tool-bar-mode 0))
  (if (fboundp 'scroll-bar-mode) (scroll-bar-mode -1))
  (setq show-paren-mode nil)
  (defun eejump-16 () (set-frame-font "Monospace 16" t))
  (global-set-key (kbd "s-f") 'toggle-frame-fullscreen)
)
%%%

emacs28_0 -Q /tmp/o &
emacs28_0 -Q ~/eev-current/eev-beginner.el &





#####
#
# My setup for running the tests in eev-on-windows.el on Linux
# 2021oct27
#
#####

# «eev-on-windows-on-linux»  (to ".eev-on-windows-on-linux")

;; My setup:
(require 'eev-on-windows)
(ee-use-gnu-linux)
(ee-use-eshell)
(ee-use-find-angg-es-remote)
(defalias 'find-pdf-page 'find-firefox-page)

;; The tests:
(find-eev "eev-on-windows.el" "how-to-test-this")
(find-eev "eev-on-windows.el" "basic-tests")

;; Revert:
(ee-use-find-angg-es-local)
(ee-use-shell)
(defalias 'find-pdf-page 'find-xpdf-page)




#####
#
# eev-on-windows-julha
# 2021oct27
#
#####

# «eev-on-windows-julha»  (to ".eev-on-windows-julha")
# (find-es "2021-oficina" "julha")

# (find-eev "eev-on-windows.el" "ee-use-windows")

(require 'eev-beginner)
(require 'eev-on-windows)
(setenv "FIREFOXDIR"      "c:/Program Files/Mozilla Firefox")
(setenv "MPVDIR"          "c:/Users/User/Desktop")
(defalias 'find-pdf-page 'find-firefox-page)

;; The tests:
(find-eev "eev-on-windows.el" "how-to-test-this")
(find-eev "eev-on-windows.el" "basic-tests")




#####
#
# eev-on-windows-aniketgm
# 2021dec05
#
#####

# «eev-on-windows-aniketgm»  (to ".eev-on-windows-aniketgm")
# (find-fline "~/LOGS/2021dec04.eev")
# (find-fline "~/LOGS/2021dec04.eev" "workshop de hoje")
# https://0x0.st/-h3-.bin

;; More info:
;; (find-eev "eev-videolinks.el" "find-eev-video")
;; (find-eev "eev-audiovideo.el" "find-youtube-video")
;; (find-eev "eev-plinks.el" "find-googlechrome")
;;
(setq ee-find-eev-video-function 'find-eevyoutube-video)
(setq ee-googlechrome-program "C:/Users/Aniket/AppData/Local/Programs/Opera/launcher.exe")
;;
;; Test:
;; (find-2021workshop5video "0:00")





#####
#
# felipe-bastos
# 2022may28
#
#####

# «felipe-bastos»  (to ".felipe-bastos")
# (find-windows-beginner-intro "7. eev-wconfig.el")

(require 'eev-wconfig)
(find-wconfig-links)

(find-wconfig-browser-links)
(find-wconfig-wget-links)
(find-wconfig-shell-links)
(find-wconfig-lua-links)
(find-wconfig-mpv-links)

;; (find-2022eevwconfigvideo   "16:15"   "(require 'eev-wconfig)")
;; (find-2022eevwconfigvideo   "16:23"   "(find-wconfig-links)")



(setq ee-googlechrome-program
  "C:/program files/Mozilla Firefox/firefox.exe")
(setq ee-mpv-program "C:/program files/mpv/mpv.exe")
(code-video "2022eevwconfigvideo" "C:/Users/ferob/downloads/vids/2022-eev-wconfig.mp4")
;; (find-googlechrome "https://www.lua.org/")
;; (find-video "C:/Users/ferob/downloads/vids/2022-eev-wconfig.mp4")
;; (find-2022eevwconfigvideo "0:00")





Entre no Emacs.
Não rode M-x eev-beginner ainda.
Rode M-x list-packages.
O list packages vai dizer algo como isso aqui:
"Packages that can be upgraded: 1; type ‘U’ to mark for upgrading."
No menu "Packages" da menu bar execute as opções "Mark All Available Upgrades (U)" e depois "Execute Marked Actions (x)".
Rode M-x eev-beginner. O eev-beginner carrega (com "load") todos os módulos do eev, e agora ele vai carregar os módulos da versão nova.

Copie isto aqui pro seu ~/TODO - lembre que M-1 M-j abre o arquivo ~/TODO:

(setq ee-googlechrome-program
  "C:/program files/Mozilla Firefox/firefox.exe")
(setq ee-mpv-program "C:/program files/mpv/mpv.exe")
(code-video "2022eevwconfigvideo" "C:/Users/ferob/downloads/vids/2022-eev-wconfig.mp4")
;; (find-googlechrome "https://www.lua.org/")
;; (find-video "C:/Users/ferob/downloads/vids/2022-eev-wconfig.mp4")
;; (find-2022eevwconfigvideo "0:00")
;; (find-wconfig-links)

As linhas que não estão comentadas com ";;" são configurações e as
linhas comentadas são testes. Rode as configurações e depois os
testes. Se o teste com `find-2022eevwconfigvideo' funcionar abra esse
índice aqui no browser

http://angg.twu.net/.emacs.videos.html#2022eevwconfig

e copie o índice do vídeo pro seu ~/TODO.
Rode M-x find-wconfig-links.




(find-wconfig-links)




C:\program files\Mozilla Firefox\firefox.exe
C:\program files\mpv\mpv.exe
C:\Users\ferob\downloads\vids\

(code-video "2022eevwconfigvideo" "C:/Users/ferob/downloads/vids/2022-eev-wconfig.mp4")
(find-2022eevwconfigvideo "0:00")


M-x eev-beginner
(eek "M-j")
(setq ee-googlechrome-program "C:/program files/Mozilla Firefox/firefox.exe")
(setq ee-mpv-program "C:/program files/mpv/mpv.exe")
(require 'eev-wconfig)
(find-wconfig-links)
(code-video "2022eevwconfigvideo" "C:/Users/ferob/downloads/vids/2022-eev-wconfig.mp4")
(find-2022eevwconfigvideo "0:00")


;; (find-callprocess0 (list ee-mpv-program "--help"))
;; (find-callprocess  (list ee-mpv-program "--help"))

C:/Users/ferob/downloads/vids
(find-video "C:/Users/ferob/downloads/vids/2022-eev-wconfig.mp4")

http://angg.twu.net/eev-videos/2022-eev-wconfig.mp4
http://angg.twu.net/eev-videos/2022-eev-wconfig.vtt




#####
#
# felipe-bastos-pdf-bug
# 2022jun05
#
#####

# «felipe-bastos-pdf-bug»  (to ".felipe-bastos-pdf-bug")
# (find-eev "eev-pdflike.el" "ee-fname-page-to-url")

# (find-egrep "grep --color=auto -nH --null -e file:// *.el */*.el")

<edrx> what is the right way to convert this absolute file name to
       a file:// url?
<edrx> C:/Users/ferob/downloads/foo.pdf
<edrx> file://C:/Users/ferob/downloads/foo.pdf or
<edrx> file:///C:/Users/ferob/downloads/foo.pdf ?
<edrx> aha: https://en.wikipedia.org/wiki/File_URI_scheme#Windows
<parsnip> edrx: they both work
<parsnip> you can also do (expand-file-name "downloads/foo.pdf"
          (getenv "userprofile"))




#####
#
# felipe-bastos-wgeta-bug
# 2022jun05
#
#####

# «felipe-bastos-wgeta-bug»  (to ".felipe-bastos-wgeta-bug")
# (find-wconfig-links)
# (find-wconfig-wget-links)
#   (find-eev "eev-plinks.el" "find-wget")
#   (find-eev "eev-plinks.el" "find-wget" ";; Tests:")
# (find-wgeta "http://angg.twu.net/eev-current/eev-plinks.el" "find-wget")
# (find-wgeta-elisp "http://angg.twu.net/eev-current/eev-plinks.el" "find-wget")




#####
#
# find-wget-jan-2024
# 2024jan14
#
#####

# «find-wget-jan-2024»  (to ".find-wget-jan-2024")

(defvar ee-wget-program "wget")
(defvar ee-find-callprocess00-exit-status nil)

;; Dummified versions
(defun ee-expand (fname) fname)
(defun ee-goto-rest (list) ())
(defun ee-goto-position (&optional pos-spec &rest rest) ())

(defun find-ebuffer (buffer &rest pos-spec-list)
  "Hyperlink to an Emacs buffer (existing or not)."
  (interactive "bBuffer: ")
  (switch-to-buffer buffer)
  (apply 'ee-goto-position pos-spec-list))

(defun ee-split (str)
  "If STR is a string, split it on whitespace and return the resulting list.
If STR if a list, return it unchanged."
  (if (stringp str)
      (split-string str "[ \t\n]+")
    str))

(defun find-callprocess00-ne (program-and-args)
  (let ((argv (ee-split program-and-args)))
    (with-output-to-string
      (with-current-buffer standard-output
	(setq ee-find-callprocess00-exit-status
	      (apply 'call-process (car argv) nil t nil (cdr argv)))))))

(defun find-wget (url &rest pos-spec-list)
  "Download URL with \"wget -q -O - URL\" and display the output.
If a buffer named \"*wget: URL*\" already exists then this
function visits it instead of running wget again.
If wget can't download URL then this function runs `error'."
  (let* ((eurl (ee-expand url))
	 (wgetprogandargs (list ee-wget-program "-q" "-O" "-" eurl))
	 (wgetbufname (format "*wget: %s*" eurl)))
    (if (get-buffer wgetbufname)
	(apply 'find-ebuffer wgetbufname pos-spec-list)
      ;;
      ;; If the buffer wgetbufname doesn't exist, then:
      (let* ((wgetoutput (find-callprocess00-ne wgetprogandargs))
	     (wgetstatus ee-find-callprocess00-exit-status))
	;;
	(if (not (equal wgetstatus 0))
	    ;; See: (find-node "(wget)Exit Status")
	    (error "wget can't download: %s" eurl))
	;;
	(find-ebuffer wgetbufname)	; create buffer
	(insert wgetoutput)
	(goto-char (point-min))
	(apply 'ee-goto-position pos-spec-list)))))

;; Test: (eval-buffer)
;;       (find-wget "http://anggtwu.net/LUA/Dang1.lua")



#####
#
# Fernando Lucatelli
# 2022jun11
#
#####

# «lucatelli»  (to ".lucatelli")
# (find-1stclassvideoindex "oficina2021a")
# (find-eevvideosfile "")
# (find-1stclassvideo-links "2022eevwconfig")

;; Play:  (find-2022eevwconfigvideo "0:00")


(setq ee-googlechrome-program
 "C:/Program Files/Google/Chrome/Application/chrome.exe")

(setq ee-mpv-program
 "C:/ProgramData/chocolatey/lib/mpv.install/tools/mpv.exe")

(find-2022eevwconfigvideo "0:00")



c:/Users/ferna/AppData/Roaming/snarf/http/angg.twu.net/eev-videos/





#####
#
# 2021-workshop-log
# 2021dec05
#
#####

# «2021-workshop-log»  (to ".2021-workshop-log")
# (find-fline "~/LOGS/2021dec04.eev")
# (find-fline "~/LOGS/2021dec04.eev" "workshop de hoje")





#####
#
# vagner-settings
# 2022apr04
#
#####

# «vagner-settings»  (to ".vagner-settings")
# (find-angg "elisp/eev-vagner.el")

;; From: (find-newbrowser-links "g" "googlechrome" "chromium")
(defun ee-find-googlechrome-page (fname &optional page)
  `("chromium" ,(ee-fname-page-to-url fname page)))

;; See: (find-newpdfviewer-links "okular" "okular")
(defalias 'find-pdf-page 'find-okular-page)

;; See: (find-eev "eepitch.el" "glyphs")
;; This will make formfeeds appear as yellow "L"s on a red background.
(defface eev-glyph-face-yellow-on-red
  '((t (:foreground "yellow" :background "red")))
  "Face used for the formfeed glyph (char 12).")
;;
(eepitch-set-glyph   12 ?L 'eev-glyph-face-yellow-on-red)



;; Basic tests:
;; (find-sh0 "which chromium")
;; (find-bgprocess "chromium http://www.lua.org/start.html")
;; (find-bgprocess "chromium https://tannerlectures.utah.edu/_resources/documents/a-to-z/c/Coetzee99.pdf#page=3")

;; Define `find-googlechrome':
;; Test: (find-googlechrome "http://www.lua.org/start.html")
;;  See: (find-eev "eev-plinks.el" "find-googlechrome")
(defun find-googlechrome (url &rest rest)
  (find-bgprocess `("chromium" ,url)))

;; Define `find-googlechrome-page':
;; See:  (find-eev "eev-pdflike.el" "find-firefox-page")
;; Test: (ee-find-googlechrome-page "~/Coetzee99.pdf" 3)
;;          (find-googlechrome-page "~/Coetzee99.pdf" 3)
;;
(defun ee-find-googlechrome-page (fname &optional page)
  `("chromium" ,(ee-fname-page-to-url fname page)))

;; Configure `find-pdf-page':
;; See:  (find-pdf-like-intro "3. Hyperlinks to PDF files")
;;       (find-pdf-like-intro "3. Hyperlinks to PDF files" "If you have xpdf")
;;       (find-eev "eev-pdflike.el" "change-default-viewer")
;; Test: (find-pdf-like-intro "2. Preparation")
;;       (find-pdf-page "~/Coetzee99.pdf" 3)
(defalias 'find-pdf-page 'find-xpdf-page)
(defalias 'find-pdf-page 'find-googlechrome-page)



;; See: (find-eev "eev-pdflike.el" "find-mupdfpage")
;;      (find-eev "eev-pdflike.el" "find-okularpage")
;; The support for okular is not in eev yet -
;; so the second link above will not work
;;
(defun     find-okular-page (fname &optional page &rest rest)
  (find-bgprocess (ee-find-okular-page fname page)))
(defvar ee-find-okular-page-options '())
(defun  ee-find-okular-page (fname &optional page &rest rest)
  `("okular"
    ,@ee-find-okular-page-options
    ,@(if page `("-p" ,(format "%s" page)))
    ,fname
    ))

;; (find-code-pdfbackend "okular-page")
        (code-pdfbackend "okular-page")

;; Test: (find-pdf-like-intro "2. Preparation")
;;       (find-pdf-page "~/Coetzee99.pdf" 3)
(defalias 'find-pdf-page 'find-okular-page)



(defalias 'find-pdf-page 'find-xpdf-page)





#####
#
# Settings pro Lucas Moraes
# 2022apr10
#
#####

# «eev-on-windows-lucas»  (to ".eev-on-windows-lucas")

(find-newbrowser-links "g" "googlechrome"
 "C:/Program Files (x86)/Google/Chrome/Application/chrome.exe")




#####
#
# wconfig-fake-wget.exe
# 2022apr16
#
#####

# «wconfig-fake-wget.exe»  (to ".wconfig-fake-wget.exe")
# (find-eevfile "eev-wconfig.el")
# (find-eevfile "eev-wconfig.el" "(find-wconfig-wget-links)")

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
rm -fv ~/bin/wget.exe
cat >  ~/bin/wget.exe <<'%%%'
#!/bin/sh
echo "[This is ~/bin/wget.exe]"
exec wget $*
%%%
chmod 755 ~/bin/wget.exe
~/bin/wget.exe --help
~/bin/wget.exe --version




#####
#
# A bad tutorial on info mode deleted from (find-multiwindow-intro)
# 2021oct31
#
#####

# «info-tutorial»  (to ".info-tutorial")
# Deleted from:
# (find-multiwindow-intro "9. Executing key sequences at other windows")

9. Executing key sequences at other windows
===========================================
It is possible to use multi-window settings, together with the
trick that `<f8>' on a red star line executes it as Lisp and
moves down, to create tutorials for Emacs modes. An example:

  (...)



10. A tutorial for Info mode
============================
Note: this is obsolete! It was superseded by:

  (find-eev-quick-intro "5.1. Navigating the Emacs manuals")

Here's a mini-tutorial for Info mode, demonstrating how to
navigate in Info using the usual movement keys, plus TAB,
<backtab>, RET, l (last), u (up), n (next), p (prev), q (quit),
C-h i, and the digits 1-9. Note that the display in Info mode is
like this:

   ____________________________________________
  |Next: Nonincremental Search,  Up: Search    | <- next/prev/up
  | (emacs)Top > Search > Incremental Search   | <- breadcrumbs
  |                                            |
  | 19.1 Incremental Search                    | <- section number /
  |                                            |    node name (long)
  |  (...)                                     |
  |                                            |
  |--:%%-  *info* (emacs) Incremental Search   |
  |____________________________________________|

Here:

** Define some hacks
* (defun ow (n) (other-window n))
* (defun eeoe (code) (ow 1) (prog1 (eval code) (ow -1)))
* (defun eeok (keystr) (eeoe `(eek ,keystr)))
*
** Prepare the windows
* (ee-kill-buffer "*info*")
* (find-wset "1so_o" '(find-enode "Search"))
*
** The arrows (and other movent keys) work as expected.
** Watch the cursor in the Info window...
* (eeok "3*<down>")
* (eeok "10*<right>")
*
** TAB and <backtab> move to the next and to the previous link.
** Note that they consider all the links in a page, not only
** the ones in menus - including the breadcrumb links at the top.
* (eeok "TAB       ;; Info-next-reference")
* (eeok "TAB       ;; Info-next-reference")
* (eeok "TAB       ;; Info-next-reference")
* (eeok "TAB       ;; Info-next-reference")
* (eeok "TAB       ;; Info-next-reference")
* (eeok "<backtab> ;; Info-prev-reference")
* (eeok "<backtab> ;; Info-prev-reference")
* (eeok "<backtab> ;; Info-prev-reference")
* (eeok "<backtab> ;; Info-prev-reference")
*
** RET follows a link, l (last) goes back.
** Watch the section number: 19 -> 32.3.6 -> 19.
* (eeok "RET       ;; Info-follow-nearest-node")
* (eeok "l         ;; Info-history-back")
*
** The digits 1-9 can be used to go straight to subsections.
** For example, a `4' would follow the 4th _menu_ link -
** ignoring the non-menu links.
** Watch the section number: 19 -> 19.1 -> 19.1.1.
* (eeok "1         ;; Info-nth-menu-item")
* (eeok "1         ;; Info-nth-menu-item")
*
** The keys `u', `n', `p' (up, next, and prev) move through the
** tree structure. Watch the section number:
** 19.1.1 -u-> 19.1 -u-> 19 -n-> 20 -n-> 21 -p-> 20 -p-> 19
* (eeok "u         ;; Info-up")
* (eeok "u         ;; Info-up")
* (eeok "n         ;; Info-next")
* (eeok "n         ;; Info-next")
* (eeok "p         ;; Info-prev")
* (eeok "p         ;; Info-prev")
*
** `q' leaves Info mode - more precisely, it buries the info buffer.
** `C-h i' goes back to the Info buffer (or restarts info). 
* (eeok "q         ;; Info-exit")
* (eeok "C-h i     ;; info")




#####
#
# kla-symlink-bug
# 2022oct10
#
#####

# «kla-symlink-bug»  (to ".kla-symlink-bug")
# (find-fline "~/tmp/vagner-bug-2022oct10.png")
# (xz         "~/tmp/vagner-bug-2022oct10.png")
# /home/vagner/_.doom_Emacs/.local/straight/build-28.1/eev/
# /home/vagner/_.doom_Emacs/.local/straight/repos/eev/eev-kla.el

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
rm -Rfv  /tmp/a/
mkdir -p /tmp/a/b/c/d/e/
echo o > /tmp/a/b/c/d/e/f
cd       /tmp/a/b/c/d/e/; ln -s f ff
cd       /tmp/a/b/c/d/;   ln -s e ee
cd       /tmp/a/b/c/;     ln -s d dd
cd       /tmp/a/b/;       ln -s c cc
cd       /tmp/a/;         ln -s b bb

A=(      /tmp/a/b/c/d/e/ff
         /tmp/a/b/c/d/e/f
         /tmp/a/b/c/d/ee
         /tmp/a/b/c/dd
         /tmp/a/b/cc
         /tmp/a/bb
  )
ls -l    $A

# (find-fline "/tmp/a/b/c/d/e/f")
# (find-fline "/tmp/a/bb/cc/dd/ee/ff")





#####
#
# find-yttranscript-video
# 2022oct20
#
#####

# «find-yttranscript-video»  (to ".find-yttranscript-video")
  (set-frame-font "Noto Mono 14")
  (find-2a nil '(find-fline "~/tmp/cachorro_quadrado.jpg"))

  find-yttranscript-links:
   Downloading transcripts of a
    Youtube video, in eev style

     Eduardo Ochs
     http://angg.twu.net/#eev
     http://angg.twu.net/find-yttranscript-links.html
     2022oct20

 http://www.youtube.com/watch?v=aZWq6CEzhuQ
 LONE WOLF AND CUB: The Best First Manga To Read? (Plus an Edition Comparison)

 http://www.youtube.com/watch?v=fty9QL4aSRc
 Vladislav Zavialov - Haskell to Core: Understanding Haskell Features Through Their Desugaring

# (find-youtubedl-links "/sda5/videos/" nil "aZWq6CEzhuQ" nil "lonewolf")
# (code-youtubevideo "lonewolf" "aZWq6CEzhuQ" "{title}")
# (find-lonewolfvideo "2:34")
# (find-yttranscript-links "lonewolf" "aZWq6CEzhuQ")
% (find-lonewolfvideo "08:54" "but lone wolf and cub is above all")

# (find-youtubedl-links "/sda5/videos/" "Vladislav_Zavialov_-_Haskell_to_Core_-_Understanding_Haskell_Features_Through_Their_Desugaring" "fty9QL4aSRc" ".mkv" "haskelltocore")

# Play the local copy:
# (find-fline "/sda5/videos/" "fty9QL4aSRc")
# (find-fline "/sda5/videos/" "Vladislav_Zavialov_-_Haskell_to_Core_-_Understanding_Haskell_Features_Through_Their_Desugaring-fty9QL4aSRc")
# (find-fline "/sda5/videos/" "Vladislav_Zavialov_-_Haskell_to_Core_-_Understanding_Haskell_Features_Through_Their_Desugaring-fty9QL4aSRc.mkv")
# (find-video "/sda5/videos/Vladislav_Zavialov_-_Haskell_to_Core_-_Understanding_Haskell_Features_Through_Their_Desugaring-fty9QL4aSRc.mkv")
# (code-video "haskelltocorevideo" "/sda5/videos/Vladislav_Zavialov_-_Haskell_to_Core_-_Understanding_Haskell_Features_Through_Their_Desugaring-fty9QL4aSRc.mkv")
# (find-haskelltocorevideo)
# (find-haskelltocorevideo "0:00")

# Transcript:
# (find-yttranscript-links "haskelltocore" "fty9QL4aSRc")

# (find-importlib-links "youtube-transcript-downloader")
# (find-pypi-links      "youtube-transcript-downloader")




#####
#
# eev-and-tikz-video
# 2022oct15
#
#####

# «eev-and-tikz-video»  (to ".eev-and-tikz-video")
# (find-1stclassvideo-links "2022tikz")
# (find-2022tikzvideo "0:00")
# (find-fline "~/tmp/kliban__bobra.jpg")
# (find-sh0 "cp -v ~/tmp/gamba_e_banana.jpeg /tmp/me_and_a_repl.jpg")
# (defun b () (interactive) (find-fline "~/tmp/kliban__bobra.jpg"))
# (defun b () (interactive) (find-fline "/tmp/me_and_a_repl.jpg"))
# (find-2a nil '(b))

(find-wset "132_o_o_o"
  '(te)
  '(find-fline "/tmp/tikz1.pdf")
  '(find-fline "/tmp/me_and_a_repl.jpg")
  )


   Eev and TikZ, or:
   how to learn TikZ using a REPL

     Eduardo Ochs
     http://angg.twu.net/#eev
     http://angg.twu.net/eev-tikz.html
     2022nov02
     

   On learning TikZ:
     I tried the first time in 2014.
     I failed miserably many, many times.
     In oct/2022 I finally found a way
     that worked for me - using:

     a) links to the manual
        (both to the PDF and to its source)

     b) a REPL (actually two)

     c) a way to extract examples
        from the manual


   An example:
     (find-es "tikz")
     (find-es "tikz" "horiz-and-vert")


   (find-angg "LUA/tikz1.lua")
   (find-angg "LUA/tikz1.lua" "showtex-tests")
   (find-es "tikz" "tikzwd")
   (find-pdf-page "~/LATEX/2022tikzwd-2.pdf")
   (find-fline    "~/LATEX/2022tikzwd-2.tex")





#####
#
# ee-goto-position-mini
# 2022nov26
#
#####

# «ee-goto-position-mini»  (to ".ee-goto-position-mini")
# «find-dbsw-call-mini»    (to ".find-dbsw-call-mini")
# https://lists.gnu.org/archive/html/help-gnu-emacs/2022-11/msg00608.html Edrx
# https://lists.gnu.org/archive/html/help-gnu-emacs/2022-11/msg00619.html EBerg
# Problem with search-forward in *Help* buffers

Hi list,

consider these two defuns, and the four tests after them:

  ;; This is a simplified version of:
  ;; (find-efunction 'ee-goto-position)
  ;; http://angg.twu.net/eev-current/eev-blinks.el.html#ee-goto-position
  (defun ee-goto-position-mini (&optional str &rest strs)
    (when str
      (goto-char (point-min))
      (search-forward str)
      (dolist (s strs)
        (search-forward s))))

  ;; This is a simplified version of:
  ;; (find-efunction 'find-dbsw-call)
  ;; http://angg.twu.net/eev-current/eev-blinks.el.html#find-dbsw
  (defun find-dbsw-call-mini (sexp &rest pos-spec-list)
    (let ((display-buffer-overriding-action '(display-buffer-same-window)))
      (eval sexp))
    (apply 'ee-goto-position-mini pos-spec-list))

  (find-dbsw-call-mini '(customize-group 'editing)     "Parent")
  (find-dbsw-call-mini '(describe-function 'next-line) "line-move-visual")
  (find-dbsw-call-mini '(list-input-methods)           "TeX")
  (find-dbsw-call-mini '(describe-input-method 'TeX)   "\\bullet")

The first call to `find-dbsw-call-mini' works as I expected: it runs 

  (customize-group 'editing)

and searches for the first occurrence of the string "Parent" in it.
But in the other ones the search doesn't work - after the
(find-dbsw-call-mini ...) is run the point is elsewhere. What is
happening here? And do you have any suggestions of how to fix that?

  Thanks in advance!
    Eduardo Ochs
    http://angg.twu.net/#eev




#####
#
# Overlays for "understand" and "don't understand"
# 2022dec21
#
#####

# «overlays-for-understand»  (to ".overlays-for-understand")
# https://mail.google.com/mail/u/0/#sent/QgrcJHrttknZdVFDtsjljJsrdnmZlmBQjSg
# https://lists.gnu.org/archive/html/eev/2022-12/msg00022.html

Hi Quiliro!

I had some ideas.

The first one was to write some kind of parser that would show the
"category" of each line - in some sense - and if that line should be
executed with f8, M-e, or what. That would be hard to do... even a
barebones prototype would take me more than one day to write.

The second one is this:

  (defun gr (beg end)
    "Green: create an green overlay over the region"
    (interactive "r")
    (deactivate-mark 'force)
    (let ((ovl (make-overlay beg end)))
      (overlay-put ovl 'face '(:background "DarkOliveGreen" :extend t))))

  (defun rd (beg end)
    "Red: create an red overlay over the region"
    (interactive "r")
    (deactivate-mark 'force)
    (let ((ovl (make-overlay beg end)))
      (overlay-put ovl 'face '(:background "DarkRed" :extend t))))

  (defun nc ()
    "No color: delete all overlays at point"
    (interactive)
    (cl-loop for ovl in (overlays-at (point))
             do (delete-overlay ovl)))

Try to eval these defuns with `M-e' or `M-x eval-region'.
Then mark a  region and run `M-x rd' - that region will become red.
Mark another region and run `M-x gr' - that region will green.
Then put the point inside one of the red or green regions and
type `M-x nc' - that should delete all the red or green regions
that cover that point, and no others.

Can you try to use that on a temporary buffer generated by eev to mark
the parts that you don't understand with red, the parts that you
understand with green, and leave the parts that are between these two
extremities - "understand" and "don't understand" - unmarked? Do you
know how to take screenshots? Can you send one of these screenshots to
me?

My friends who are programmers know how to mark the parts that they
understand and that they don't understand of a buffer with _imaginary_
red and green overlays... let's see if these concrete red and green
overlays can help you!

  Cheers,
    Eduardo Ochs




#####
#
# how-to-test-a-buttonizer
# 2023jan03
#
#####

# «how-to-test-a-buttonizer»  (to ".how-to-test-a-buttonizer")
# https://lists.gnu.org/archive/html/eev/2023-01/msg00003.html
Hi Jean Louis,

I was going to answer this in private, but my answer was getting very
long and very detailed, and I saw that I would prefer to send it to a
public place. So here is it.


1. Introduction
===============
I think that you will need several different buttonizing functions.
For most of the functions here

  (find-eev "eev-elinks.el")

a simple algorithm will work, but try this one:

  (find-ecolor-links "gold")

it has some weird sexps - try it! =) - and most of the functions here

  (find-eev "eev-tlinks.el")

are even worse... for example, this one, that I will also mention
again later for other reasons,

  (find-angg-es-links)

shows some multi-line sexps in the temporary buffer, and some lines
there end with things in parentheses like this one:

  (fname &rest rest)

Should the buttonizer treat that as an elisp hyperlink? I don't know -
some people would accept using one that does, but some people would
hate one that buttonizes that argument list as a hyperlink...



2. find-find-links-links-new
============================
Practically all the functions in these two files

  (find-eev "eev-elinks.el")
  (find-eev "eev-tlinks.el")

are based on "skeletons" generated by `find-find-links-links-new'. 
Try this, and try to run the sexps after the ";; Skel:"s:

  (find-eevgrep "grep --color=auto -nH --null -e Skel: *.el")

The function `find-find-links-links-new' is explained in the first
part of this video here:

  ;; Title: Some template-based functions of eev that are not five-minute hacks
  ;; MP4:   http://angg.twu.net/eev-videos/2020-some-template-based.mp4
  ;; YT:    http://www.youtube.com/watch?v=91-9YfRPsuk
  ;; Page:  http://angg.twu.net/2020-some-template-based.html
  ;; Comment: 
  ;; Date:    2020dec24
  ;; Length:  33:11
  ;;
  ;; Play:  (find-eevtemplvideo "0:00")
  ;; Info:  (find-1stclassvideodef        "eevtempl")
  ;;        (find-eev "eev-videolinks.el" "eevtempl")
  ;;            (find-1stclassvideo-links "eevtempl")
  ;;
  ;; Index: (find-1stclassvideoindex              "eevtempl")
  ;;        http://angg.twu.net/.emacs.videos.html#eevtempl
  ;;        (find-angg         ".emacs.videos"    "eevtempl")
  ;;        (find-angg-es-links)

I added subtitles to that video just a few days ago, in 2022-12-27.
Have you configured `find-angg' to use wget? If you haven't done that
yet, try to follow the instructions in the error message of the
(find-angg ___) sexp above...

If your `find-angg' is defined correctly then these two ways to read
the subtitles of that video without watching it will work:

  http://angg.twu.net/SUBTITLES/2020-some-template-based.lua.html
          (find-angg "SUBTITLES/2020-some-template-based.lua")



3. `find-elinks' and `find-elinks-elisp'
========================================
Some of the `find-*-links' functions in these two files

  (find-eev "eev-elinks.el")
  (find-eev "eev-tlinks.el")

use `find-elinks' in their cores, and some use `find-elinks-elisp',
that is very similar but also does something extra. Take a look at:

  (find-efunction 'find-elinks)
  (find-efunction 'find-elinks-elisp)
  (find-efunction 'find-estring)
  (find-efunction 'find-estring-elisp)

Try to create variants that also do something extra, but in which this
something extra is running one of your buttonizing functions.



4. Redefining standard functions
================================
This is a trick that I invented recently and that I find very useful.
When I redefine a function - usually in my init file - I always keep a
link to where the original function is, like this:

  ;; Original: (find-eev "eepitch.el" "eepitch-shell")
  ;; Version that uses zsh:
  (defun eepitch-shell  () (interactive) (eepitch-de '(shell)))
  (defun eepitch-shell2 () (interactive) (eepitch-de '(shell "*shell 2*")))
  (defun eepitch-shell3 () (interactive) (eepitch-de '(shell "*shell 3*")))

For example, let's suppose that you want to redefine eev's
`find-efunction-links' by a version that uses your
`find-elinks-buttonize1' instead of the default `find-elinks'. My
suggestion is: write the original function to one of your init files -
let's say ~/.emacs for simplicity - and change just its `find-elinks'
by a `find-elinks-buttonize1'. Also, put these two lines above its
definition:

  ;; Original: (find-eev "eev-elinks.el" "find-efunction-links")
  ;; Try also: (find-efunction 'find-efunction-links)

You will see that the link in the "Try also:" doesn't work well -
sometimes it will take you to your definition, one or two lines below
the "Try also:", instead of to the original definition, but the link
that says "Original:" will always work...


Please tell me if the hints above don't help you and/or if any of them
does not lead you to learn things that are interesting & fun.

  Cheers =),
    Eduardo




#####
#
# eev-rcd-tap-1.el
# 2023jan04
#
#####

# «eev-rcd-tap-1.el»  (to ".eev-rcd-tap-1.el")
# (find-angg "elisp/eev-rcd-tap-1.el")
# (find-telegachat "@rcdrun#210477")



#####
#
# "What is the Purpose of eev? Summarize it in a single paragraph."
# 2023jan08
#
#####

# «summarize-it-in-a-single»  (to ".summarize-it-in-a-single")
# https://lists.gnu.org/archive/html/eev/2023-01/msg00008.html
# https://lists.gnu.org/archive/html/eev/2023-01/msg00011.html
# 2+3=3+2 -> a+b=b+a

I've tried that many times, and that sort of can't be done - at least
it can't be done _in text_. I have many summaries available, and most
people hate either all of them or all but one or two. Try this one:

  http://angg.twu.net/eev-for-longtime-emacs-users.html

In particular, watch this demo:

  (find-eev2019video "13:10" "Demo: patching xpdf")

The purpose of eev _for me_ is to let me "automate almost everything"
by recording executable notes like that and playing them back like
that.

---
# https://lists.gnu.org/archive/html/eev/2023-01/msg00011.html

> I was the test person, I read that introduction and is not enough. I
> can't gain understanding.

Here it goes, in capitals:

  Then STOP TRYING
  TO UNDERSTAND IT
  BY READING!!!!!!

  TRYING TO UNDERSTAND WHAT EEV IS
  BY READING ABOUT IT
  WILL BE A WASTE
  OF BOTH YOUR TIME
  AND MY TIME!!!!!!!!!!!

Either try more "Try it"s in the tutorial or watch the demo in my
presentation in the EmacsConf2019. Compare the situation with learning
what is a Turing machine in the early 80s versus playing a
coin-operated video games in the early 80s - Donkey Kong, say, or Qix.
It is VERY HARD to imagine that a video game can be fun, and how fun
it can be, by just learning what a Turing machine can do and trying to
imagine a video game, or by reading an _objective_ description of what
a video game _is_ or what a video game _does_.

The slides of my presentation at the EmacsConf 2019, that are in the
second link below,

  http://angg.twu.net/emacsconf2019.html
  http://angg.twu.net/LATEX/2019emacsconf.pdf

tell a bit of how discovering Emacs - and eval-last-sexp, of course -
was a visceral experience for me, very similar to how certain video
games, and some vinyls and CDs, were. The part of the video in which I
present those slides is more fun because I scream at some points, but
I think that you will prefer to just read the slides quickly.


> I understand it is for you. Though it is too general. Automating
> everything is good in general, but does not tell what eev does.

Then: eev doesn't do anything by itself. Emacs comes with C-x C-e,
i.e., eval-last-sexp, that is incredibly powerful, but that power is
not immediately obvious to everyone. Eev makes that power slightly
more accessible.

I've met at least two persons - my sister and one ex-internet friend -
who thought that a monochrome screen with an unfontified sexp was
something so repulsive that they couldn't stare at that for more than
a few seconds with complaining or running away. Eev is certainly not
for them - and so, by consequence, eev is not for everyone.



#####
#
# find-estring-mini
# 2023feb03
#
#####

# «find-estring-mini»  (to ".find-estring-mini")
# (find-efunction 'find-estring)
# (find-es "emacs" "emoji-heavy-black-heart")

;; This is a simplified version of:
;; http://anggtwu.net/eev-current/eev-blinks.el.html#find-estring
;;
(defun find-estring-mini (string)
  (switch-to-buffer "*string*")
  (kill-region (point-min) (point-max))
  (insert string))

(find-estring-mini "abc")
(find-estring-mini "def")





#  Local Variables:
#  coding: utf-8-unix
#  modes:  (fundamental-mode emacs-lisp-mode)
#  End: