branch: externals/eev commit 77675d5a9fefd65de5917188fa45f634d83aa6fb Author: Eduardo Ochs <eduardoo...@gmail.com> Commit: Eduardo Ochs <eduardoo...@gmail.com>
Generate the functions like `find-{c}video' automatically. --- ChangeLog | 42 ++++ VERSION | 4 +- eev-strange-functions.el | 5 +- eev-tlinks.el | 229 +++++++++++++++------ eev-videolinks.el | 524 +++++------------------------------------------ 5 files changed, 264 insertions(+), 540 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9de86ef885..0b6f4937a9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,45 @@ +2024-02-20 Eduardo Ochs <eduardoo...@gmail.com> + + * eev-videolinks.el (find-eev2019video, find-eev2020video) + (find-eev2021video, find-eev2021bvideo, find-eevnavvideo) + (find-eevtemplvideo, find-eevfherelvideo, find-eevtestblsvideo) + (find-eevvlinksvideo, find-oficina20210video) + (find-oficina2021avideo, find-oficina2021bvideo) + (find-2021ssrvideo, find-2021workshop1video) + (find-2021workshop2video, find-2021workshop3video) + (find-2021workshop4video, find-2021workshop5video) + (find-2021workshop6video, find-2021orgfornonusersvideo) + (find-2021ffllvideo, find-2022eevmake0video) + (find-2022findeevanggvideo, find-2022findelispintrovideo) + (find-2022pict2eluavideo, find-2022eevwconfigpt1video) + (find-2022eevwconfigpt2video, find-2022eevwconfigvideo) + (find-2022yttranscriptvideo, find-2022tikzvideo) + (find-eev2022klavideo, find-eev2022pyvideo) + (find-eev2023replsvideo, find-eev2023replsbvideo) + (find-2024gitvideo, find-2024luasovideo): deleted - all these + functions are now generated by a single call to + `(code-1stclassvideos)'. + (ee-all-cs-with-subs, code-lsubs, find-code-lsubs) + (ee-code-lsubs, code-all-lsubs, find-code-all-lsubs) + (ee-code-all-lsubs): deleted - these functions were used to + generate some of the functions generated by the call to + `(code-1stclassvideos)'. + + * eev-tlinks.el (ee-find-1stclassvideo-links): rewritten. + (ee-1stclassvideo-basicinfo, ee-1stclassvideo-basicsexps) + (ee-1stclassvideo-defuns, code-1stclassvideo) + (find-code-1stclassvideo, ee-code-1stclassvideo): new functions. + (ee-find-1stclassvideo-defun): deleted. + (code-1stclassvideos, find-code-1stclassvideos) + (ee-code-1stclassvideos): new functions. + +2024-02-19 Eduardo Ochs <eduardoo...@gmail.com> + + * eev-tlinks.el (ee-1stclassvideo-dlsubs): small changes. + (ee-1stclassvideo-dlsubs0): new function. + + * eev-kl-here.el (kl, kll, kls): now they are aliases. + 2024-02-18 Eduardo Ochs <eduardoo...@gmail.com> * eev-strange-functions.el (ee-sf-1stclassvideo-p): new file. diff --git a/VERSION b/VERSION index 9cf453ae52..4413529ba2 100644 --- a/VERSION +++ b/VERSION @@ -1,2 +1,2 @@ -Mon Feb 19 13:50:45 GMT 2024 -Mon Feb 19 10:50:45 -03 2024 +Tue Feb 20 06:41:18 GMT 2024 +Tue Feb 20 03:41:18 -03 2024 diff --git a/eev-strange-functions.el b/eev-strange-functions.el index 4ae7f59218..dd1142c25e 100644 --- a/eev-strange-functions.el +++ b/eev-strange-functions.el @@ -72,8 +72,7 @@ find-1stclassvideo-links)) (defvar ee-sf-1stclassvideo-re - (rx bos "find-" (group (+ any)) - (or "video" "hsubs" "lsubs") eos)) + (rx bos "find-" (group (+ any)) (or "video" "hsubs" "lsubs") eos)) (defun ee-sf-1stclassvideo-stem (f) (and (symbolp f) @@ -116,7 +115,7 @@ (hsubs (if hsubs (ee-template0 hsubs-t0) "")) (lsubs (if hassubs (ee-template0 lsubs-t0) "")) (index (if hasindex (ee-template0 index-t0) "")) - (dlsubs (ee-1stclassvideos-dlsubs c)) + (dlsubs (ee-1stclassvideo-dlsubs c)) ) `("foo" "bar" diff --git a/eev-tlinks.el b/eev-tlinks.el index 6b638d2761..1a0ffc4b27 100644 --- a/eev-tlinks.el +++ b/eev-tlinks.el @@ -19,7 +19,7 @@ ;; ;; Author: Eduardo Ochs <eduardoo...@gmail.com> ;; Maintainer: Eduardo Ochs <eduardoo...@gmail.com> -;; Version: 20240217 +;; Version: 20240220 ;; Keywords: e-scripts ;; ;; Latest version: <http://anggtwu.net/eev-current/eev-tlinks.el> @@ -138,6 +138,12 @@ ;; «.ee-use-red-bullets» (to "ee-use-red-bullets") ;; «.find-angg-es-links» (to "find-angg-es-links") ;; «.find-1stclassvideo-links» (to "find-1stclassvideo-links") +;; «.ee-1stclassvideo-basicinfo» (to "ee-1stclassvideo-basicinfo") +;; «.ee-1stclassvideo-basicsexps» (to "ee-1stclassvideo-basicsexps") +;; «.ee-1stclassvideo-dlsubs» (to "ee-1stclassvideo-dlsubs") +;; «.ee-1stclassvideo-defuns» (to "ee-1stclassvideo-defuns") +;; «.code-1stclassvideo» (to "code-1stclassvideo") +;; «.code-1stclassvideos» (to "code-1stclassvideos") ;; «.find-1stclassvideoindex» (to "find-1stclassvideoindex") ;; «.find-1stclassvideohsubs» (to "find-1stclassvideohsubs") ;; «.find-1stclassvideolsubs» (to "find-1stclassvideolsubs") @@ -3204,7 +3210,12 @@ This function is used by `ee-0x0-upload-region'." - +;;; _ _ __ _ _ _ _ +;;; _ __ ___ __| | ___| |_ __ _ _ __ ___ / / | |__ _ _| | | ___| |_ ___ +;;; | '__/ _ \/ _` | / __| __/ _` | '__/ __| / / | '_ \| | | | | |/ _ \ __/ __| +;;; | | | __/ (_| | \__ \ || (_| | | \__ \ / / | |_) | |_| | | | __/ |_\__ \ +;;; |_| \___|\__,_| |___/\__\__,_|_| |___/ /_/ |_.__/ \__,_|_|_|\___|\__|___/ +;;; ;; «find-eepitch-bullet-links» (to ".find-eepitch-bullet-links") ;; «find-red-star-links» (to ".find-red-star-links") ;; Skel: (find-find-links-links-new "red-star" "" "") @@ -3303,7 +3314,13 @@ This function is used by `ee-0x0-upload-region'." - +;;; +;;; __ _ _ __ __ _ __ _ ___ ___ +;;; / _` | '_ \ / _` |/ _` |_____ / _ \/ __| +;;; | (_| | | | | (_| | (_| |_____| __/\__ \ +;;; \__,_|_| |_|\__, |\__, | \___||___/ +;;; |___/ |___/ +;; ;; «find-angg-es-links» (to ".find-angg-es-links") ;; Skel: (find-find-links-links-new "angg-es" "" "") ;; Test: (find-angg-es-links) @@ -3394,6 +3411,12 @@ This function is used by `ee-0x0-upload-region'." +;;; _ _ _ _ _ +;;; / |___| |_ ___| | __ _ ___ _____ _(_) __| | ___ ___ +;;; | / __| __/ __| |/ _` / __/ __\ \ / / |/ _` |/ _ \/ _ \ +;;; | \__ \ || (__| | (_| \__ \__ \\ V /| | (_| | __/ (_) | +;;; |_|___/\__\___|_|\__,_|___/___/ \_/ |_|\__,_|\___|\___/ +;;; ;; «find-1stclassvideo-links» (to ".find-1stclassvideo-links") ;; Skel: (find-find-links-links-new "1stclassvideo" "c" "body") ;; See: (find-eev "eev-videolinks.el" "first-class-videos") @@ -3448,20 +3471,38 @@ This function is used by `ee-0x0-upload-region'." ;; Test: ;; (find-estring-elisp (ee-find-1stclassvideo-links "eev2021")) +;; (find-estring-elisp (ee-find-1stclassvideo-links "2021ssr")) ;; (defun ee-find-1stclassvideo-links (c) "An internal function used by `find-1stclassvideo-links'." + (let* ((basicinfo (ee-1stclassvideo-basicinfo c)) + (basicsexps (ee-1stclassvideo-basicsexps c)) + (dlsubs (ee-1stclassvideo-dlsubs c)) + (defuns (ee-1stclassvideo-defuns c))) + (ee-template0 "\ +{basicinfo}\ +;; +{basicsexps}\ +;; +{dlsubs}\ + +;; See: +;; (find-video-links-intro \"9. First-class videos\") +;; (find-eev \"eev-videolinks.el\" \"first-class-videos\") +;; (find-eev \"eev-videolinks.el\" \"second-class-videos\") + +{defuns} +"))) + +;; «ee-1stclassvideo-basicinfo» (to ".ee-1stclassvideo-basicinfo") +;; Tests: (find-estring (ee-1stclassvideo-basicinfo "eev2021")) +;; (find-estring (ee-1stclassvideo-basicinfo "2021ssr")) +;; +(defun ee-1stclassvideo-basicinfo (c) (ee-let*-macro-1stclassvideo-c c (let* ((hsubsurl-t0 ";; HSubs: {hsubs}\n") - (hsubs-t0 ";; HSubs: (find-{c}hsubs \"{subsinit}\")\n") - (lsubs-t0 ";; LSubs: (find-{c}lsubs \"{subsinit}\")\n") - (index-t0 ";; Index: (find-1stclassvideo-index \"{c}\")\n") - (hsubsurl (if hsubs (ee-template0 hsubsurl-t0) "")) - (hsubs (if hsubs (ee-template0 hsubs-t0) "")) - (lsubs (if hassubs (ee-template0 lsubs-t0) "")) - (index (if hasindex (ee-template0 index-t0) "")) - (dlsubs (ee-1stclassvideos-dlsubs c))) + (hsubsurl (if hsubs (ee-template0 hsubsurl-t0) ""))) (ee-template0 "\ ;; Title: {title} ;; MP4: {mp4} @@ -3471,75 +3512,149 @@ This function is used by `ee-0x0-upload-region'." ;; Comment: {comment} ;; Date: {date} ;; Length: {length} +")))) + +;; «ee-1stclassvideo-basicsexps» (to ".ee-1stclassvideo-basicsexps") +;; Tests: (find-estring (ee-1stclassvideo-basicsexps "eev2021")) +;; (find-estring (ee-1stclassvideo-basicsexps "2021ssr")) ;; +(defun ee-1stclassvideo-basicsexps (c &optional pos) + (ee-let*-macro-1stclassvideo-c + c + (let* ((init (or pos subsinit "00:00")) + (hsubs-t0 ";; HSubs: (find-{c}hsubs \"{init}\")\n") + (lsubs-t0 ";; LSubs: (find-{c}lsubs \"{init}\")\n") + (index-t0 ";; Index: (find-1stclassvideo-index \"{c}\")\n") + (hsubs-sexp (if hsubs (ee-template0 hsubs-t0) "")) + (lsubs-sexp (if hassubs (ee-template0 lsubs-t0) "")) + (index-sexp (if hasindex (ee-template0 index-t0) ""))) + (ee-template0 "\ ;; Play: (find-{c}video \"00:00\") -{hsubs}\ -{lsubs}\ -{index}\ +{hsubs-sexp}\ +{lsubs-sexp}\ +{index-sexp}\ ;; Info: (find-1stclassvideo-links \"{c}\") ;; (find-1stclassvideo-def \"{c}\") -{dlsubs}\ - -;; See: -;; (find-video-links-intro \"9. First-class videos\") -;; (find-eev \"eev-videolinks.el\" \"first-class-videos\") -;; (find-eev \"eev-videolinks.el\" \"second-class-videos\") ")))) - - -;; Test: -;; (find-estring-elisp (ee-find-1stclassvideo-defun "C" "M" "H")) -;; -(defun ee-find-1stclassvideo-defun (c mp4stem hash) - (ee-template0 "\ -;; <find-{c}video> -;; Info: (find-1stclassvideo-links \"{c}\") -;; Play: (find-{c}video \"0:00\") -\(defun find-{c}video (&optional time &rest rest) - \"Play one of the first-class videos of eev starting at TIME. -For more info on this particular video, run: - (find-1stclassvideo-links \\\"{c}\\\")\" - (interactive) - (find-1stclassvideo-video \"{c}\" time)) -")) - - -;; Tests: (ee-1stclassvideos-dlsubs "2022pict2elua") -;; (find-1stclassvideo-links "2022pict2elua") -;; (ee-1stclassvideos-dlsubs "2021workshop6") -;; (find-1stclassvideo-links "2021workshop6") -;; See: (find-eev "eev-videolinks.el" "ee-1stclassvideos-field") +;; «ee-1stclassvideo-dlsubs» (to ".ee-1stclassvideo-dlsubs") +;; Tests: (find-estring (ee-1stclassvideo-dlsubs0 "eev2021" nil nil)) +;; (find-estring (ee-1stclassvideo-dlsubs0 "eev2021" nil t)) +;; (find-estring (ee-1stclassvideo-dlsubs0 "eev2021" t nil)) +;; (find-estring (ee-1stclassvideo-dlsubs0 "eev2021" t t)) +;; (find-estring (ee-1stclassvideo-dlsubs "eev2021")) +;; (find-estring (ee-1stclassvideo-dlsubs "2021ssr")) ;; -(defun ee-1stclassvideos-dlsubs (c) - "An internal function used by `find-1stclassvideo-links'." +(defun ee-1stclassvideo-dlsubs (c) (ee-let*-macro-1stclassvideo-c c - (let* ((template00 ";; + (ee-1stclassvideo-dlsubs0 c mp4found hassubs))) + +(defun ee-1stclassvideo-dlsubs0 (c haslocal hassubs) + "An internal function used by `find-1stclassvideo-links'." + (let* ((template-nolocal-nosubs "\ ;; You don't have a local copy of this video. ;; To download a local copy, run this: ;; (find-1stclassvideo-psne \"{c}\") ;; This video doesn't have subtitles.\n") - (template01 ";; + (template-nolocal-hassubs "\ ;; You don't have a local copy of this video. ;; To download a local copy of the video with subtitles, run: ;; (find-1stclassvideo-psne \"{c}\")\n") - (template10 ";; + (template-haslocal-nosubs "\ ;; We have a local copy of this video. ;; This video doesn't have subtitles.\n") - (template11 ";; + (template-haslocal-hassubs "\ ;; You have a local copy of this video. ;; The upstream copy of this video has subtitles. ;; If you don't have a local copy of its subtitles, or if you ;; want to update the local copy of the subtitles, run this: ;; (find-1stclassvideo-psne \"{c}\")\n")) - (if mp4found - (if hassubs - (ee-template0 template11) - (ee-template0 template10)) - (if hassubs - (ee-template0 template01) - (ee-template0 template00)))))) + (if haslocal + (if hassubs + (ee-template0 template-haslocal-hassubs) + (ee-template0 template-haslocal-nosubs)) + (if hassubs + (ee-template0 template-nolocal-hassubs) + (ee-template0 template-nolocal-nosubs))))) + +;; «ee-1stclassvideo-defuns» (to ".ee-1stclassvideo-defuns") +;; Tests: (find-estring-elisp (ee-1stclassvideo-defuns "eev2021")) +;; (find-estring-elisp (ee-1stclassvideo-defuns "2021ssr")) +;; (find-eev "eev-videolinks.el" "code-lsubs") +;; +(defun ee-1stclassvideo-defuns (c) + (ee-let*-macro-1stclassvideo-c + c + (if hassubs + (ee-template0 "\ +;; From: (find-code-1stclassvideo \"{c}\") +;; See: (find-1stclassvideo-links \"{c}\") +;; +(defun find-{c}video (&optional time &rest rest) + (interactive) + (find-1stclassvideo-video \"{c}\" time)) + +(defun find-{c}lsubs (&optional time &rest rest) + (interactive) + (apply 'find-1stclassvideo-lsubs \"{c}\" time rest)) + +(defun find-{c}hsubs (&optional time &rest rest) + (interactive) + (find-1stclassvideo-hsubs \"{c}\" time)) +") + (ee-template0 "\ +;; From: (find-code-1stclassvideo \"{c}\") +;; See: (find-1stclassvideo-links \"{c}\") +;; +(defun find-{c}video (&optional time &rest rest) + (interactive) + (find-1stclassvideo-video \"{c}\" time)) +")))) + + + +;; «code-1stclassvideo» (to ".code-1stclassvideo") +;; Skel: (find-code-xxx-links "1stclassvideo" "c" "") +;; Tests: (find-code-1stclassvideo "eev2021") +;; (ee-1stclassvideo-defuns "2021ssr")) +;; +(defun code-1stclassvideo (c) + "Define the \"strange functions\" associated to the video C. +When C is the identifier of a first-class video with subtitles, +like \"eev2021\", define three strange functions: +`find-{c}video', `find-{c}hsubs', and `find-{c}lsubs'. When C is +the identifier of a first-class video without subtitles, define +only `find-{c}video'." + (eval (ee-read (ee-code-1stclassvideo c)))) + +(defun find-code-1stclassvideo (c) + (find-estring-elisp (ee-code-1stclassvideo c))) +(defun ee-code-1stclassvideo (c) + (ee-1stclassvideo-defuns c)) + + + +;; «code-1stclassvideos» (to ".code-1stclassvideos") +;; Skel: (find-code-xxx-links "1stclassvideos" "cs" "") +;; Tests: (find-code-1stclassvideos '("eev2021" "2021ssr")) +;; (find-code-1stclassvideos) +;; See: (find-eev "eev-videolinks.el" "strange-functions") +;; +(defun code-1stclassvideos (&optional cs) + "Define the \"strange functions\" associated to the videos in CS. +CS must be a list of identifiers of first-class videos. When CS +is nil, use the result of (ee-1stclassvideos)." + (eval (ee-read (ee-code-1stclassvideos cs)))) + +(defun find-code-1stclassvideos (&optional cs) + (find-estring-elisp (ee-code-1stclassvideos cs))) +(defun ee-code-1stclassvideos (&optional cs) + (concat + ";; See: (find-eev \"eev-tlinks.el\" \"code-1stclassvideos\")\n\n" + (mapconcat 'ee-code-1stclassvideo + (or cs (ee-1stclassvideos)) + "\n\n"))) diff --git a/eev-videolinks.el b/eev-videolinks.el index ec4b66e39d..2be9e75ea4 100644 --- a/eev-videolinks.el +++ b/eev-videolinks.el @@ -19,7 +19,7 @@ ;; ;; Author: Eduardo Ochs <eduardoo...@gmail.com> ;; Maintainer: Eduardo Ochs <eduardoo...@gmail.com> -;; Version: 20240205 +;; Version: 20240220 ;; Keywords: e-scripts ;; ;; Latest version: <http://anggtwu.net/eev-current/eev-videolinks.el> @@ -37,44 +37,6 @@ ;; «.select» (to "select") ;; «.ee-use-youtube-videos» (to "ee-use-youtube-videos") ;; «.ee-use-local-videos» (to "ee-use-local-videos") -;; «.first-class-videos» (to "first-class-videos") -;; «.video-tutorials» (to "video-tutorials") -;; «.find-eev2019video» (to "find-eev2019video") -;; «.find-eev2020video» (to "find-eev2020video") -;; «.find-eev2021video» (to "find-eev2021video") -;; «.find-eev2021bvideo» (to "find-eev2021bvideo") -;; «.find-eevnavvideo» (to "find-eevnavvideo") -;; «.find-eevtemplvideo» (to "find-eevtemplvideo") -;; «.find-eevfherelvideo» (to "find-eevfherelvideo") -;; «.find-eevtestblsvideo» (to "find-eevtestblsvideo") -;; «.find-eevvlinksvideo» (to "find-eevvlinksvideo") -;; «.find-oficina20210video» (to "find-oficina20210video") -;; «.find-oficina2021avideo» (to "find-oficina2021avideo") -;; «.find-oficina2021bvideo» (to "find-oficina2021bvideo") -;; «.find-2021ssrvideo» (to "find-2021ssrvideo") -;; «.find-2021workshop1video» (to "find-2021workshop1video") -;; «.find-2021workshop2video» (to "find-2021workshop2video") -;; «.find-2021workshop3video» (to "find-2021workshop3video") -;; «.find-2021workshop4video» (to "find-2021workshop4video") -;; «.find-2021workshop5video» (to "find-2021workshop5video") -;; «.find-2021workshop6video» (to "find-2021workshop6video") -;; «.find-2021orgfornonusersvideo» (to "find-2021orgfornonusersvideo") -;; «.find-2021ffllvideo» (to "find-2021ffllvideo") -;; «.find-2022eevmake0video» (to "find-2022eevmake0video") -;; «.find-2022findeevanggvideo» (to "find-2022findeevanggvideo") -;; «.find-2022findelispintrovideo» (to "find-2022findelispintrovideo") -;; «.find-2022pict2eluavideo» (to "find-2022pict2eluavideo") -;; «.find-2022eevwconfigpt1video» (to "find-2022eevwconfigpt1video") -;; «.find-2022eevwconfigpt2video» (to "find-2022eevwconfigpt2video") -;; «.find-2022eevwconfigvideo» (to "find-2022eevwconfigvideo") -;; «.find-2022yttranscriptvideo» (to "find-2022yttranscriptvideo") -;; «.find-2022tikzvideo» (to "find-2022tikzvideo") -;; «.find-eev2022klavideo» (to "find-eev2022klavideo") -;; «.find-eev2022pyvideo» (to "find-eev2022pyvideo") -;; «.find-eev2023replsvideo» (to "find-eev2023replsvideo") -;; «.find-eev2023replsbvideo» (to "find-eev2023replsbvideo") -;; «.find-2024gitvideo» (to "find-2024gitvideo") -;; «.find-2024luasovideo» (to "find-2024luasovideo") ;; «.more-info» (to "more-info") ;; «.ee-1stclassvideos-info» (to "ee-1stclassvideos-info") ;; «.eev2019» (to "eev2019") @@ -116,8 +78,9 @@ ;; «.second-class-videos» (to "second-class-videos") ;; «.code-eevvideo» (to "code-eevvideo") ;; «.code-youtubevideo» (to "code-youtubevideo") -;; «.code-lsubs» (to "code-lsubs") -;; «.code-all-lsubs» (to "code-all-lsubs") +;; «.first-class-videos» (to "first-class-videos") +;; «.video-tutorials» (to "video-tutorials") +;; «.strange-functions» (to "strange-functions") ;;; Commentary: @@ -328,393 +291,6 @@ of the videos and play them with mpv. Compare with -;;; _ __ -;;; __| | ___ / _|_ _ _ __ ___ -;;; / _` |/ _ \ |_| | | | '_ \/ __| -;;; | (_| | __/ _| |_| | | | \__ \ -;;; \__,_|\___|_| \__,_|_| |_|___/ -;;; -;; «first-class-videos» (to ".first-class-videos") -;; «video-tutorials» (to ".video-tutorials") -;; -;; This section contains one `defun' for each of one of the -;; first-class videos. See: -;; -;; (find-video-links-intro "9. First-class videos") -;; (find-1stclassvideos) -;; -;; If we defined them with `code-eevvideo' they wouldn't have -;; docstrings and `find-efunction' wouldn't be able to find their -;; definitions. Try: -;; -;; (find-efunctiondescr 'find-eev2019video) -;; (find-efunction 'find-eev2019video) - - - -;; «find-eev2019video» (to ".find-eev2019video") -;; Info: (find-1stclassvideo-links "eev2019") -;; Play: (find-eev2019video "0:00") -(defun find-eev2019video (&optional time &rest rest) - "Play one of the first-class videos of eev starting at TIME. -For more info on this particular video, run: - (find-1stclassvideo-links \"eev2019\")" - (interactive) - (find-1stclassvideo-video "eev2019" time)) - -;; «find-eev2020video» (to ".find-eev2020video") -;; Info: (find-1stclassvideo-links "eev2020") -;; Play: (find-eev2020video "0:00") -(defun find-eev2020video (&optional time &rest rest) - "Play one of the first-class videos of eev starting at TIME. -For more info on this particular video, run: - (find-1stclassvideo-links \"eev2020\")" - (interactive) - (find-1stclassvideo-video "eev2020" time)) - -;; «find-eev2021video» (to ".find-eev2021video") -;; Info: (find-1stclassvideo-links "eev2021") -;; Play: (find-eev2021video "0:00") -(defun find-eev2021video (&optional time &rest rest) - "Play one of the first-class videos of eev starting at TIME. -For more info on this particular video, run: - (find-1stclassvideo-links \"eev2021\")" - (interactive) - (find-1stclassvideo-video "eev2021" time)) - -;; «find-eev2021bvideo» (to ".find-eev2021bvideo") -;; Info: (find-1stclassvideo-links "eev2021b") -;; Play: (find-eev2021bvideo "0:00") -(defun find-eev2021bvideo (&optional time &rest rest) - "Play one of the first-class videos of eev starting at TIME. -For more info on this particular video, run: - (find-1stclassvideo-links \"eev2021b\")" - (interactive) - (find-1stclassvideo-video "eev2021b" time)) - -;; «find-eevnavvideo» (to ".find-eevnavvideo") -;; Info: (find-1stclassvideo-links "eevnav") -;; Play: (find-eevnavvideo "0:00") -(defun find-eevnavvideo (&optional time &rest rest) - "Play one of the first-class videos of eev starting at TIME. -For more info on this particular video, run: - (find-1stclassvideo-links \"eevnav\")" - (interactive) - (find-1stclassvideo-video "eevnav" time)) - -;; «find-eevtemplvideo» (to ".find-eevtemplvideo") -;; Info: (find-1stclassvideo-links "eevtempl") -;; Play: (find-eevtemplvideo "0:00") -(defun find-eevtemplvideo (&optional time &rest rest) - "Play one of the first-class videos of eev starting at TIME. -For more info on this particular video, run: - (find-1stclassvideo-links \"eevtempl\")" - (interactive) - (find-1stclassvideo-video "eevtempl" time)) - -;; «find-eevfherelvideo» (to ".find-eevfherelvideo") -;; Info: (find-1stclassvideo-links "eevfherel") -;; Play: (find-eevfherelvideo "0:00") -(defun find-eevfherelvideo (&optional time &rest rest) - "Play one of the first-class videos of eev starting at TIME. -For more info on this particular video, run: - (find-1stclassvideo-links \"eevfherel\")" - (interactive) - (find-1stclassvideo-video "eevfherel" time)) - -;; «find-eevtestblsvideo» (to ".find-eevtestblsvideo") -;; Info: (find-1stclassvideo-links "eevtestbls") -;; Play: (find-eevtestblsvideo "0:00") -(defun find-eevtestblsvideo (&optional time &rest rest) - "Play one of the first-class videos of eev starting at TIME. -For more info on this particular video, run: - (find-1stclassvideo-links \"eevtestbls\")" - (interactive) - (find-1stclassvideo-video "eevtestbls" time)) - -;; «find-eevvlinksvideo» (to ".find-eevvlinksvideo") -;; Info: (find-1stclassvideo-links "eevvlinks") -;; Play: (find-eevvlinksvideo "0:00") -(defun find-eevvlinksvideo (&optional time &rest rest) - "Play one of the first-class videos of eev starting at TIME. -For more info on this particular video, run: - (find-1stclassvideo-links \"eevvlinks\")" - (interactive) - (find-1stclassvideo-video "eevvlinks" time)) - -;; «find-oficina20210video» (to ".find-oficina20210video") -;; Info: (find-1stclassvideo-links "oficina20210") -;; Play: (find-oficina20210video "0:00") -(defun find-oficina20210video (&optional time &rest rest) - "Play one of the first-class videos of eev starting at TIME. -For more info on this particular video, run: - (find-1stclassvideo-links \"oficina20210\")" - (interactive) - (find-1stclassvideo-video "oficina20210" time)) - -;; «find-oficina2021avideo» (to ".find-oficina2021avideo") -;; Info: (find-1stclassvideo-links "oficina2021a") -;; Play: (find-oficina2021avideo "0:00") -(defun find-oficina2021avideo (&optional time &rest rest) - "Play one of the first-class videos of eev starting at TIME. -For more info on this particular video, run: - (find-1stclassvideo-links \"oficina2021a\")" - (interactive) - (find-1stclassvideo-video "oficina2021a" time)) - -;; «find-oficina2021bvideo» (to ".find-oficina2021bvideo") -;; Info: (find-1stclassvideo-links "oficina2021b") -;; Play: (find-oficina2021bvideo "0:00") -(defun find-oficina2021bvideo (&optional time &rest rest) - "Play one of the first-class videos of eev starting at TIME. -For more info on this particular video, run: - (find-1stclassvideo-links \"oficina2021b\")" - (interactive) - (find-1stclassvideo-video "oficina2021b" time)) - -;; «find-2021ssrvideo» (to ".find-2021ssrvideo") -;; Info: (find-1stclassvideo-links "2021ssr") -;; Play: (find-2021ssrvideo "0:00") -(defun find-2021ssrvideo (&optional time &rest rest) - "Play one of the first-class videos of eev starting at TIME. -For more info on this particular video, run: - (find-1stclassvideo-links \"2021ssr\")" - (interactive) - (find-1stclassvideo-video "2021ssr" time)) - -;; «find-2021workshop1video» (to ".find-2021workshop1video") -;; Info: (find-1stclassvideo-links "2021workshop1") -;; Play: (find-2021workshop1video "0:00") -(defun find-2021workshop1video (&optional time &rest rest) - "Play one of the first-class videos of eev starting at TIME. -For more info on this particular video, run: - (find-1stclassvideo-links \"2021workshop1\")" - (interactive) - (find-1stclassvideo-video "2021workshop1" time)) - -;; «find-2021workshop2video» (to ".find-2021workshop2video") -;; Info: (find-1stclassvideo-links "2021workshop2") -;; Play: (find-2021workshop2video "0:00") -(defun find-2021workshop2video (&optional time &rest rest) - "Play one of the first-class videos of eev starting at TIME. -For more info on this particular video, run: - (find-1stclassvideo-links \"2021workshop2\")" - (interactive) - (find-1stclassvideo-video "2021workshop2" time)) - -;; «find-2021workshop3video» (to ".find-2021workshop3video") -;; Info: (find-1stclassvideo-links "2021workshop3") -;; Play: (find-2021workshop3video "0:00") -(defun find-2021workshop3video (&optional time &rest rest) - "Play one of the first-class videos of eev starting at TIME. -For more info on this particular video, run: - (find-1stclassvideo-links \"2021workshop3\")" - (interactive) - (find-1stclassvideo-video "2021workshop3" time)) - -;; «find-2021workshop4video» (to ".find-2021workshop4video") -;; Info: (find-1stclassvideo-links "2021workshop4") -;; Play: (find-2021workshop4video "0:00") -(defun find-2021workshop4video (&optional time &rest rest) - "Play one of the first-class videos of eev starting at TIME. -For more info on this particular video, run: - (find-1stclassvideo-links \"2021workshop4\")" - (interactive) - (find-1stclassvideo-video "2021workshop4" time)) - -;; «find-2021workshop5video» (to ".find-2021workshop5video") -;; Info: (find-1stclassvideo-links "2021workshop5") -;; Play: (find-2021workshop5video "0:00") -(defun find-2021workshop5video (&optional time &rest rest) - "Play one of the first-class videos of eev starting at TIME. -For more info on this particular video, run: - (find-1stclassvideo-links \"2021workshop5\")" - (interactive) - (find-1stclassvideo-video "2021workshop5" time)) - -;; «find-2021workshop6video» (to ".find-2021workshop6video") -;; Info: (find-1stclassvideo-links "2021workshop6") -;; Play: (find-2021workshop6video "0:00") -(defun find-2021workshop6video (&optional time &rest rest) - "Play one of the first-class videos of eev starting at TIME. -For more info on this particular video, run: - (find-1stclassvideo-links \"2021workshop6\")" - (interactive) - (find-1stclassvideo-video "2021workshop6" time)) - -;; «find-2021orgfornonusersvideo» (to ".find-2021orgfornonusersvideo") -;; Info: (find-1stclassvideo-links "2021orgfornonusers") -;; Play: (find-2021orgfornonusersvideo "0:00") -(defun find-2021orgfornonusersvideo (&optional time &rest rest) - "Play one of the first-class videos of eev starting at TIME. -For more info on this particular video, run: - (find-1stclassvideo-links \"2021orgfornonusers\")" - (interactive) - (find-1stclassvideo-video "2021orgfornonusers" time)) - -;; «find-2021ffllvideo» (to ".find-2021ffllvideo") -;; Info: (find-1stclassvideo-links "2021ffll") -;; Play: (find-2021ffllvideo "0:00") -(defun find-2021ffllvideo (&optional time &rest rest) - "Play one of the first-class videos of eev starting at TIME. -For more info on this particular video, run: - (find-1stclassvideo-links \"2021ffll\")" - (interactive) - (find-1stclassvideo-video "2021ffll" time)) - -;; «find-2022eevmake0video» (to ".find-2022eevmake0video") -;; Info: (find-1stclassvideo-links "2022eevmake0") -;; Play: (find-2022eevmake0video "0:00") -(defun find-2022eevmake0video (&optional time &rest rest) - "Play one of the first-class videos of eev starting at TIME. -For more info on this particular video, run: - (find-1stclassvideo-links \"2022eevmake0\")" - (interactive) - (find-1stclassvideo-video "2022eevmake0" time)) - -;; «find-2022findeevanggvideo» (to ".find-2022findeevanggvideo") -;; Info: (find-1stclassvideo-links "2022findeevangg") -;; Play: (find-2022findeevanggvideo "0:00") -(defun find-2022findeevanggvideo (&optional time &rest rest) - "Play one of the first-class videos of eev starting at TIME. -For more info on this particular video, run: - (find-1stclassvideo-links \"2022findeevangg\")" - (interactive) - (find-1stclassvideo-video "2022findeevangg" time)) - -;; «find-2022findelispintrovideo» (to ".find-2022findelispintrovideo") -;; Info: (find-1stclassvideo-links "2022findelispintro") -;; Play: (find-2022findelispintrovideo "0:00") -(defun find-2022findelispintrovideo (&optional time &rest rest) - "Play one of the first-class videos of eev starting at TIME. -For more info on this particular video, run: - (find-1stclassvideo-links \"2022findelispintro\")" - (interactive) - (find-1stclassvideo-video "2022findelispintro" time)) - -;; «find-2022pict2eluavideo» (to ".find-2022pict2eluavideo") -;; Info: (find-1stclassvideo-links "2022pict2elua") -;; Play: (find-2022pict2eluavideo "0:00") -(defun find-2022pict2eluavideo (&optional time &rest rest) - "Play one of the first-class videos of eev starting at TIME. -For more info on this particular video, run: - (find-1stclassvideo-links \"2022pict2elua\")" - (interactive) - (find-1stclassvideo-video "2022pict2elua" time)) - -;; «find-2022eevwconfigpt1video» (to ".find-2022eevwconfigpt1video") -;; Info: (find-1stclassvideo-links "2022eevwconfigpt1") -;; Play: (find-2022eevwconfigpt1video "0:00") -(defun find-2022eevwconfigpt1video (&optional time &rest rest) - "Play one of the first-class videos of eev starting at TIME. -For more info on this particular video, run: - (find-1stclassvideo-links \"2022eevwconfigpt1\")" - (interactive) - (find-1stclassvideo-video "2022eevwconfigpt1" time)) - -;; «find-2022eevwconfigpt2video» (to ".find-2022eevwconfigpt2video") -;; Info: (find-1stclassvideo-links "2022eevwconfigpt2") -;; Play: (find-2022eevwconfigpt2video "0:00") -(defun find-2022eevwconfigpt2video (&optional time &rest rest) - "Play one of the first-class videos of eev starting at TIME. -For more info on this particular video, run: - (find-1stclassvideo-links \"2022eevwconfigpt2\")" - (interactive) - (find-1stclassvideo-video "2022eevwconfigpt2" time)) - -;; «find-2022eevwconfigvideo» (to ".find-2022eevwconfigvideo") -;; Info: (find-1stclassvideo-links "2022eevwconfig") -;; Play: (find-2022eevwconfigvideo "0:00") -(defun find-2022eevwconfigvideo (&optional time &rest rest) - "Play one of the first-class videos of eev starting at TIME. -For more info on this particular video, run: - (find-1stclassvideo-links \"2022eevwconfig\")" - (interactive) - (find-1stclassvideo-video "2022eevwconfig" time)) - -;; «find-2022yttranscriptvideo» (to ".find-2022yttranscriptvideo") -;; Info: (find-1stclassvideo-links "2022yttranscript") -;; Play: (find-2022yttranscriptvideo "0:00") -(defun find-2022yttranscriptvideo (&optional time &rest rest) - "Play one of the first-class videos of eev starting at TIME. -For more info on this particular video, run: - (find-1stclassvideo-links \"2022yttranscript\")" - (interactive) - (find-1stclassvideo-video "2022yttranscript" time)) - -;; «find-2022tikzvideo» (to ".find-2022tikzvideo") -;; Info: (find-1stclassvideo-links "2022tikz") -;; Play: (find-2022tikzvideo "0:00") -(defun find-2022tikzvideo (&optional time &rest rest) - "Play one of the first-class videos of eev starting at TIME. -For more info on this particular video, run: - (find-1stclassvideo-links \"2022tikz\")" - (interactive) - (find-1stclassvideo-video "2022tikz" time)) - -;; «find-eev2022klavideo» (to ".find-eev2022klavideo") -;; Info: (find-1stclassvideo-links "eev2022kla") -;; Play: (find-eev2022klavideo "0:00") -(defun find-eev2022klavideo (&optional time &rest rest) - "Play one of the first-class videos of eev starting at TIME. -For more info on this particular video, run: - (find-1stclassvideo-links \"eev2022kla\")" - (interactive) - (find-1stclassvideo-video "eev2022kla" time)) - -;; «find-eev2022pyvideo» (to ".find-eev2022pyvideo") -;; Info: (find-1stclassvideo-links "eev2022py") -;; Play: (find-eev2022pyvideo "0:00") -(defun find-eev2022pyvideo (&optional time &rest rest) - "Play one of the first-class videos of eev starting at TIME. -For more info on this particular video, run: - (find-1stclassvideo-links \"eev2022py\")" - (interactive) - (find-1stclassvideo-video "eev2022py" time)) - -;; «find-eev2023replsvideo» (to ".find-eev2023replsvideo") -;; Info: (find-1stclassvideo-links "eev2023repls") -;; Play: (find-eev2023replsvideo "0:00") -(defun find-eev2023replsvideo (&optional time &rest rest) - "Play one of the first-class videos of eev starting at TIME. -For more info on this particular video, run: - (find-1stclassvideo-links \"eev2023repls\")" - (interactive) - (find-1stclassvideo-video "eev2023repls" time)) - -;; «find-eev2023replsbvideo» (to ".find-eev2023replsbvideo") -;; Info: (find-1stclassvideo-links "eev2023replsb") -;; Play: (find-eev2023replsbvideo "0:00") -(defun find-eev2023replsbvideo (&optional time &rest rest) - "Play one of the first-class videos of eev starting at TIME. -For more info on this particular video, run: - (find-1stclassvideo-links \"eev2023replsb\")" - (interactive) - (find-1stclassvideo-video "eev2023replsb" time)) - -;; «find-2024gitvideo» (to ".find-2024gitvideo") -;; Info: (find-1stclassvideo-links "2024git") -;; Play: (find-2024gitvideo "0:00") -(defun find-2024gitvideo (&optional time &rest rest) - "Play one of the first-class videos of eev starting at TIME. -For more info on this particular video, run: - (find-1stclassvideo-links \"2024git\")" - (interactive) - (find-1stclassvideo-video "2024git" time)) - -;; «find-2024luasovideo» (to ".find-2024luasovideo") -;; Info: (find-1stclassvideo-links "2024luaso") -;; Play: (find-2024luasovideo "0:00") -(defun find-2024luasovideo (&optional time &rest rest) - "Play one of the first-class videos of eev starting at TIME. -For more info on this particular video, run: - (find-1stclassvideo-links \"2024luaso\")" - (interactive) - (find-1stclassvideo-video "2024luaso" time)) - - - - ;;; __ __ _ __ ;;; | \/ | ___ _ __ ___ (_)_ __ / _| ___ ;;; | |\/| |/ _ \| '__/ _ \ | | '_ \| |_ / _ \ @@ -1293,8 +869,6 @@ For more info on this particular video, run: - - ;;; _ _ _ ;;; ___ ___ __| | ___ ___ _____ ____ _(_) __| | ___ ___ ;;; / __/ _ \ / _` |/ _ \_____ / _ \/ _ \ \ / /\ \ / / |/ _` |/ _ \/ _ \ @@ -1405,58 +979,52 @@ For more info on this particular video, run: -;;; _ _ _ -;;; ___ ___ __| | ___ | |___ _ _| |__ ___ -;;; / __/ _ \ / _` |/ _ \_____| / __| | | | '_ \/ __| -;;; | (_| (_) | (_| | __/_____| \__ \ |_| | |_) \__ \ -;;; \___\___/ \__,_|\___| |_|___/\__,_|_.__/|___/ -;;; -;; «code-lsubs» (to ".code-lsubs") -;; Tests: (find-eppp (ee-all-cs-with-subs)) -;; (find-code-lsubs "eev2023repls") -;; (find-code-all-lsubs '("eev2019" "eevnav")) -;; (find-code-all-lsubs) +;;; _ __ +;;; __| | ___ / _|_ _ _ __ ___ +;;; / _` |/ _ \ |_| | | | '_ \/ __| +;;; | (_| | __/ _| |_| | | | \__ \ +;;; \__,_|\___|_| \__,_|_| |_|___/ +;;; +;; «first-class-videos» (to ".first-class-videos") +;; «video-tutorials» (to ".video-tutorials") ;; -(defun ee-all-cs-with-subs () - (cl-loop for entry in ee-1stclassvideos-info - if (ee-1stclassvideos-field (car entry) :subs) - collect (car entry))) - -;; Skels: (find-code-xxx-links "lsubs" "c" "") -;; (find-code-xxx-links "all-lsubs" "cs" "") -;; -(defun code-lsubs (c) - (eval (ee-read (ee-code-lsubs c)))) -(defun find-code-lsubs (c) - (find-estring-elisp (ee-code-lsubs c))) -(defun ee-code-lsubs (c) - (ee-template0 "\ -;; (find-code-lsubs \"{c}\") -;; (code-lsubs \"{c}\") +;; This section contains one `defun' for each of one of the +;; first-class videos. See: ;; -;; Tests: (find-{c}hsubs) -;; (find-{c}lsubs) -;; (find-{c}lsubs \"00:00\") -;; (find-1stclassvideo-links \"{c}\") +;; (find-video-links-intro "9. First-class videos") +;; (find-1stclassvideos) ;; -(defun find-{c}lsubs (&rest pos-spec-list) - (apply 'find-1stclassvideolsubs \"{c}\" pos-spec-list)) -(defun find-{c}hsubs (&rest pos-spec-list) - (apply 'find-1stclassvideohsubs \"{c}\" pos-spec-list)) -")) +;; If we defined them with `code-eevvideo' they wouldn't have +;; docstrings and `find-efunction' wouldn't be able to find their +;; definitions. Try: +;; +;; (find-efunctiondescr 'find-eev2019video) +;; (find-efunction 'find-eev2019video) + + + + + + +;;; ____ _ +;;; / ___|| |_ _ __ __ _ _ __ __ _ ___ +;;; \___ \| __| '__/ _` | '_ \ / _` |/ _ \ +;;; ___) | |_| | | (_| | | | | (_| | __/_ _ _ +;;; |____/ \__|_| \__,_|_| |_|\__, |\___(_|_|_) +;;; |___/ +;; +;; «strange-functions» (to ".strange-functions") +;; The `(code-1stclassvideos)' below defines lots of "strange +;; functions" with names like `find-{c}video', `find-{c}hsubs', and +;; `find-{c}lsubs'. The concept of "strange function" is explained +;; here: +;; (find-strange-functions-intro) + +;; See: (find-eev "eev-tlinks.el" "code-1stclassvideos") +;; (find-code-1stclassvideos) + (code-1stclassvideos) + -(defun code-all-lsubs (&optional cs) - (eval (ee-read (ee-code-all-lsubs cs)))) -(defun find-code-all-lsubs (&optional cs) - (find-estring-elisp (ee-code-all-lsubs cs))) -(defun ee-code-all-lsubs (&optional cs) - (mapconcat 'ee-code-lsubs (or cs (ee-all-cs-with-subs)) "\n\n")) - -;; «code-all-lsubs» (to ".code-all-lsubs") -;; This defines lots of functions with names like `find-<c>lsubs' and -;; `find-<c>hsubs'. -;; Try: (find-code-all-lsubs) - (code-all-lsubs)