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") # «.copy-line-to-end-of-TODO» (to "copy-line-to-end-of-TODO") # «.a-people-and-b-people» (to "a-people-and-b-people") # «.lumie-5-year-old» (to "lumie-5-year-old") # «.spamming-the-channel» (to "spamming-the-channel") # «.transvestite» (to "transvestite") # «.notebooks» (to "notebooks") # (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") ##### # # copy-line-to-end-of-TODO # 2024aug11 # ##### # «copy-line-to-end-of-TODO» (to ".copy-line-to-end-of-TODO") # (find-telegachat "-1002188044240#3171" "setq rcirc-default-nick") # (find-telegachat "-1002188044240#3178" "Versao mais melhorada:") # (find-wget-elisp "https://0x0.st/XWWJ.txt") # (find-fline "~/LOGS/2024aug11.eev") ;; Overwrite `ee-copy-this-line-to-kill-ring' with a fixed version: (defun ee-copy-this-line-to-kill-ring (&optional arg) "Copy the current line to the kill ring and highlight (\"flash\") it. With a prefix argument run `ee-copy-preceding-tag-to-kill-ring' instead." (interactive "P") (if arg (ee-copy-preceding-tag-to-kill-ring) (let* ((start (ee-bol-skip-invisible)) (end (ee-eol-skip-invisible)) (str (buffer-substring start end)) (msg "Copied the current line to the kill ring - use C-y to paste")) (eeflash+ start end eeflash-copy) (kill-new str) (message msg)))) ;; Copy the current line to the end of the ~/TODO. ;; M-211j and M-221j work similarly to M-21j, and ;; M-311j and M-331j work similarly to M-21j. ;; For more info in M-21j and M-31j, see: ;; (find-eejumps "M-2 M-1 M-j") ;; (find-eejumps "M-3 M-1 M-j") ;; (defun eejump-211 () (eek "M-h M-w M-3 M-1 M-j M-> C-y RET C-x o")) (defun eejump-221 () (eek "M-h M-w M-3 M-1 M-j M-> C-y RET C-x o")) (defun eejump-311 () (eek "M-h M-w M-3 M-1 M-j M-> C-y RET")) (defun eejump-331 () (eek "M-h M-w M-3 M-1 M-j M-> C-y RET")) ;; Test: ;; (eval-buffer) ;; (eek "M-2 M-2 M-1 M-j") ##### # # a-people-and-b-people # 2024sep14 # ##### # «a-people-and-b-people» (to ".a-people-and-b-people") # (find-fline "~/LOGS/2024sep13.emacs2" "<grym> ((M-: runs eval-expression") # (find-fline "~/LOGS/2024sep13.emacs2" "<edrx> grym: why not this:") # (find-fline "~/LOGS/2024sep13.emacs2" "<edrx> all sexps are worth keeping") # (find-fline "~/LOGS/2024sep13.emacs2" "for (a) people eev is neat, for (b) people") # (find-TH "2024-a-people-and-b-people") ##### # # lumie-5-year-old # 2024sep24 # ##### # «lumie-5-year-old» (to ".lumie-5-year-old") # (find-fline "~/LOGS/2024sep23.emacs" "<edrx> older kids expect something useful") # (find-fline "~/tmp/lumie-5-year-old.png") # (xz "~/tmp/lumie-5-year-old.png") # (find-TH "2024-eev-for-5-year-olds") # (find-angg "LUA/ParseRcircLogs1.lua") <Lumie> edrx: maybe you can give me a summary for a 5-year old about it <edrx> Lumie: let me try <edrx> Lumie: Emacs was created when computers were much more primitive and people were much more creative <Lumie> I meant eev, but sure <edrx> Lumie: by people who decided to take their favorite programming language - Lisp - and add a few functions to it to make a very basic extensible editor in which they could write Lisp expressions like, say, (+ 1 2), and execute them by putting the cursor after the ")" and typing C-x C-e <Lumie> edrx: I know! <edrx> Lumie: that functionality is still present, but most people are against - or rather, FEROCIOUSLY against - teaching it to beginners <edrx> Lumie: so, for example, you can paste this into a file in which you keep your notes <edrx> (info "(emacs)Init File") <Lumie> My bad, I thought you started a lecture on emacs, patience was never one of my virtues :) <edrx> Lumie: and use it as a kind of hyperlink - but you will have to execute it with C-e C-x C-e - that I will abbreviate as C-exe - instead of clicking on it. <edrx> the core of eev is a key sequence - M-e - that works as C-exe, and lots of features to encourage people to put sexps in their notes and use them in hyperlinks. <edrx> that's "executable notes". <edrx> but nowadays it is better to start by the feature in the screenshots with handwriting near the top of this page: http://anggtwu.net/eepitch.html <edrx> and you can try that by running this: (progn (package-install 'eev) (eev-beginner) (find-eev-quick-intro "6.1.")) <edrx> and that's a way to explain eev to a 5-year old <Lumie> Seems like something I don't see myself using sorry to say, my workflow doesn't really need that <edrx> Lumie: ok <Lumie> I'm a simple person <edrx> Lumie: in the last strike that we had here the students occupied one of the buildings and I gave a workshop on these things <edrx> the compsci students didn't come, of course <edrx> and the psychology students liked it because they found it fun to play with <Lumie> :) <edrx> so for 5-year olds I can say "try it, it is fun!" <edrx> older kids expect something useful <bpalmer> edrx: that explanation of eev is very polished, I think. <edrx> bpalmer: thanks! =) ##### # # spamming-the-channel # 2024nov16 # ##### # «spamming-the-channel» (to ".spamming-the-channel") # «transvestite» (to ".transvestite") # (find-angggrep "grep --color=auto -nH --null -e spamming LOGS/*") # (find-angggrep "grep --color=auto -nH --null -e find-eev-quick-intro LOGS/*") # (find-angggrep "grep --color=auto -nH --null -e disclaimer LOGS/*") # (find-angggrep "grep --color=auto -nH --null -e transvestite LOGS/*") # (find-angggrep "grep --color=auto -nH --null -e paragraph LOGS/*") # (find-fline "~/LOGS/2024mar07.emacs" "I still don't know what disclaimers") # (find-fline "~/LOGS/2024mar07.emacs" "get down to the source code before") # (find-fline "~/LOGS/2024oct05.emacs" "pollutes a tutorial") # (find-fline "~/LOGS/2024oct05.emacs" "edrx: you're spamming the channel") # (find-fline "~/LOGS/2024oct05.emacs" "match its relevance") # (find-fline "~/LOGS/2024oct05.emacs" "transvestite") <edrx> for me the central point is another one. I explained it at the end of this e-mail: https://lists.gnu.org/archive/html/emacs-devel/2024-10/msg00093.html <edrx> for many people sexps cannot be mixed with text without warning - that pollutes a tutorial, or instructions, or whatever, and makes them unsuitable to be shown to beginners <edrx> a few days ago a friend of mine told me how her uncle was her favorite person - but he was a tranvestite, and he was executed together with two other transvestite friends in 2006 <edrx> by a paramilitary group that decided to "clean the city" <edrx> sometimes I suggest things like: copy the sexp (info "(emacs)Init file") to your notes and execute it <edrx> and then some people get REALLY ANGRY <edrx> these same people have even told me that we shouldn't even include links like http://anggtwu.net/eev-intros/find-eev-quick-intro.html#2 in LISTS of materials for beginners <edrx> why? <edrx> that's what I want to understand <edrx> at this moment the best idea that I have is that this MAY BE related to some ideas of frontiers and pollution that were studied by some anthropologists <edrx> here is another quote from Mary Douglas, also taken from Judith Butler's "Purity and Danger": ##### # # notebooks # 2024oct12 # ##### # «notebooks» (to ".notebooks") # (find-fline "~/LOGS/2024oct12.emacs" "Notebook_interface") # https://en.wikipedia.org/wiki/Notebook_interface # https://www.datanami.com/2016/05/04/rise-data-science-notebooks/ # https://jupyterlab.readthedocs.io/en/latest/user/notebook.html#notebook # (find-telegachat "@Leonaneuriques#235282" "Leonan Ouriques") # Local Variables: # coding: utf-8-unix # modes: (fundamental-mode emacs-lisp-mode) # End: