branch: externals/eev commit 81c4615a6b12dff0ede29d38f2f2df86214ac2f3 Author: Eduardo Ochs <eduardoo...@gmail.com> Commit: Eduardo Ochs <eduardoo...@gmail.com>
Rewrote (find-eev-exercises-intro). --- ChangeLog | 21 ++++ VERSION | 4 +- eev-elinks.el | 7 +- eev-intro.el | 293 +++++++++++++++++++++++++++++++++++++++++++++--------- eev-tlinks.el | 62 +++++++----- eev-videolinks.el | 52 ++++++++-- eev.el | 2 +- 7 files changed, 360 insertions(+), 81 deletions(-) diff --git a/ChangeLog b/ChangeLog index 125b053..63e6bee 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,24 @@ +2021-12-01 Eduardo Ochs <eduardoo...@gmail.com> + + * eev-intro.el (find-eev-exercises-intro): rewritten. + +2021-11-28 Eduardo Ochs <eduardoo...@gmail.com> + + * eev-elinks.el (ee-1stclassvideo-around-point-ask): new function. + + * eev-tlinks.el (find-1stclassvideo-links): use + `ee-1stclassvideo-around-point-ask'. + + * eev-videolinks.el (ee-1stclassvideos-mp4stem) + (ee-1stclassvideos-hash): new functions. + +2021-11-27 Eduardo Ochs <eduardoo...@gmail.com> + + * eev-videolinks.el (ee-1stclassvideos-field): new function. + + * eev-tlinks.el (find-1stclassvideo-links): use + `ee-1stclassvideos-field'. + 2021-11-26 Eduardo Ochs <eduardoo...@gmail.com> * eev-tlinks.el (ee-youtubedl-command): added another suggestion diff --git a/VERSION b/VERSION index 6fb6b05..fc366eb 100644 --- a/VERSION +++ b/VERSION @@ -1,2 +1,2 @@ -Sat Nov 27 07:44:42 GMT 2021 -Sat Nov 27 04:44:42 -03 2021 +Wed Dec 1 06:27:08 GMT 2021 +Wed Dec 1 03:27:08 -03 2021 diff --git a/eev-elinks.el b/eev-elinks.el index 848d066..f1080d7 100644 --- a/eev-elinks.el +++ b/eev-elinks.el @@ -19,7 +19,7 @@ ;; ;; Author: Eduardo Ochs <eduardoo...@gmail.com> ;; Maintainer: Eduardo Ochs <eduardoo...@gmail.com> -;; Version: 20211104 +;; Version: 20211128 ;; Keywords: e-scripts ;; ;; Latest version: <http://angg.twu.net/eev-current/eev-elinks.el> @@ -149,6 +149,11 @@ This function is not very smart - it doesn't understand section names." (read-string (or prompt "Manpage: ") (ee-manpagename-around-point))) +(defun ee-1stclassvideo-around-point-ask (&optional prompt) +"Ask for the name of a first-class video; the default is a string around point." + (let ((str (read-string (or prompt "Stem (\"c\") of the video: ") + (ee-stuff-around-point "A-Za-z0-9")))) + (replace-regexp-in-string "video$" "" str))) diff --git a/eev-intro.el b/eev-intro.el index dc60b45..2f173c4 100644 --- a/eev-intro.el +++ b/eev-intro.el @@ -19,7 +19,7 @@ ;; ;; Author: Eduardo Ochs <eduardoo...@gmail.com> ;; Maintainer: Eduardo Ochs <eduardoo...@gmail.com> -;; Version: 20211125 +;; Version: 20211130 ;; Keywords: e-scripts ;; ;; Latest version: <http://angg.twu.net/eev-current/eev-intro.el> @@ -10737,6 +10737,12 @@ at one example in details. Try: All these sexps \"work\" - they point to meaningful places. +The data about these first-class videos is kept in the variable +`ee-1stclassvideos-info', that is defined here: + + (find-eev \"eev-videolinks.el\" \"ee-1stclassvideos-info\") + + 10. Second-class videos @@ -12517,6 +12523,13 @@ because when it was created it pointed to the commit with message \\ / A +Here's a video showing the script above in action: + + http://angg.twu.net/eev-videos/2020-doubt-about-merging.mp4 + (code-eevvideo \"merg\" \"2020-doubt-about-merging\") + (find-mergvideo \"0:00\") + (find-mergvideo \"0:20\") + NEXT STEPS: explain how to use git merge both from the command line and from magit; explain HEAD, master, and tags. Point to man pages in man and text format and to sections in Scott Chacon's @@ -13298,55 +13311,251 @@ It is meant as both a tutorial and a sandbox. - -0. Introduction -=============== -This is a set of exercises that I am preparing for this series of -workshops: +This is a set of exercises that I am preparing for this workshop: http://angg.twu.net/2021-workshop.html - http://angg.twu.net/2021-oficina.html -At this moment - 2021nov14 - they are in a very draftish stage -and they haven't yet been tested by people who are learning eev. +THIS IS A WORK AND PROGRESS AND CURRENTLY A MESS. -I will suppose that the people trying to do these exercises know -the material in these sections of the two most basic tutorials, - (find-eev-quick-intro) - (find-eev-quick-intro \"1. Installing eev\") - (find-eev-quick-intro \"2. Evaluating Lisp\") - (find-eev-quick-intro \"3. Elisp hyperlinks\") - (find-eev-quick-intro \"4. Creating Elisp Hyperlinks\") - (find-eev-quick-intro \"4.1. `find-here-links'\") - (find-eev-quick-intro \"4.2. `find-ekey-links' and friends\") - (find-eev-quick-intro \"5. Links to Emacs documentation\") - (find-eev-quick-intro \"5.1. Navigating the Emacs manuals\") - (find-eev-quick-intro \"5.2. Cutting and pasting\") - (find-windows-beginner-intro) - (find-windows-beginner-intro \"1. Download and install Emacs\") - (find-windows-beginner-intro \"2. Key sequences and how to quit\") - (find-windows-beginner-intro \"3. Using M-x and installing eev\") - (find-windows-beginner-intro \"4. Understanding buffers and the mode line\") -and that they have seen the \"installation and navigation\" video, -especially this part of it, +0. Prerequisites +================ +I will suppose: + + a. that the people doing the workshop will have Emacs 27 or + 28 (pretest) installed, + + b. that they have watched the \"installation and navigation\" + video and tried everything on it, especially this part: + + (find-eevnavvideo \"6:28\" \"M-j: you can forget practically everything...\") + (find-eevnavvideo \"6:41\" \"if you type just M-j\") + (find-eevnavvideo \"6:48\" \"has a header that is beginner-friendly\") + + The beginner-friendly header generated by `M-j' has changed + since I recorded that video, and now it shows these three + ways of opening the file where we will put our notes instead + of showing just the first one: + + M-1 M-j runs: (find-fline \"~/TODO\") + M-2 M-1 M-j shows the file ~/TODO in the right window + M-3 M-1 M-j opens ~/TODO in the right window + + I will suppose that people have tried `M-21j' and `M-31j' + and understood what they do. + + c. I will also suppose that everyone is running Emacs \"in a + way in which the standard keys should work\". For example, + Doom Emacs redefines many keys, including M-1, M-2, etc, + that we will use a lot, so Doom Emacs is \"bad\". I think + that the modes that make Emacs use vi-like keybindings will + also interfere with keys that we will use, so they're + \"bad\" too. Besides that some window managers capture keys + combinations like Alt-Shift-<letter>, so if you use a window + manager like that please install another one that captures + few keys and learn how switch between your favorite + (\"bad\") WM and the one that you will use in the workshop. + Also, one person that attended another workshop that I gave + was trying to use Emacs in a terminal on a Raspberry Pi 0... + she said that many things didn't work but gave few details, + so I'll considered that _for the purposes of this workshop_ + terminal Emacs is \"bad\" and GUI Emacs is \"good\". + + d. In some parts of the workshop I will suppose that people can + switch between an Emacs window and a browser window; in + particular, I will suppose that they can follow links to + videos, and for beginners this is much easier to do on a + browser. For example, you can \"follow\" the link + + (find-eev2020video \"2:53\" \"pos-spec-lists\") + + using a browser by opening the HTMLized version of this + intro using this URL, + + http://angg.twu.net/eev-intros/find-eev-exercises-intro.html + + locating the link to the video there, and clicking on the + link in its timestamp. + + e. I will _sort of_ suppose that the people on the workshop + have read these sections of two basic tutorials and + have tried to do the exercises in them: + + (find-eev-quick-intro) + (find-eev-quick-intro \"1. Installing eev\") + (find-eev-quick-intro \"2. Evaluating Lisp\") + (find-eev-quick-intro \"3. Elisp hyperlinks\") + (find-eev-quick-intro \"4. Creating Elisp Hyperlinks\") + (find-eev-quick-intro \"4.1. `find-here-links'\") + (find-eev-quick-intro \"4.2. `find-ekey-links' and friends\") + (find-eev-quick-intro \"5. Links to Emacs documentation\") + (find-eev-quick-intro \"5.1. Navigating the Emacs manuals\") + (find-eev-quick-intro \"5.2. Cutting and pasting\") + (find-windows-beginner-intro) + (find-windows-beginner-intro \"1. Download and install Emacs\") + (find-windows-beginner-intro \"2. Key sequences and how to quit\") + (find-windows-beginner-intro \"3. Using M-x and installing eev\") + (find-windows-beginner-intro \"4. Understanding buffers and the mode line\") + (find-refining-intro) + (find-refining-intro \"1. Pos-spec-lists\") + + +..and just that. The previous workshop that I gave required +installing external programs, but this one will not be like that. +For more info on that previous workshop, see: + + http://angg.twu.net/2021-workshop.html#november + + + + +1. The base cases +================= + +1.1. The base case 1 +-------------------- +We are going to start by something that we will refer to as the +\"base case 1\", and we will treat the other cases as variations +of the base case 1. Here it is: + + You realize that this buffer is interesting and you want to + save a link to it to your notes. Let's refer to this buffer as + the \"target buffer\", as the link will point to it. You run + this, + + (eek \"M-h M-3 ;; find-here-links-3\") + + and you get a 3-window configuration like this one: + + _______________ _____________________ ________________ + | | | | | | | + | | | | elinks | | | + | | | | buffer | | | + | target | M-h M-3 | target |__________| M-h M-1 | target | + | buffer | ------> | buffer | | ------> | buffer | + | | | | notes | | | + | | | | buffer | | | + |_______________| |__________|__________| |________________| + + you select the line of the \"elinks buffer\" that contains an + elisp hyperlink that points to the \"target buffer\", you copy + that line your \"notes buffer\" - that contains the file ~/TODO + - and you run this + + (eek \"M-h M-1 ;; find-here-links-1\") + + to go back to the original window configuration in which only + the target buffer was being shown. + +What you did can be summarized as: + + create (the elisp hyperlinks buffer) + select (the correct elisp hyperlink) + copy (it to the notes buffer) + go back (to the previous window configuration) + +or: + + create / select / copy / go back + + + + +1.2. The base case 2 +-------------------- +The \"base case 2\" is similar to the base case 1, but in the +base case 2 we will create a link with a pos-spec-list containing +the name of this section. Pos-spec-lists are explained here: + + (find-eev2020video \"2:53\" \"pos-spec-lists\") + +The sequence of steps in the base case 2 will include two new +steps: + + save (the name of this section to the kill ring) <- new! + create (the elisp hyperlinks buffer) + select (the correct elisp hyperlink) + refine (add the name of the section to the pos-spec-list) <- new! + copy (it to the notes buffer) + go back (to the previous window configuration) + +so: + + save / create / select / refine / copy / go back + +instead of: + + create / select / copy / go back + +The diagram will be this one, + + _______________ _____________________ ________________ + | | | | | | | + | | | | elinks | | | + | | | | buffer | | | + | | | | M-hy :: | | | + | target | M-h M-3 | target |______::__| M-h M-1 | target | + | buffer | ------> | buffer | \\/ | ------> | buffer | + | | | | | | buffer | + | | | | notes | | | + | | | | buffer | | | + |_______________| |__________|__________| |________________| + +The dotted arrow indicates a copy and paste from the elinks +buffer to the notes buffer, and the `M-hy' at the left of the +dotted arrow indicated the we will have to type `M-hy' - that is +an abbreviation for `M-h M-y' at some point; the placement of the +`M-hy' suggests that it is typed before the cut and paste. + + (find-refining-intro \"2. Refining hyperlinks\") + (find-refining-intro \"2. Refining hyperlinks\" \"M-h M-y\") + - (find-eevnavvideo \"6:28\" \"M-j: you can forget practically everything...\") - (find-eevnavvideo \"6:41\" \"if you type just M-j\") - (find-eevnavvideo \"6:48\" \"has a header that is beginner-friendly\") -_and_ that they have tried and understood the lines that I've -added to `M-j' after making that video - these ones: - M-1 M-j runs: (find-fline \"~/TODO\") - M-2 M-1 M-j shows the file ~/TODO in the right window - M-3 M-1 M-j opens ~/TODO in the right window -Most of the exercises in this \"intro\" will be about creating -hyperlinks and saving them to your notes - i.e., to your ~/TODO. + (find-here-links-intro \"4. `find-here-links-3'\") + (find-here-links-intro \"5. `find-here-links-1'\") + (find-here-links-intro \"5. `find-here-links-1'\" \"eevfherel\") + + +2.1. Variants of `save' +----------------------- + +2.2. Variants of `create' +------------------------- + + (eek \"M-h M-k M-j ;; eejump\") + M-2 M-j runs: (find-emacs-keys-intro) + M-5 M-j runs: (find-eev-quick-intro) + (eek \"M-h M-k M-h M-k ;; find-ekey-links\") + (eek \"M-h M-k M-h M-f ;; find-efunction-links\") + (eek \"M-h M-k M-h M-h ;; find-here-links\") + (eek \"M-h M-k M-h M-3 ;; find-here-links-3\") + + +2.3. How to learn to `select' +----------------------------- + +2.4. Variants of `refine' +------------------------- + (find-refining-intro \"2. Refining hyperlinks\") + (find-refining-intro \"2. Refining hyperlinks\" \"M-h M-y\") + (find-anchors-intro \"2. Shrinking\") + (find-anchors-intro \"2. Shrinking\" \"`M-h M--'\") + +2.5. Variants of `copy' +----------------------- + (find-here-links-intro \"6. Copying the hyperlink\" \"M-h M-w\") + +2.6. Variants of `go back' +-------------------------- + (eek \"M-h M-k M-h M-1 ;; find-here-links-1\") + (find-eval-intro \"5. Going back\" \"`M-K' instead of `M-k'\") + 1. Saving interesting links =========================== @@ -13360,14 +13569,6 @@ easier to learn that if we split it into these tasks: d. undestand what each link does (with M-h M-f) e. recognize which links are interesting - [TODO: translate and expand:] - - 4. ir pro tutorial sobre o M-h M-3 - 5. copiar um dos links pro vídeo - 6. ir pro código fonte - 7. copiar o link pro código fonte - - 2. Some abbreviations ===================== diff --git a/eev-tlinks.el b/eev-tlinks.el index a0fc985..c46716f 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: 20211126 +;; Version: 20211201 ;; Keywords: e-scripts ;; ;; Latest version: <http://angg.twu.net/eev-current/eev-tlinks.el> @@ -2698,47 +2698,61 @@ This function is used by `ee-0x0-upload-region'." ;; «find-1stclassvideo-links» (to ".find-1stclassvideo-links") -;; Skel: (find-find-links-links-new "eevvideo-1stclass" "c" "") +;; Skel: (find-find-links-links-new "1stclassvideo" "c" "") +;; Skel: (find-find-links-links-new "1stclassvideo" "c" "title mp4 yp page lang") ;; See: (find-eev "eev-videolinks.el" "first-class-videos") ;; (find-eev "eev-videolinks.el" "second-class-videos") ;; Tests: (find-1stclassvideo-links "eev2019") ;; (find-1stclassvideo-links "eev2020") ;; (defun find-1stclassvideo-links (&optional c &rest pos-spec-list) -"Visit a temporary buffer containing hyperlinks for a first-class video." - (interactive) + "Visit a temporary buffer containing hyperlinks for eevvideo-1stclass." + (interactive (list (ee-1stclassvideo-around-point-ask))) (setq c (or c "{c}")) - (apply - 'find-elinks-elisp - `((find-1stclassvideo-links ,c ,@pos-spec-list) - ;; Convention: the first sexp always regenerates the buffer. - (find-efunction 'find-1stclassvideo-links) - "" - ,(ee-template0 "\ + (let* ((title (ee-1stclassvideos-field c :title)) + (mp4 (ee-1stclassvideos-field c :mp4)) + (yt (ee-1stclassvideos-field c :yt)) + (page (ee-1stclassvideos-field c :page)) + (lang (ee-1stclassvideos-field c :lang)) + (mp4stem (ee-1stclassvideos-mp4stem c)) + (hash (ee-1stclassvideos-hash c))) + (apply + 'find-elinks + `((find-1stclassvideo-links ,c ,@pos-spec-list) + ;; Convention: the first sexp always regenerates the buffer. + (find-efunction 'find-1stclassvideo-links) + "" + ,(ee-template0 "\ +;; Title: {title} +;; MP4: {mp4} +;; YT: {yt} +;; Page: {page} +;; Info: (find-eev \"eev-videolinks.el\" \"{c}\") +;; (find-1stclassvideo-links \"{c}\") +;; +;; Index: http://angg.twu.net/.emacs.videos.html#{c} +;; (find-angg \".emacs.videos\" \"{c}\") + +;; See: +;; (find-eev \"eev-videolinks.el\" \"first-class-videos\") +;; (find-eev \"eev-videolinks.el\" \"second-class-videos\") + ;; Definition of the function: ;; (find-eev \"eev-videolinks.el\" \"first-class-videos\") ;; (find-eev \"eev-videolinks.el\" \"find-{c}video\") -;; (find-efunction 'find-{c}video) +;; (find-efunction 'find-{c}video) ;; Play: ;; (find-{c}video \"0:00\") -;; Index with time marks: -;; (find-angg \".emacs.videos\" \"{c}\") -;; http://angg.twu.net/.emacs.videos.html#{c} - -;; Places with more info about this video: -;; (find-eev \"eev-videolinks.el\" \"{c}\") +;; Other places with info about this video: ;; (find-angg \".emacs.templates\" \"eev-videos-data\" \"{c}\") ;; http://angg.twu.net/.emacs.templates.html#eev-videos-data ;; (find-videos-intro \"1. Some videos\" \"{c}\") - -;; See: -;; (find-eev \"eev-videolinks.el\" \"first-class-videos\") -;; (find-eev \"eev-videolinks.el\" \"second-class-videos\") ") - ) - pos-spec-list)) + ) + pos-spec-list))) + diff --git a/eev-videolinks.el b/eev-videolinks.el index 8f02c61..a8e2356 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: 20211109 +;; Version: 20211127 ;; Keywords: e-scripts ;; ;; Latest version: <http://angg.twu.net/eev-current/eev-videolinks.el> @@ -48,16 +48,18 @@ ;; «.find-eevtestblsvideo» (to "find-eevtestblsvideo") ;; «.find-eevvlinksvideo» (to "find-eevvlinksvideo") ;; «.more-info» (to "more-info") +;; «.ee-1stclassvideos-info» (to "ee-1stclassvideos-info") ;; «.eev2019» (to "eev2019") ;; «.eev2020» (to "eev2020") ;; «.eev2021» (to "eev2021") ;; «.eevnav» (to "eevnav") ;; «.eevtempl» (to "eevtempl") -;; «.fherel» (to "fherel") +;; «.eevfherel» (to "eevfherel") ;; «.eevtestbls» (to "eevtestbls") ;; «.eevvlinks» (to "eevvlinks") ;; «.oficina2021a» (to "oficina2021a") ;; «.oficina2021b» (to "oficina2021b") +;; «.ee-1stclassvideos-field» (to "ee-1stclassvideos-field") ;; «.second-class-videos» (to "second-class-videos") ;; «.code-eevvideo» (to "code-eevvideo") @@ -411,6 +413,7 @@ and: (find-video-links-intro \"7. `find-eev-video'\") ;;; |_| |_|\___/|_| \___| |_|_| |_|_| \___/ ;;; ;; «more-info» (to ".more-info") +;; «ee-1stclassvideos-info» (to ".ee-1stclassvideos-info") ;; More info on the first-class videos, in a format that is easy to ;; access from Lisp. I am just starting to play with this, and the ;; functions that transform the data in this variable into other @@ -436,7 +439,14 @@ and: (find-video-links-intro \"7. `find-eev-video'\") ("eev2021" :title "Test blocks" :mp4 "http://angg.twu.net/eev-videos/emacsconf2021.mp4" - ;; :yt "(Not yet)" + :yt "http://www.youtube.com/watch?v=qM0Luz78qGw" + :page "http://angg.twu.net/emacsconf2021.html") + ;; + ;; «eev2021b» (to ".eev2021b") + ("eev2021b" + :title "Test blocks in Dednat6" + :mp4 "http://angg.twu.net/eev-videos/emacsconf2021-dednat6.mp4" + :yt "http://www.youtube.com/watch?v=QUMo7vgkHJI" :page "http://angg.twu.net/emacsconf2021.html") ;; ;; «eevnav» (to ".eevnav") @@ -453,8 +463,8 @@ and: (find-video-links-intro \"7. `find-eev-video'\") :yt "http://www.youtube.com/watch?v=91-9YfRPsuk" :page "http://angg.twu.net/2020-some-template-based.html") ;; - ;; «fherel» (to ".fherel") - ("fherel" + ;; «eevfherel» (to ".eevfherel") + ("eevfherel" :title "How to create hyperlinks to \"here\" with `find-here-links'" :mp4 "http://angg.twu.net/eev-videos/2020-find-here-links.mp4" :yt "http://www.youtube.com/watch?v=8jtiBlaDor4" @@ -462,7 +472,7 @@ and: (find-video-links-intro \"7. `find-eev-video'\") ;; ;; «eevtestbls» (to ".eevtestbls") ("eevtestbls" - :title "Using test blocks in eev" + :title "Using test blocks in eev (jan/2021)" :mp4 "http://angg.twu.net/eev-videos/2021-test-blocks.mp4" :yt "http://www.youtube.com/watch?v=fpsF_M55W4o" :page "http://angg.twu.net/2021-test-blocks.html") @@ -487,7 +497,7 @@ and: (find-video-links-intro \"7. `find-eev-video'\") :lang "portuguese") ;; ;; «oficina2021b» (to ".oficina2021b") - (oficina2021b + ("oficina2021b" :title "Exercícios de criar e guardar links (1)" :mp4 "http://angg.twu.net/eev-videos/2021-oficina-2.mp4" :yt "https://www.youtube.com/watch?v=XbuDnkfizYs" @@ -497,6 +507,34 @@ and: (find-video-links-intro \"7. `find-eev-video'\") )) +;; «ee-1stclassvideos-field» (to ".ee-1stclassvideos-field") +;; +;; (find-eppp ee-1stclassvideos-info) +;; (assoc "eev2021" ee-1stclassvideos-info) +;; (cdr (assoc "eev2021" ee-1stclassvideos-info)) +;; (plist-get (cdr (assoc "eev2021" ee-1stclassvideos-info)) :page) +;; (plist-get (cdr (assoc "foo" ee-1stclassvideos-info)) :page) +;; (ee-1stclassvideos-field "eev2021" :page) +;; (ee-1stclassvideos-field "eev2021" :mp4) +;; (ee-1stclassvideos-field "eev2021" :yt) +;; (ee-1stclassvideos-mp4stem "eev2021") +;; (ee-1stclassvideos-hash "eev2021") +;; (find-eev "eev-videolinks.el" "more-info") +;; +(defun ee-1stclassvideos-field (c &optional field) + (plist-get (cdr (assoc c ee-1stclassvideos-info)) field)) + +(defun ee-1stclassvideos-mp4stem (c) + (let ((mp4 (ee-1stclassvideos-field c :mp4))) + (replace-regexp-in-string "^.*/\\([^/]*\\)\\.mp4$" "\\1" mp4))) + +(defun ee-1stclassvideos-hash (c) + (let ((yt (ee-1stclassvideos-field c :yt))) + (replace-regexp-in-string "^.*=\\([^=]*\\)$" "\\1" yt))) + + + + ;;; _ _ _ diff --git a/eev.el b/eev.el index b044a9e..0c4f43c 100644 --- a/eev.el +++ b/eev.el @@ -6,7 +6,7 @@ ;; Package-Requires: ((emacs "24.4")) ;; Keywords: lisp e-scripts ;; URL: http://angg.twu.net/#eev -;; Version: 20211127 +;; Version: 20211201 ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by