branch: externals/eev commit c5930dbd4eae192ee81036e284312a2b20ba7f2b Author: Eduardo Ochs <eduardoo...@gmail.com> Commit: Eduardo Ochs <eduardoo...@gmail.com>
Cleaned up eev-brxxx.el a bit. --- ChangeLog | 25 ++++++ VERSION | 4 +- eev-audiovideo.el | 24 ++++-- eev-brxxx.el | 56 ++++++++----- eev-intro.el | 238 +++++++++++++++++++++++++++++++----------------------- eev-pdflike.el | 62 ++++++++------ eev-template0.el | 14 +++- 7 files changed, 269 insertions(+), 154 deletions(-) diff --git a/ChangeLog b/ChangeLog index a831470..2f6892b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,28 @@ +2021-02-08 Eduardo Ochs <eduardoo...@gmail.com> + + * eev-brxxx.el (ee-code-brurl-:remote, ee-code-brurl-:local) + (ee-code-brfile-:local): commented out the `(setq + browse-url-browser-function ...)'s in the generated code - they + are not needed in eev anymore and people who use `browse-url' find + them annoying. + (ee-code-brurl, ee-code-brfile): added help links to the generated + code. + + * eev-intro.el (find-eev-intro): promoted `(find-videos-intro)' to + the list of basic intros. + (find-eev-quick-intro): fixed a typo in the section "1. Installing + eev": the "eev-" in `M-x eev-beginner' was missing. + +2021-02-03 Eduardo Ochs <eduardoo...@gmail.com> + + * eev-template0.el (ee-template00-re): new variable. + (ee-template00): use `ee-template00-re'. + +2021-01-24 Eduardo Ochs <eduardoo...@gmail.com> + + * eev-intro.el (find-refining-intro): rewrote the section "5. + Pointing to anchors". + 2021-01-23 Eduardo Ochs <eduardoo...@gmail.com> * eev-intro.el (find-eepitch-intro): new section: "3.2. Test diff --git a/VERSION b/VERSION index 3529abb..0705090 100644 --- a/VERSION +++ b/VERSION @@ -1,2 +1,2 @@ -Sun Jan 24 04:56:17 GMT 2021 -Sun Jan 24 01:56:17 -03 2021 +Mon Feb 8 23:38:56 GMT 2021 +Mon Feb 8 20:38:56 -03 2021 diff --git a/eev-audiovideo.el b/eev-audiovideo.el index 8c10628..cda195f 100644 --- a/eev-audiovideo.el +++ b/eev-audiovideo.el @@ -1,6 +1,6 @@ ;;; eev-audiovideo.el -- elisp hyperlinks to audio and video files. -;; Copyright (C) 2013-2020 Free Software Foundation, Inc. +;; Copyright (C) 2013-2021 Free Software Foundation, Inc. ;; ;; This file is part of GNU eev. ;; @@ -19,7 +19,7 @@ ;; ;; Author: Eduardo Ochs <eduardoo...@gmail.com> ;; Maintainer: Eduardo Ochs <eduardoo...@gmail.com> -;; Version: 2020dec17 +;; Version: 2020dec21 ;; Keywords: e-scripts ;; ;; Latest version: <http://angg.twu.net/eev-current/eev-audiovideo.el> @@ -97,6 +97,7 @@ ;; «.find-termplayer» (to "find-termplayer") ;; «.find-mpv-video» (to "find-mpv-video") ;; «.find-mpv-audio» (to "find-mpv-audio") +;; «.code-brxxxs» (to "code-brxxxs") ;; «.aliases» (to "aliases") @@ -520,6 +521,21 @@ See: (find-audiovideo-intro \"`eev-avadj-mode'\")" +;;; _ _ +;;; ___ ___ __| | ___ | |__ _ ____ ____ ____ _____ +;;; / __/ _ \ / _` |/ _ \_____| '_ \| '__\ \/ /\ \/ /\ \/ / __| +;;; | (_| (_) | (_| | __/_____| |_) | | > < > < > <\__ \ +;;; \___\___/ \__,_|\___| |_.__/|_| /_/\_\/_/\_\/_/\_\___/ +;;; +;; «code-brxxxs» (to ".code-brxxxs") +;; See: (find-brxxx-intro "6. `code-brfile'") + +;; (find-code-brfile 'find-audio :local 'braudiol :dired 'braudiod) + (code-brfile 'find-audio :local 'braudiol :dired 'braudiod) +;; (find-code-brfile 'find-video :local 'brvideol :dired 'brvideod) + (code-brfile 'find-video :local 'brvideol :dired 'brvideod) + + ;;; _ _ ;;; __ _| (_) __ _ ___ ___ ___ @@ -537,10 +553,6 @@ See: (find-audiovideo-intro \"`eev-avadj-mode'\")" (defalias 'code-audio 'code-mpv-audio) (defalias 'find-code-audio 'find-code-mpv-audio) -;; (find-code-brfile 'find-audio :local 'braudiol :dired 'braudiod) - (code-brfile 'find-audio :local 'braudiol :dired 'braudiod) -;; (find-code-brfile 'find-video :local 'brvideol :dired 'brvideod) - (code-brfile 'find-video :local 'brvideol :dired 'brvideod) diff --git a/eev-brxxx.el b/eev-brxxx.el index 7d72d6a..4f2ec9b 100644 --- a/eev-brxxx.el +++ b/eev-brxxx.el @@ -1,6 +1,6 @@ ;;; eev-brxxx.el -- define families of browse-url-like functions. -;; Copyright (C) 2012-2019 Free Software Foundation, Inc. +;; Copyright (C) 2012-2021 Free Software Foundation, Inc. ;; ;; This file is part of GNU eev. ;; @@ -19,7 +19,7 @@ ;; ;; Author: Eduardo Ochs <eduardoo...@gmail.com> ;; Maintainer: Eduardo Ochs <eduardoo...@gmail.com> -;; Version: 2020oct12 +;; Version: 2021feb08 ;; Keywords: e-scripts ;; ;; Latest version: <http://angg.twu.net/eev-current/eev-brxxx.el> @@ -223,10 +223,9 @@ This should be made smarter - file:// urls should be returned unchanged." ;;; | (_| (_) | (_| | __/_____| |_) | | | |_| | | | | ;;; \___\___/ \__,_|\___| |_.__/|_| \__,_|_| |_| ;;; -;; Skel (broken): (find-tail-call-links "brurl" "f") - ;; «code-brurl» (to ".code-brurl") -;; Test: (find-code-brurl 'find-foo :remote 'brfoo :local 'brfool :dired 'brfood) +;; See: (find-brxxx-intro "6. `code-brfile'") +;; Test: (find-code-brurl 'find-foo :remote 'brfoo :local 'brfool :dired 'brfood) ;; (defun code-brurl (f &rest rest) "Define a family of brxxx functions from a function that operates on URLs" @@ -237,10 +236,12 @@ This should be made smarter - file:// urls should be returned unchanged." "Generate code for a family of functions from a function that operates on URLs" (concat (ee-template0 "\ ;; {(ee-S `(find-code-brurl ',f ,@(mapcar 'ee-add-quote rest)))} +;; See: (find-brxxx-intro \"5. `code-brurl'\") ") (ee-code-brurl-rest f rest))) ;; «ee-code-brurl-rest» (to ".ee-code-brurl-rest") -;; Support for extra arguments +;; Support for extra arguments. Similar to: +;; (find-eev-quick-intro "9.2. Extra arguments to `code-c-d'") (defun ee-code-brurl-rest (f rest) (cond ((null rest) "") @@ -254,7 +255,7 @@ This should be made smarter - file:// urls should be returned unchanged." \(defun {brxxx} (url &rest ignore) \"Apply `{f}' on URL.\" (interactive (browse-url-interactive-arg \"URL: \")) - (setq browse-url-browser-function '{brxxx}) + ;; (setq browse-url-browser-function '{brxxx}) (message \"(%S %S) -> %S\" '{f} url ({f} url))) ") (ee-code-brurl-rest f rest))) @@ -264,7 +265,7 @@ This should be made smarter - file:// urls should be returned unchanged." \(defun {brxxxl} (url &rest ignore) \"Apply `{f}' on the local url associated to URL.\" (interactive (browse-url-interactive-arg \"URL: \")) - (setq browse-url-browser-function '{brxxxl}) + ;; (setq browse-url-browser-function '{brxxxl}) (setq url (ee-url-to-local-url url)) (message \"(%S %S) -> %S\" '{f} url ({f} url))) @@ -299,9 +300,8 @@ This should be made smarter - file:// urls should be returned unchanged." ;;; ;; «code-brfile» (to ".code-brfile") ;; `code-brfile': top-level functions. -;; -;; Skel (broken): (find-tail-call-links "brfile" "f") ;; Test: (find-code-brfile 'find-BAR :local 'brBARL :dired 'brBARD) +;; See: (find-brxxx-intro "6. `code-brfile'") ;; (defun code-brfile (f &rest rest) "Define a family of brxxx functions from a function that operates on files" @@ -312,10 +312,14 @@ This should be made smarter - file:// urls should be returned unchanged." "Generate code for a family of functions from a function that operates on files" (concat (ee-template0 "\ ;; {(ee-S `(find-code-brfile ',f ,@(mapcar 'ee-add-quote rest)))} +;; See: (find-brxxx-intro \"6. `code-brfile'\") ") (ee-code-brfile-rest f rest))) ;; «ee-code-brfile-rest» (to ".ee-code-brfile-rest") ;; `code-brfile': support for extra arguments. +;; +;; Similar to: +;; (find-eev-quick-intro "9.2. Extra arguments to `code-c-d'") (defun ee-code-brfile-rest (f rest) (cond ((null rest) "") @@ -329,7 +333,7 @@ This should be made smarter - file:// urls should be returned unchanged." \(defun {brxxxl} (url &rest ignore) \"Apply `{f}' on the local file name associated to URL.\" (interactive (browse-url-interactive-arg \"URL: \")) - (setq browse-url-browser-function '{brxxxl}) + ;; (setq browse-url-browser-function '{brxxxl}) (let ((fname (ee-url-to-fname url))) (message \"(%S %S) -> %S\" '{f} fname ({f} fname)))) @@ -357,25 +361,35 @@ This should be made smarter - file:// urls should be returned unchanged." ;; «code-brxxxs» (to ".code-brxxxs") ;; See: (find-eev-quick-intro "3.1. Non-elisp hyperlinks") ;; (find-eev-quick-intro "3.1. Non-elisp hyperlinks" "brg") -;; (find-eev "eev-pdflike.el" "code-brxxxs") +;; (find-eev "eev-pdflike.el" "code-brxxxs") +;; (find-eev "eev-audiovideo.el" "code-brxxxs") ;; (find-eev "eev-blinks.el" "find-w3m") ;; (find-efile "net/browse-url.el") (defun find-googlechrome (url) (find-bgprocess `("google-chrome" ,url))) (defun find-firefox (url) (find-bgprocess `("firefox" ,url))) -(code-brurl 'find-psne-links :remote 'brep) +;; (find-code-brurl 'find-psne-links :remote 'brep) + (code-brurl 'find-psne-links :remote 'brep) -;; (code-brurl 'browse-url-firefox :remote 'brm :local 'brml :dired 'brmd) -;; (code-brurl 'browse-url-firefox :remote 'brff :local 'brffl :dired 'brffd) -(code-brurl 'find-firefox :remote 'brm :local 'brml :dired 'brmd) -(code-brurl 'find-firefox :remote 'brff :local 'brffl :dired 'brffd) -(code-brurl 'find-googlechrome :remote 'brg :local 'brgl :dired 'brgd) -(code-brurl 'find-w3m :remote 'brw :local 'brwl :dired 'brwd) +;; (find-code-brurl 'find-firefox :remote 'brm :local 'brml :dired 'brmd) + (code-brurl 'find-firefox :remote 'brm :local 'brml :dired 'brmd) +;; (find-code-brurl 'find-firefox :remote 'brff :local 'brffl :dired 'brffd) + (code-brurl 'find-firefox :remote 'brff :local 'brffl :dired 'brffd) +;; (find-code-brurl 'find-googlechrome :remote 'brg :local 'brgl :dired 'brgd) + (code-brurl 'find-googlechrome :remote 'brg :local 'brgl :dired 'brgd) +;; (find-code-brurl 'find-w3m :remote 'brw :local 'brwl :dired 'brwd) + (code-brurl 'find-w3m :remote 'brw :local 'brwl :dired 'brwd) + +;; (find-code-brurl 'find-wget :remote 'brwget) + (code-brurl 'find-wget :remote 'brwget) -(code-brurl 'find-wget :remote 'brwget) +;; (find-code-brfile 'find-fline :local 'brfl) + (code-brfile 'find-fline :local 'brfl) -(code-brfile 'find-fline :local 'brfl) +;; Obsolete: +;; (code-brurl 'browse-url-firefox :remote 'brm :local 'brml :dired 'brmd) +;; (code-brurl 'browse-url-firefox :remote 'brff :local 'brffl :dired 'brffd) diff --git a/eev-intro.el b/eev-intro.el index fda81aa..4d344fd 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: 2021jan23 +;; Version: 2021feb08 ;; Keywords: e-scripts ;; ;; Latest version: <http://angg.twu.net/eev-current/eev-intro.el> @@ -301,7 +301,7 @@ explained in this video: http://www.youtube.com/watch?v=kxBjiUo88_U http://angg.twu.net/eev-videos/M-x-list-packages-eev-nav.mp4 -To activate eev-mode and open this tutorial, run `M-x beginner'. +To activate eev-mode and open this tutorial, run `M-x eev-beginner'. An alternative way, that only works on *NIX-based systems, is shown in this video (from 2016!): @@ -2463,38 +2463,38 @@ recommended reading order. These are the basic ones: 5. (find-pdf-like-intro) 6. (find-eepitch-intro) 7. (find-audiovideo-intro) - 8. (find-psne-intro) - 9. (find-rcirc-intro) - 10. (find-elisp-intro) - 11. (find-eev-install-intro) + 8. (find-videos-intro) + 9. (find-psne-intro) + 10. (find-rcirc-intro) + 11. (find-elisp-intro) + 12. (find-eev-install-intro) This is a very basic tutorial intended mainly for M$ Windows users: - 12. (find-windows-beginner-intro) + 13. (find-windows-beginner-intro) These ones explain ideas, conventions, and usage patterns: - 13. (find-escripts-intro) - 14. (find-links-conv-intro) + 14. (find-escripts-intro) + 15. (find-links-conv-intro) These are older and more technical versions of sections of the eev-quick-intro: - 15. (find-eval-intro) - 16. (find-links-intro) - 17. (find-brxxx-intro) - 18. (find-wrap-intro) - 19. (find-eejump-intro) - 20. (find-anchors-intro) - 21. (find-code-c-d-intro) + 16. (find-eval-intro) + 17. (find-links-intro) + 18. (find-brxxx-intro) + 19. (find-wrap-intro) + 20. (find-eejump-intro) + 21. (find-anchors-intro) + 22. (find-code-c-d-intro) These are etcs: - 22. (find-multiwindow-intro) - 23. (find-templates-intro) - 24. (find-org-intro) - 25. (find-videos-intro) + 23. (find-multiwindow-intro) + 24. (find-templates-intro) + 25. (find-org-intro) 26. (find-git-intro) These ones explain advanced features that require extra setup: @@ -3231,65 +3231,87 @@ The big figure below shows all the key sequences: We saw in (find-eev-quick-intro \"8. Anchors\") + (find-eev-quick-intro \"8.1. Introduction: `to'\") + (find-eev-quick-intro \"8.3. Creating index/section anchor pairs\") + (find-eev-quick-intro \"8.4. Creating e-script blocks\") how to create anchors and how to point to anchors in the same file with `to', and we saw briefly in (find-eev-quick-intro \"9.2. Extra arguments to `code-c-d'\") + (find-eev-quick-intro \"9.2. Extra arguments to `code-c-d'\" \"to anchors\") that the extra argument `:anchor' in (code-c-d \"eev\" ee-eev-source-directory :anchor) -let us abbreviate the links below, that point to anchors, +let us abbreviate the link below, that points to an anchor, - (find-eevfile \"eev-blinks.el\" \"«find-wottb»\") - (find-anchor (ee-eevfile \"eev-blinks.el\") \"find-wottb\") + (find-eevfile \"eev-blinks.el\" \"«find-wottb»\") -as just: +to just this: (find-eev \"eev-blinks.el\" \"find-wottb\") -If you are in a file that has anchors there are two key sequences -that you can use to create a link to that anchors in it very -quickly. Remember that `M-h M-w' is a variant of `M-w' that -copies the current line to the kill ring; as a bonus, `M-h M-w' -highlights the current line for a brief while, and displays this -message in the echo area: +Let's now see how to put this all together. WARNING: this is an +advanced topic! - Copied the current line to the kill ring - use C-y to paste - -If you run `M-h M-w' with the prefix argument 1, i.e., with `M-1 -M-h M-w', it copies the previous anchor instead of the current -line. Try it now - `M-1 M-h M-w' will flash the \"find-wottb\" -above and will say: - - Copied \"find-wottb\" to the kill ring - -If you try `M-1 M-h M-w' at the target of this sexp, on in the -lines after the target, +If you are in a file that has anchors you can use the key +sequence `M-1 M-h M-w' to copy the \"preceding tag\" to the kill +ring, and you can you use an `M-h M--' after the `M-h M-y' in the +hyperlinks buffer to shrink the first sexp below to the second +one: + (find-eevfind \"eev-blinks.el\" \"find-wottb\") (find-eev \"eev-blinks.el\" \"find-wottb\") -the anchor \"find-wottb\" will be copied to the kill ring... if -you then type `M-h M-h' or `M-h M-3', go to the line with +The preceding tag and shrinking are explained here, with +exercises: + + (find-anchors-intro \"2. Shrinking\") + (find-anchors-intro \"2. Shrinking\" \"`M-h M--'\") + (find-anchors-intro \"3. The preceding tag\") + (find-anchors-intro \"3. The preceding tag\" \"`M-1 M-h M-w'\") + +Here is a diagram of key sequences: + + _____________________________________________ + | | | + | | | + | target buffer | elinks | + | with anchors | buffer | + | ::::::> | + | M-1 M-h M-w, | M-h M-2, | + | M-h M-3 or | || M-h M-y, | + | M-h M-h | || M-h M--, | + | | || M-h M-w or | + | | || M-w | + | | || | + | |----||----------------| + | | || | + | | \\/ notes | + | | buffer | + | | | + | | C-y | + | | | + | | | + |______________________|______________________| + +If you are intending to learn this, here is a suggestion: do it +in two steps! Start by learning how to create hyperlinks to +anchors in the directory that has the source files of eev, i.e., - (find-eevfile \"eev-blinks.el\") - -in it and type `M-h M-y' it will become this, + (find-eevfile \"\") - (find-eevfile \"eev-blinks.el\" \"find-wottb\") +and only then do things like -that is ALMOST a link to the anchor \"find-wottb\" in the file -\"eev-blinks.el\" - we need to delete the \"file\" in -`find-eevfile' to make it become a link to an anchor. It turns -out that eev has a key that does exactly that: `M-h M--'. See: + (code-c-d \"mnwa\" \"~/MYNOTESWITHANCHORS/\" :anchor) - (eek \"M-h M-k M-h M-- ;; ee-shrink-hyperlink-at-eol\") - (find-eev \"eev-edit.el\" \"ee-shrink-hyperlink-at-eol\") +but with better names, of course, and learn how to create links +to the anchors in the files in that directory. -I use this so much that I got used to typing this sequence of -keys VERY quickly: +NOTE: I use this so much that I got used to typing this sequence +of keys VERY quickly, M-1 M-h M-w M-h M-h @@ -3299,10 +3321,19 @@ keys VERY quickly: M-h M-- M-h M-w -I don't touch-type, and for me it became natural do hold the meta -key down with my left thumb while I type `M-1hwhh' and -`M-h2hyh-hw'... I would be nice to have a way to do this same -series of actions using keys that are good for touch typists. +but I don't touch-type, and for me it became natural to hold the +meta key down with my left thumb while I type `M-1hwhh' and +`M-h2hyh-hw' _by moving my hands over the keyboard a lot_... + +It would be nice to have a way to do this same series of actions +using keys that are good for touch typists. One possibilty is to +use transient-mode: + + https://magit.vc/manual/transient/ + https://lists.gnu.org/archive/html/emacs-devel/2021-01/msg01120.html + +I can try to implement this myself _if I have touch-typists to +discuss it with_ - so if you're interested, get in touch! @@ -7312,7 +7343,7 @@ The shell function that I could call as psne $S/http/www.gnu.org/software/emacs/emacs-paper.html -and it would run the fours steps in +and it would run the four steps in mkdir -p http://www.gnu.org/software/emacs/ cd http://www.gnu.org/software/emacs/ @@ -9947,43 +9978,48 @@ Prerequisites: 1. Some videos ============== -At this moment I have these five videos about eev (I am +At this moment I have these seven videos about eev (I am deliberately ignoring the ones that I consider obsolete!): - \"How to record executable notes with eev - and how to play them back\": - http://angg.twu.net/emacsconf2019.html - http://angg.twu.net/emacsconf2019.html#code-video - http://angg.twu.net/eev-videos/emacsconf2019.mp4 - http://www.youtube.com/watch?v=86yiRG8YJD0 - - \"On why most of the best features in eev look like 5-minute hacks\": - http://angg.twu.net/emacsconf2020.html - http://angg.twu.net/emacsconf2020.html#code-video - http://angg.twu.net/eev-videos/emacsconf2020.mp4 - http://www.youtube.com/watch?v=hOAqBc42Gg8 - - \"How to install eev with M-x list-packages and how to navigate its tutorials\": - http://angg.twu.net/2020-list-packages-eev-nav.html - http://angg.twu.net/2020-list-packages-eev-nav.html#code-video - http://angg.twu.net/eev-videos/M-x-list-packages-eev-nav.mp4 - http://www.youtube.com/watch?v=kxBjiUo88_U - - \"Some template-based functions of eev that are not five-minute hacks\": - http://angg.twu.net/2020-some-template-based.html - http://angg.twu.net/2020-some-template-based.html#code-video - http://angg.twu.net/eev-videos/2020_some_template-based_functions.mp4 - http://www.youtube.com/watch?v=91-9YfRPsuk - - \"How to create hyperlinks to \"here\" with `find-here-links'\": - http://angg.twu.net/2020-find-here-links.html - http://angg.twu.net/2020-find-here-links.html#code-video - http://angg.twu.net/eev-videos/2020-find-here-links.mp4 - http://www.youtube.com/watch?v=8jtiBlaDor4 - - \"Short videos about workflows - and how to upload them\": - http://angg.twu.net/2021-ssr.html - http://angg.twu.net/eev-videos/2020-short-find-ssr-links-2.mp4 - http://www.youtube.com/watch?v=_0_NLXTVhBk + 1. \"How to record executable notes with eev - and how to play them back\": + http://angg.twu.net/emacsconf2019.html + http://angg.twu.net/emacsconf2019.html#code-video + http://angg.twu.net/eev-videos/emacsconf2019.mp4 + http://www.youtube.com/watch?v=86yiRG8YJD0 + + 2. \"On why most of the best features in eev look like 5-minute hacks\": + http://angg.twu.net/emacsconf2020.html + http://angg.twu.net/emacsconf2020.html#code-video + http://angg.twu.net/eev-videos/emacsconf2020.mp4 + http://www.youtube.com/watch?v=hOAqBc42Gg8 + + 3. \"How to install eev with M-x list-packages and how to navigate its tutorials\": + http://angg.twu.net/2020-list-packages-eev-nav.html + http://angg.twu.net/2020-list-packages-eev-nav.html#code-video + http://angg.twu.net/eev-videos/M-x-list-packages-eev-nav.mp4 + http://www.youtube.com/watch?v=kxBjiUo88_U + + 4. \"Some template-based functions of eev that are not five-minute hacks\": + http://angg.twu.net/2020-some-template-based.html + http://angg.twu.net/2020-some-template-based.html#code-video + http://angg.twu.net/eev-videos/2020_some_template-based_functions.mp4 + http://www.youtube.com/watch?v=91-9YfRPsuk + + 5. \"How to create hyperlinks to \"here\" with `find-here-links'\": + http://angg.twu.net/2020-find-here-links.html + http://angg.twu.net/2020-find-here-links.html#code-video + http://angg.twu.net/eev-videos/2020-find-here-links.mp4 + http://www.youtube.com/watch?v=8jtiBlaDor4 + + 6. \"Short videos about workflows - and how to upload them\": + http://angg.twu.net/2021-ssr.html + http://angg.twu.net/eev-videos/2020-short-find-ssr-links-2.mp4 + http://www.youtube.com/watch?v=_0_NLXTVhBk + + 7. \"Using test blocks in eev\": + http://angg.twu.net/2021-test-blocks.html + http://angg.twu.net/eev-videos/2020-test-blocks-1.mp4 + http://www.youtube.com/watch?v=fpsF_M55W4o The ones that I prepared for the two EmacsConfs are very well-rehearsed, the other ones are not. @@ -10009,11 +10045,13 @@ to jump to positions in them. Another way to download these videos, and to get links that play them from the beginning, is by using these sexps: - (find-eevvideo-links \"eev2019\" \"emacsconf2019\" \"86yiRG8YJD0\") - (find-eevvideo-links \"eev2020\" \"emacsconf2020\" \"hOAqBc42Gg8\") - (find-eevvideo-links \"eevnav\" \"2020-list-packages-eev-nav\" \"kxBjiUo88_U\") - (find-eevvideo-links \"2020sometbf\" \"2020-some-template-based\" \"91-9YfRPsuk\") - (find-eevvideo-links \"2020findherelinks\" \"2020-find-here-links\" \"8jtiBlaDor4\") + 1. (find-eevvideo-links \"eev2019\" \"emacsconf2019\" \"86yiRG8YJD0\") + 2. (find-eevvideo-links \"eev2020\" \"emacsconf2020\" \"hOAqBc42Gg8\") + 3. (find-eevvideo-links \"eevnav\" \"2020-list-packages-eev-nav\" \"kxBjiUo88_U\") + 4. (find-eevvideo-links \"2020sometbf\" \"2020-some-template-based\" \"91-9YfRPsuk\") + 5. (find-eevvideo-links \"2020findherelinks\" \"2020-find-here-links\" \"8jtiBlaDor4\") + 6. (find-eevvideo-links \"2020ssr\" \"2020-short-find-ssr-links-2\" \"_0_NLXTVhBk\") + 7. (find-eevvideo-links \"testbls\" \"2020-test-blocks-1\" \"fpsF_M55W4o\") The function `find-eevvideo-links' is explained here: diff --git a/eev-pdflike.el b/eev-pdflike.el index 0e4d94e..d9fb1e8 100644 --- a/eev-pdflike.el +++ b/eev-pdflike.el @@ -19,7 +19,7 @@ ;; ;; Author: Eduardo Ochs <eduardoo...@gmail.com> ;; Maintainer: Eduardo Ochs <eduardoo...@gmail.com> -;; Version: 2020dec03 +;; Version: 2021feb08 ;; Keywords: e-scripts ;; ;; Latest version: <http://angg.twu.net/eev-current/eev-pdflike.el> @@ -857,6 +857,32 @@ If the argument PAGE is non-nil append a \"#page=nnn\" to the result." +;;; _ _ +;;; ___ ___ __| | ___ | |__ _ ____ ____ ____ _____ +;;; / __/ _ \ / _` |/ _ \_____| '_ \| '__\ \/ /\ \/ /\ \/ / __| +;;; | (_| (_) | (_| | __/_____| |_) | | > < > < > <\__ \ +;;; \___\___/ \__,_|\___| |_.__/|_| /_/\_\/_/\_\/_/\_\___/ +;;; +;; «code-brxxxs» (to ".code-brxxxs") +;; See: (find-brxxx-intro "6. `code-brfile'") +;; +;; (find-code-brfile 'find-pdf-page :local 'brpdfl :dired 'brpdfd) + (code-brfile 'find-pdf-page :local 'brpdfl :dired 'brpdfd) +;; (find-code-brfile 'find-pdf-text :local 'brpdftextl :dired 'brpdftextd) + (code-brfile 'find-pdf-text :local 'brpdftextl :dired 'brpdftextd) + +;; (find-code-brfile 'find-djvu-page :local 'brdjvul :dired 'brdjvud) + (code-brfile 'find-djvu-page :local 'brdjvul :dired 'brdjvud) +;; (find-code-brfile 'find-djvu-text :local 'brdjvutextl :dired 'brdjvutextd) + (code-brfile 'find-djvu-text :local 'brdjvutextl :dired 'brdjvutextd) +;; (find-code-brfile 'find-evince-page :local 'brevincel :dired 'brevinced) + (code-brfile 'find-evince-page :local 'brevincel :dired 'brevinced) +;; (find-code-brfile 'find-xdvi-page :local 'brxdvil :dired 'brxdvid) + (code-brfile 'find-xdvi-page :local 'brxdvil :dired 'brxdvid) +;; (find-code-brfile 'find-xpdf-page :local 'brxpdfl :dired 'brxpdfd) + (code-brfile 'find-xpdf-page :local 'brxpdfl :dired 'brxpdfd) + + ;;; _ _ _ ;;; / \ | (_) __ _ ___ ___ ___ @@ -871,45 +897,35 @@ If the argument PAGE is non-nil append a \"#page=nnn\" to the result." ;; ;; (find-eevfile "eev-pdflike.el" "4. A CONVENTION ON HYPHENS") +;; (find-code-pdfbackendalias "djvu" "djview-page") (code-pdfbackendalias "djvu" "djview-page") +;; (find-code-pdfbackendalias "djvu-text" "djvutxt-text") (code-pdfbackendalias "djvu-text" "djvutxt-text") +;; (find-code-pdfbackendalias "djvupage" "djview-page") (code-pdfbackendalias "djvupage" "djview-page") +;; (find-code-pdfbackendalias "dvi" "xdvi-page") (code-pdfbackendalias "dvi" "xdvi-page") +;; (find-code-pdfbackendalias "evince" "evince-page") (code-pdfbackendalias "evince" "evince-page") +;; (find-code-pdfbackendalias "evincepage" "evince-page") (code-pdfbackendalias "evincepage" "evince-page") +;; (find-code-pdfbackendalias "pdf" "xpdf-page") (code-pdfbackendalias "pdf" "xpdf-page") +;; (find-code-pdfbackendalias "pspage" "gv-page") (code-pdfbackendalias "pspage" "gv-page") +;; (find-code-pdfbackendalias "xdvi" "xdvi-page") (code-pdfbackendalias "xdvi" "xdvi-page") +;; (find-code-pdfbackendalias "xdvipage" "xdvi-page") (code-pdfbackendalias "xdvipage" "xdvi-page") +;; (find-code-pdfbackendalias "xpdf" "xpdf-page") (code-pdfbackendalias "xpdf" "xpdf-page") +;; (find-code-pdfbackendalias "xpdfpage" "xpdf-page") (code-pdfbackendalias "xpdfpage" "xpdf-page") -;; (find-code-pdfbackendalias "djvu" "djview-page") -;; (find-code-pdfbackendalias "djvu-text" "djvutxt-text") -;; (find-code-pdfbackendalias "djvupage" "djview-page") -;; (find-code-pdfbackendalias "dvi" "xdvi-page") -;; (find-code-pdfbackendalias "evince" "evince-page") -;; (find-code-pdfbackendalias "evincepage" "evince-page") -;; (find-code-pdfbackendalias "pdf" "xpdf-page") -;; (find-code-pdfbackendalias "pspage" "gv-page") -;; (find-code-pdfbackendalias "xdvi" "xdvi-page") -;; (find-code-pdfbackendalias "xdvipage" "xdvi-page") -;; (find-code-pdfbackendalias "xpdf" "xpdf-page") -;; (find-code-pdfbackendalias "xpdfpage" "xpdf-page") -;; «code-brxxxs» (to ".code-brxxxs") -;; See: (find-brxxx-intro "6. `code-brfile'") -;; -(code-brfile 'find-pdf-page :local 'brpdfl :dired 'brpdfd) -(code-brfile 'find-pdf-text :local 'brpdftextl :dired 'brpdftextd) -(code-brfile 'find-djvu-page :local 'brdjvul :dired 'brdjvud) -(code-brfile 'find-djvu-text :local 'brdjvutextl :dired 'brdjvutextd) -(code-brfile 'find-evince-page :local 'brevincel :dired 'brevinced) -(code-brfile 'find-xdvi-page :local 'brxdvil :dired 'brxdvid) -(code-brfile 'find-xpdf-page :local 'brxpdfl :dired 'brxpdfd) diff --git a/eev-template0.el b/eev-template0.el index 65ca663..2efccb7 100644 --- a/eev-template0.el +++ b/eev-template0.el @@ -19,7 +19,7 @@ ;; ;; Author: Eduardo Ochs <eduardoo...@gmail.com> ;; Maintainer: Eduardo Ochs <eduardoo...@gmail.com> -;; Version: 2019mar29 +;; Version: 2021feb03 ;; Keywords: e-scripts ;; ;; Latest version: <http://angg.twu.net/eev-current/eev-template0.el> @@ -89,9 +89,16 @@ ;; (find-eev-quick-intro "9.3. Hyperlinks to PDF files") +(defvar ee-template00-re "{\\([^{}]+\\)}" + "To make `ee-template0' use other delimiters instead of `{}'s +set this variable temporarily in a `let'.") +;; Tests: +;; (ee-template00 "a{(+ 2 3)}b") +;; (let ((hi "Here: ") (a 22) (b 33)) (ee-template00 "{hi}{a}+{b}={(+ a b)}")) +;; (defun ee-template00 (str) "Replace substrings enclosed by `{}'s in STR by the result of evaluating them. Examples:\n @@ -101,10 +108,13 @@ Examples:\n (ee-template00 \"{hi} {a} + {b} = {(+ a b)}\")) --> \"22 + 33 = 55\"" (replace-regexp-in-string - "{\\([^{}]+\\)}" + ee-template00-re (lambda (_code_) (format "%s" (eval (read (substring _code_ 1 -1))))) str 'fixedcase 'literal)) +;; Test: +;; (ee-template0 "{<} a{(+ 2 3)} {>}") +;; (defun ee-template0 (str) "Replace substrings enclosed by `{}'s in STR by the result of evaluating them. Substrings of the form `{<}' and `{>}' in STR are replaced by `{'