[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/eev bd72cc1 4/4: Merge remote-tracking branch 'eev/UTF-
From: |
Stefan Monnier |
Subject: |
[elpa] externals/eev bd72cc1 4/4: Merge remote-tracking branch 'eev/UTF-8' into externals/eev |
Date: |
Fri, 17 May 2019 18:27:28 -0400 (EDT) |
branch: externals/eev
commit bd72cc102ff9e234bfcddccb9ace4c62da44088f
Merge: ca979de 74b3d79
Author: Stefan Monnier <address@hidden>
Commit: Stefan Monnier <address@hidden>
Merge remote-tracking branch 'eev/UTF-8' into externals/eev
---
ChangeLog | 46 ++++++
VERSION | 4 +-
eev-beginner.el | 4 +-
eev-edit.el | 28 +++-
eev-elinks.el | 23 ++-
eev-intro.el | 350 ++++++++++++++++++++++++++++++++++++----
eev-mode.el | 3 +-
eev-rcirc.el | 50 ++++--
eev-tlinks.el | 486 +-------------------------------------------------------
eev-wrap.el | 2 +-
eev.el | 4 +-
11 files changed, 460 insertions(+), 540 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index f549a0e..b4302a9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,52 @@
+2019-05-17 Eduardo Ochs <address@hidden>
+
+ * eev-elinks.el (find-here-links-3): new function.
+ (find-here-links-beginner): small changes.
+
+ * eev-intro.el: small changes.
+
+2019-05-16 Eduardo Ochs <address@hidden>
+
+ * eev-tlinks.el (find-dhmake-links): deleted.
+ (find-newhost-links): deleted.
+
+2019-05-15 Eduardo Ochs <address@hidden>
+
+ * eev-elinks.el (find-ekey-links): added some spaces in the
+ output.
+
+2019-05-11 Eduardo Ochs <address@hidden>
+
+ * eev-rcirc.el (find-freenode-links): added some text.
+
+2019-04-25 Eduardo Ochs <address@hidden>
+
+ * eev-intro.el (find-emacs-keys-intro): point to
+ (find-refining-intro).
+
+ * eev-elinks.el (find-here-links-beginner): new function.
+
+2019-04-24 Eduardo Ochs <address@hidden>
+
+ * eev-mode.el (eev-mode-map-set): new keybinding: `M-h M-w' for
+ `ee-copy-this-line-to-kill-ring'.
+
+ * eev-edit.el (ee-copy-this-line-to-kill-ring): new function.
+
+ * eev-intro.el (find-refining-intro): new function.
+
+2019-04-15 Eduardo Ochs <address@hidden>
+
+ * eev-rcirc.el (eepitch-freenode): new function.
+
2019-04-14 Eduardo Ochs <address@hidden>
+ * eev-intro.el (find-eev-install-intro): small changes.
+
+ * eev.el: small changes.
+
* eev-intro.el (find-rcirc-intro): rewrote completely.
+ (find-escripts-intro): small changes.
* eev-rcirc.el: rewrote all comments and some docstrings.
(ee-irc-channel-around-point): commented out.
diff --git a/VERSION b/VERSION
index 63f9b9a..1ea0fe5 100644
--- a/VERSION
+++ b/VERSION
@@ -1,2 +1,2 @@
-Sun Apr 14 17:08:11 GMT 2019
-Sun Apr 14 14:08:11 -03 2019
+Fri May 17 07:17:49 GMT 2019
+Fri May 17 04:17:49 -03 2019
diff --git a/eev-beginner.el b/eev-beginner.el
index fd2d32c..ae0430d 100644
--- a/eev-beginner.el
+++ b/eev-beginner.el
@@ -53,8 +53,8 @@
;;
;; When, or if, you are no longer a beginner, you may want to load eev
;; by just adding a "(require 'eev-load)" to your ".emacs". This loads
-;; all the main modules but not turn on eev-mode on by default, and
-;; does not open the tutorial. See:
+;; all the main modules but does not turn on eev-mode on by default,
+;; and does not open the tutorial. See:
;;
;; (find-eev-intro "1. `eev-mode'")
;; (find-eev "eev-load.el")
diff --git a/eev-edit.el b/eev-edit.el
index 9b81436..e91eeef 100644
--- a/eev-edit.el
+++ b/eev-edit.el
@@ -19,7 +19,7 @@
;;
;; Author: Eduardo Ochs <address@hidden>
;; Maintainer: Eduardo Ochs <address@hidden>
-;; Version: 2019mar02
+;; Version: 2019apr25
;; Keywords: e-scripts
;;
;; Latest version: <http://angg.twu.net/eev-current/eev-edit.el>
@@ -31,6 +31,7 @@
;;; Commentary:
;; See:
+;; (find-refining-intro "2. Refining hyperlinks")
;; (find-eval-intro "9. Producing and refining hyperlinks")
;; (find-escripts-intro "5.7. Refining hyperlinks")
;; (find-escripts-intro "5.8. Pointing to anchors")
@@ -42,6 +43,7 @@
;; «.ee-duplicate-this-line» (to "ee-duplicate-this-line")
;; «.ee-yank-pos-spec» (to "ee-yank-pos-spec")
+;; «.ee-copy-this-line-to-kill-ring» (to "ee-copy-this-line-to-kill-ring")
;; «.ee-shrink-hyperlink-at-eol» (to "ee-shrink-hyperlink-at-eol")
;; «.ee-flip-psne-ness» (to "ee-flip-psne-ness")
;; «.eewrap-vldi-list-line» (to "eewrap-vldi-list-line")
@@ -110,6 +112,30 @@ and you copy that hyperlink to a more permanent place."
+;;; ____ _ _ _ _ _
+;;; / ___|___ _ __ _ _ | |_| |__ (_)___ | (_)_ __ ___
+;;; | | / _ \| '_ \| | | |_____| __| '_ \| / __|_____| | | '_ \ / _ \
+;;; | |__| (_) | |_) | |_| |_____| |_| | | | \__ \_____| | | | | | __/
+;;; \____\___/| .__/ \__, | \__|_| |_|_|___/ |_|_|_| |_|\___|
+;;; |_| |___/
+;;
+;; «ee-copy-this-line-to-kill-ring» (to ".ee-copy-this-line-to-kill-ring")
+;; (define-key eev-mode-map "\M-h\M-w" 'ee-copy-this-line-to-kill-ring)
+
+(defun ee-copy-this-line-to-kill-ring ()
+ "Copy the current line to the kill ring and highlight (\"flash\") it."
+ (interactive)
+ (let* ((start (ee-bol))
+ (end (save-excursion (next-line) (ee-bol)))
+ (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)))
+
+
+
+
;;; _ _ _
;;; ___| |__ _ __(_)_ __ | | __
;;; / __| '_ \| '__| | '_ \| |/ /
diff --git a/eev-elinks.el b/eev-elinks.el
index 3fdca83..e330221 100644
--- a/eev-elinks.el
+++ b/eev-elinks.el
@@ -19,7 +19,7 @@
;;
;; Author: Eduardo Ochs <address@hidden>
;; Maintainer: Eduardo Ochs <address@hidden>
-;; Version: 2019apr01
+;; Version: 2019may17
;; Keywords: e-scripts
;;
;; Latest version: <http://angg.twu.net/eev-current/eev-elinks.el>
@@ -372,8 +372,8 @@ See: (find-eev \"eev-elinks.el\" \"find-ekey-links\")"
`((find-ekey-links ,key ,@pos-spec-list)
;; Convention: the first sexp always regenerates the buffer.
(find-ekey-links ,key)
- (eek ,(format "M-h M-k %s" longkey))
- (eek ,(format "M-h M-k %s" longkey+))
+ (eek ,(format "M-h M-k %s" longkey))
+ (eek ,(format "M-h M-k %s" longkey+))
(find-efunctiondescr ',f)
""
(find-elongkey-links ,longkey)
@@ -1273,6 +1273,23 @@ This needs a temporary directory; see:
(find-prepared-intro)"
+;; This is a hack for beginners that is explained in a tutorial. See:
+;; (find-refining-intro "4. A tip for beginners")
+;; (find-refining-intro "4. A tip for beginners" "find-here-links-beginner")
+;;
+(defun find-here-links-3 ()
+ "A variant of `find-here-links' that creates a three-window setting."
+ (interactive "P")
+ (find-wset "13_o2_o_coo" nil '(find-here-links) '(eejump-1)))
+
+(defun find-here-links-beginner (&optional arg)
+ "A variant of `find-here-links' that may create a three-window setting."
+ (interactive "P")
+ (if arg (find-here-links-3) (find-here-links)))
+
+
+
+
diff --git a/eev-intro.el b/eev-intro.el
index 007601b..34ffd52 100644
--- a/eev-intro.el
+++ b/eev-intro.el
@@ -19,7 +19,7 @@
;;
;; Author: Eduardo Ochs <address@hidden>
;; Maintainer: Eduardo Ochs <address@hidden>
-;; Version: 2019apr14
+;; Version: 2019may17
;; Keywords: e-scripts
;;
;; Latest version: <http://angg.twu.net/eev-current/eev-intro.el>
@@ -62,6 +62,7 @@
;; «.find-emacs-keys-intro» (to "find-emacs-keys-intro")
;; «.find-eev-install-intro» (to "find-eev-install-intro")
;; «.find-eev-intro» (to "find-eev-intro")
+;; «.find-refining-intro» (to "find-refining-intro")
;;
;; «.find-eval-intro» (to "find-eval-intro")
;; «.find-links-conv-intro» (to "find-links-conv-intro")
@@ -529,8 +530,7 @@ A way to go quickly to \"~/TODO\" is explained in section
7.1.
A way to \"refine\" hyperlinks to make them more precise is
explained here:
- (find-eval-intro \"9. Producing and refining hyperlinks\")
-
+ (find-refining-intro \"2. Refining hyperlinks\")
@@ -813,6 +813,7 @@ The pattern is:
`defun' is explained here:
(find-elnode \"Defining Functions\" \"(defun foo () 5)\")
+ (find-eval-intro \"10. More on functions\")
As a special case, a plain `M-j' without a prefix argument runs a
special function, `find-eejumps', that shows a help text followed
@@ -1662,6 +1663,8 @@ The keys for creating \"hyperlinks to here\" and refining
them are:
M-h M-h - `find-here-links'. See: (find-eev-quick-intro \"`M-h M-h'\")
M-h M-2 - `ee-duplicate-this-line'. See: (find-eval-intro \"M-h M-2\")
M-h M-y - `ee-yank-pos-spec'. See: (find-eval-intro \"M-h M-y\")
+ See also: (find-refining-intro \"2. Refining hyperlinks\")
+ (find-refining-intro \"4. A tip for beginners\")
2. Key sequences and how to abort them
@@ -1693,6 +1696,7 @@ the \"point\" and the \"mark\":
(find-enode \"Point\")
(find-enode \"Mark\")
+ (find-enode \"Shift Selection\")
You can do cut, copy and paste by using the icons in the toolbar
or by using the menu bar (the relevant options are under
@@ -1706,6 +1710,7 @@ or by using the menu bar (the relevant options are under
See: (find-enode \"Tool Bars\")
(find-enode \"Menu Bar\")
+ (find-emacs-keys-intro \"3. Cutting & pasting\")
@@ -1980,15 +1985,16 @@ be byte-compilable, 2) be compatible with lexical
binding, and 3)
have all the autoloads. My reasons for not complying - or for not
complying NOW - are explained in the subsections below.
-I will try to submit eev to MELPA in the next few days - in
-mid-april 2019. I have the feeling that the issues blocking it
-from going into ELPA will take a few years to be solved.
-
Btw: except for Stefan's e-mails ***100%*** the feedback that I
received about eev in the last three years came from beginners.
I am not willing to make changes that will make eev
beginner-UNfriendly.
+UPDATE: in 2019apr14 eev became a part of ELPA even despite its
+quirks!!! Its ELPA page is here:
+
+ http://elpa.gnu.org/packages/eev.html
+
@@ -2159,39 +2165,40 @@ These ones explain ideas, conventions, and usage
patterns:
4. (find-escripts-intro)
5. (find-links-conv-intro)
+ 6. (find-refining-intro)
These are older and more technical versions of sections of the
eev-quick-intro:
- 6. (find-eval-intro)
- 7. (find-links-intro)
- 8. (find-brxxx-intro)
- 9. (find-eepitch-intro)
- 10. (find-wrap-intro)
- 11. (find-eejump-intro)
- 12. (find-anchors-intro)
- 13. (find-code-c-d-intro)
- 14. (find-pdf-like-intro)
- 15. (find-psne-intro)
+ 7. (find-eval-intro)
+ 8. (find-links-intro)
+ 9. (find-brxxx-intro)
+ 10. (find-eepitch-intro)
+ 11. (find-wrap-intro)
+ 12. (find-eejump-intro)
+ 13. (find-anchors-intro)
+ 14. (find-code-c-d-intro)
+ 15. (find-pdf-like-intro)
+ 16. (find-psne-intro)
These are etcs:
- 16. (find-multiwindow-intro)
- 17. (find-audiovideo-intro)
- 18. (find-rcirc-intro)
- 19. (find-templates-intro)
- 20. (find-videos-intro)
+ 17. (find-multiwindow-intro)
+ 18. (find-audiovideo-intro)
+ 19. (find-rcirc-intro)
+ 20. (find-templates-intro)
+ 21. (find-videos-intro)
These ones explain advanced features that require extra setup:
- 21. (find-prepared-intro)
- 22. (find-bounded-intro)
- 23. (find-channels-intro)
+ 22. (find-prepared-intro)
+ 23. (find-bounded-intro)
+ 24. (find-channels-intro)
These ones are obsolete:
- 24. (find-emacs-intro)
- 25. (find-defun-intro)
+ 25. (find-emacs-intro)
+ 26. (find-defun-intro)
Item 20 is an index of the (old) video tutorials, with scripts
for downloading local copies of them and links to important
@@ -2268,6 +2275,287 @@ For the full lists of keybindings, see:
+;;; __ _ _
+;;; _ __ ___ / _(_)_ __ (_)_ __ __ _
+;;; | '__/ _ \ |_| | '_ \| | '_ \ / _` |
+;;; | | | __/ _| | | | | | | | | (_| |
+;;; |_| \___|_| |_|_| |_|_|_| |_|\__, |
+;;; |___/
+;;
+;; «find-refining-intro» (to ".find-refining-intro")
+;; (find-intro-links "refining")
+
+(defun find-refining-intro (&rest pos-spec-list) (interactive)
+ (let ((ee-buffer-name "*(find-refining-intro)*"))
+ (apply 'find-eintro "\
+\(Re)generate: (find-refining-intro)
+Source code: (find-efunction 'find-refining-intro)
+More intros: (find-eev-quick-intro)
+ (find-eval-intro)
+This buffer is _temporary_ and _editable_.
+Is is meant as both a tutorial and a sandbox.
+
+
+(find-eval-intro \"9. Producing and refining hyperlinks\")
+(find-emacs-keys-intro \"and refining them\")
+(find-eval-intro \"6. Refining hyperlinks\")
+
+
+
+
+1. Pos-spec-lists
+=================
+Most hyperlinks functions defined by eev can be \"refined\" by
+the addition of extra arguments. These extra arguments are called
+a \"pos-spec\" (or a \"pos-spec-list\") and they specify a
+position in the target buffer. The first argument means a certain
+line number, when it is a number, or the first occurrence of a
+certain string, when it is a string. Try:
+
+ (find-enode \"Command Index\")
+ (find-enode \"Command Index\" \"eval-last-sexp\")
+
+Further arguments mean either \"move down n lines\" or \"search
+for the next occurrence of a string\", depending on whether they
+are numbers or strings. Try:
+
+ (find-sh \"seq 2095 2115\")
+ (find-sh \"seq 2095 2115\" \"2100\")
+ (find-sh \"seq 2095 2115\" \"2100\" \"9\")
+ (find-sh \"seq 2095 2115\" \"2100\" 2)
+
+In most cases an empty pos-spec-list, like this,
+
+ (find-sh \"seq 2095 2115\")
+
+means: \"if the target buffer already exists then just open it\"
+- so that following that hyperlink would jump to the current
+position of the point in that buffer.
+
+Pos-spec-lists are usually interpreted by the function
+`ee-goto-position'. The first argument is interpreted in a
+special way, according to its type:
+
+ string -> jump to the first occurrence of
+ that string in the buffer
+ number -> jump to the n-th line
+
+and the other arguments are interpreted (recursively) by
+`ee-goto-rest':
+
+ string -> jump to the next occurence of that string
+ number -> move down n lines
+ list -> evaluate the list
+
+Here is an example in which one of the arguments is a list.
+Suggestion: execute it with `M-2 M-e'.
+
+ (find-sh \"seq 2095 2115\" \"2100\" \"9\" '(eek \"!!!\"))
+
+There are some variants of `ee-goto-position' in which the first
+argument is interpreted in a different way, but we will not
+discuss them here. See:
+
+ (find-efunction 'ee-goto-anchor)
+ (find-eev \"eev-pdflike.el\" \"ee-goto-position-page\")
+
+If you want to add support for more complex pos-spec-lists, just
+replace `ee-goto-rest' with your own extended version.
+
+
+
+
+2. Refining hyperlinks
+======================
+To _refine_ a hyperlink means to add items to its pos-spec-list
+to make it point to a more precise location. For example, in the
+links below the first one points to an \"intro\", the second
+points to a section in it, and the third points to an important
+idea in that section:
+
+ (find-escripts-intro)
+ (find-escripts-intro \"5. Tools for writing e-scripts\")
+ (find-escripts-intro \"5. Tools for writing e-scripts\" \"alternate\")
+
+The paragraph where the word \"alternate\" is talks about how to
+alternate between a \"task\" and \"taking notes\" without losing
+focus on the \"task\". Eev has some keys sequences for doing
+that:
+
+ M-h M-h - `find-here-links'. See: (find-eev-quick-intro \"`M-h M-h'\")
+ M-h M-2 - `ee-duplicate-this-line'
+ M-h M-y - `ee-yank-pos-spec'
+ M-h M-w - `ee-copy-this-line-to-kill-ring'
+
+Let me explain them starting by the two middle ones. This sexp
+
+ (kill-new \"Tools for\")
+
+puts the string \"Tools for\" on the top of the kill ring; we can
+use it to simulate what happens when the user marks a region
+containing that string and runs `M-w'. See:
+
+ (find-enode \"Kill Ring\")
+ (find-emacs-keys-intro \"3. Cutting & pasting\")
+
+Try the first two sexps below:
+
+ (kill-new \"Tools for\")
+ (eek \"<down> M-h M-2 M-h M-y\")
+ (find-escripts-intro)
+
+The `eek' duplicates the line with \"(find-escripts-intro)\" and
+then runs `M-h M-y' (`ee-yank-pos-spec') on it; `M-h M-y' is
+based on `C-y' (`yank'),
+
+ (find-enode \"Yanking\")
+
+but `M-h M-y' \"yanks\" the text at the end of the sexp, in
+quotes, as an new argument.
+
+
+
+
+3. Three buffers
+================
+One very common usage pattern involves three buffers:
+
+ 1. a buffer where we are storing our notes (the \"notes
+ buffer\").
+
+ 2. a buffer with something interesting that we want to create a
+ link to (the \"target buffer\"),
+
+ 3. a temporary buffer with editable hyperlinks, usually created
+ by `find-here-links' (the \"elinks buffer\").
+
+Usually beginners use the file \"~/TODO\" - that can be accessed
+with `M-1 M-j' - for all the e-script notes that they create;
+learning to keep notes in several files is a skill that comes
+later.
+
+Let's take a concrete example. We found something interesting in
+section 4 of `(find-escripts-intro)', and we want to keep a link
+to that; we decided to use the string \"snip, snip\" to refine
+the hyperlink -
+
+ (find-escripts-intro)
+ (find-escripts-intro \"4. How to read an e-script\")
+ (find-escripts-intro \"snip, snip\")
+
+and we want to produce the refined hyperlink - using the keys
+from the previous section -, copy it to our notes buffer, and go
+back to the target buffer. The keys to switch buffers are shown
+below,
+
+ ________ ________ ________ ________
+ | | : : | | | |
+ | target | M-h M-h : elinks : M-1 M-j | notes | M-K M-K | target |
+ | buffer | ------> : buffer : ------> | buffer | ------> | buffer |
+ |________| :________: |________| |________|
+
+but there are also some things that we need to do inside each one
+of these buffers:
+
+ a. In the target buffer: mark the string \"snip, snip\" and
+ copy it to the kill ring with `M-w' (`kill-ring-save');
+
+ b. In the elinks buffer: go to the line with the hyperlink that
+ points to the target buffer - `(find-escripts-intro)' -,
+ refine it with `M-h M-2 M-h M-y', copy its line to the kill
+ ring with `M-h M-w' (`ee-copy-this-line-to-kill-ring');
+
+ c. In the notes buffer: insert the refined hyperlink with
+ `C-y' (`yank').
+
+Note: `M-h M-w' (`ee-copy-this-line-to-kill-ring') is a key
+sequence intended for beginners. I prefer to use something like
+`C-a shift-<down> M-w'.
+
+
+
+
+4. A tip for beginners
+======================
+Some people find the instructions above hard to follow because
+they force them to remember lots of things that are off-screen.
+If you run the second sexp below,
+
+ (define-key eev-mode-map \"\\M-h\\M-h\" 'find-here-links)
+ (define-key eev-mode-map \"\\M-h\\M-h\" 'find-here-links-beginner)
+
+it will rebind the key sequence `M-h M-h' to a variant of
+`find-here-links' for beginners that creates this window
+configuration when invoked as `M-3 M-h M-h':
+
+ _____________________
+ | | |
+ | | elinks |
+ | | buffer |
+ | target |__________|
+ | buffer | |
+ | | notes |
+ | | buffer |
+ |__________|__________|
+
+You can then try to run the instructions in the last section with
+all the three buffers visible, switching from one buffer to
+another by clicking on their windows. Note that the order is:
+
+ _____________________
+ | | |
+ | ==> elinks |
+ | | buffer |
+ | target |____||____|
+ | buffer | \\/ |
+ | | notes |
+ | <== buffer |
+ |__________|__________|
+
+and note also that, in the terminology of
+
+ (find-escripts-intro \"alternate\" \"task\" \"notes\")
+
+the left side is \"task\" and the right side is \"notes\".
+
+To rebind `M-h M-h' to its original function, run this:
+
+ (define-key eev-mode-map \"\\M-h\\M-h\" 'find-here-links)
+
+or restart Emacs.
+
+The big figure below shows all the keys sequences:
+
+ _______________________________________
+ | | |
+ | | elinks |
+ | target `M-h M-h' buffer: |
+ | buffer: ::::::::> `M-h M-y |
+ | `M-w' | M-h M-w' |
+ | | |
+ | | ::`M-1 M-j' |
+ | |_______ :: __________|
+ | | \\/ |
+ | | |
+ | `M-K M-K' notes |
+ | <:::::::: buffer: |
+ | | `C-y' |
+ | | |
+ |_________________|_____________________|
+
+
+
+
+
+
+
+
+
+" pos-spec-list)))
+
+;; (find-refining-intro)
+
+
;;; _
@@ -6402,8 +6690,8 @@ discussion of free software projects happen), called
-1. The example the I use in workshops
-=====================================
+1. The example that I use in workshops
+======================================
Let's start with an example. In
(setq rcirc-default-nick \"hakuryo\")
@@ -8504,7 +8792,7 @@ reviewed in the subsections below.
# (find-fline \"/tmp/lua-intro.e\")
# (find-anchor \"/tmp/lua-intro.e\" \"intro:types\")
- # (defun eejump-11 () (find-fline \"/tmp/lua-intro.e\"))
+ # (defun eejump-71 () (find-fline \"/tmp/lua-intro.e\"))
--snip, snip--
@@ -8708,7 +8996,7 @@ about downloading and using an eev-based Lua tutorial.
Let's
think of each of these blocks as a _task_.
The task \"install Lua5.1\" is performed in one way if we're
-doing it for the first time, and in a different was if we're
+doing it for the first time, and in a different way if we're
doing it for the n-th time with some memory of what we did in the
previous times and of what we found important and what not.
Performing a task like this consists of several steps, that can
diff --git a/eev-mode.el b/eev-mode.el
index 76a6dc2..a7dc1a5 100644
--- a/eev-mode.el
+++ b/eev-mode.el
@@ -19,7 +19,7 @@
;;
;; Author: Eduardo Ochs <address@hidden>
;; Maintainer: Eduardo Ochs <address@hidden>
-;; Version: 2019mar02
+;; Version: 2019apr24
;; Keywords: e-scripts
;;
;; Latest version: <http://angg.twu.net/eev-current/eev-mode.el>
@@ -144,6 +144,7 @@ and: (find-eval-intro \"`M-k'\")"
;; Source: (find-eev "eev-edit.el")
(define-key eev-mode-map "\M-h\M-2" 'ee-duplicate-this-line)
(define-key eev-mode-map "\M-h\M-y" 'ee-yank-pos-spec)
+ (define-key eev-mode-map "\M-h\M-w" 'ee-copy-this-line-to-kill-ring)
(define-key eev-mode-map "\M-h\M--" 'ee-shrink-hyperlink-at-eol)
;;
;; These ones are also from: (find-eev "eev-edit.el")
diff --git a/eev-rcirc.el b/eev-rcirc.el
index f104b38..0c3ee0d 100644
--- a/eev-rcirc.el
+++ b/eev-rcirc.el
@@ -19,7 +19,7 @@
;;
;; Author: Eduardo Ochs <address@hidden>
;; Maintainer: Eduardo Ochs <address@hidden>
-;; Version: 2019apr14
+;; Version: 2019may11
;; Keywords: e-scripts
;;
;; Latest version: <http://angg.twu.net/eev-current/eev-rcirc.el>
@@ -336,6 +336,13 @@ This is like `find-rcirc-buffer-3a' but uses
+;; See: (find-efunction 'eepitch)
+;; (find-efunction 'eepitch-to-buffer)
+(defun eepitch-freenode (channel)
+ (interactive) (eepitch '(find-freenode channel)))
+
+
+
;;; __ _ _ _ _
;;; / _|_ __ ___ ___ _ __ ___ __| | ___ | (_)_ __ | | _____
@@ -345,20 +352,33 @@ This is like `find-rcirc-buffer-3a' but uses
;;;
;; «find-freenode-links» (to ".find-freenode-links")
-(defun find-freenode-links (&optional c channel &rest pos-spec-list)
+(defun find-freenode-links (&optional c channels &rest pos-spec-list)
"Visit a temporary buffer containing code for connecting to a freenode
channel."
(interactive)
(setq c (or c "{c}"))
- (setq channel (or channel "{channel}"))
- (apply 'find-elinks
- `((find-freenode-links ,c ,channel)
- (find-freenode-links "e" "#eev")
- (find-freenode-links)
- ;; Convention: the first sexp always regenerates the buffer.
- (find-efunction 'find-freenode-links)
- (find-efunction 'find-freenode-2a)
- ""
- ,(ee-template0 "\
+ (setq channels (or channels "{channels}"))
+ (let ((channel (car (ee-split channels))))
+ (apply 'find-elinks
+ `((find-freenode-links ,c ,channels)
+ (find-freenode-links "e" "#eev")
+ (find-freenode-links)
+ ;; Convention: the first sexp always regenerates the buffer.
+ ;; (find-efunction 'find-freenode-links)
+ ;; (find-efunction 'find-freenode-2a)
+ ""
+ ,(ee-template0 "\
+;; To copy this to your .emacs, use:
+;; (ee-copy-rest 3 '(find-fline \"~/.emacs\"))
+
+
+
+;; Use (setq rcirc-default-nick-name ...) to set your nickname.
+;; The default is to use \"#eev\" as the list of \"initial channels\",
+;; the same list as the list of channels to always reconnect to, and
+;; `M-x e3' and `M-x e2' to create the window setups described here:
+;;
+;; (find-rcirc-intro \"1. The example that I use in workshops\")
+;;
(setq rcirc-default-nick \"hakuryo\")
(setq rcirc-default-nick \"{(user-login-name)}\")
(setq ee-freenode-ichannels {(ee-pp0 ee-freenode-ichannels)})
@@ -366,11 +386,13 @@ This is like `find-rcirc-buffer-3a' but uses
(defun {c}2 () (interactive) (find-freenode-2a \"{channel}\"))
(defun {c}3 () (interactive) (find-freenode-3a \"{channel}\"))
")
- )
- pos-spec-list))
+ )
+ pos-spec-list)))
;; Tests: (find-freenode-links)
;; (find-freenode-links "e" "#eev")
+;; (find-freenode-links "e" "#eev #emacs")
+;; (find-rcirc-intro)
(provide 'eev-rcirc)
diff --git a/eev-tlinks.el b/eev-tlinks.el
index 06b0fcc..3e5a696 100644
--- a/eev-tlinks.el
+++ b/eev-tlinks.el
@@ -19,7 +19,7 @@
;;
;; Author: Eduardo Ochs <address@hidden>
;; Maintainer: Eduardo Ochs <address@hidden>
-;; Version: 2019mar05
+;; Version: 2019may16
;; Keywords: e-scripts
;;
;; Latest version: <http://angg.twu.net/eev-current/eev-tlinks.el>
@@ -61,13 +61,9 @@
;; «.find-debpkg-links» (to "find-debpkg-links")
;; «.find-eev-install-links» (to "find-eev-install-links")
;; «.find-eev-update-links» (to "find-eev-update-links")
-;; «.find-newhost-links» (to "find-newhost-links")
-;; «.find-dhmake-links» (to "find-dhmake-links")
;; «.find-youtubedl-links» (to "find-youtubedl-links")
-;; «.find-upload-links» (to "find-upload-links")
;; «.find-psne-links» (to "find-psne-links")
;; «.find-git-links» (to "find-git-links")
-;; «.find-netcat-test-links» (to "find-netcat-test-links")
;; «.find-eev-video-links» (to "find-eev-video-links")
;;
;; «.find-latex-links» (to "find-latex-links")
@@ -75,7 +71,6 @@
;; «.find-escreenshot-links» (to "find-escreenshot-links")
-
(require 'eev-env)
(require 'eev-wrap) ; For: (find-eev "eev-wrap.el" "ee-template0")
@@ -297,7 +292,7 @@ See: (find-eev \"eev-intro.el\")"
\(defun find-{stem}-intro (&rest pos-spec-list) (interactive)
(let ((ee-buffer-name \"*(find-{stem}-intro)*\"))
- (apply 'find-estring \"\\
+ (apply 'find-eintro \"\\
\\(Re)generate: (find-{stem}-intro)
Source code: (find-efunction 'find-{stem}-intro)
More intros: (find-eev-quick-intro)
@@ -420,7 +415,7 @@ Hello
,(ee-template0 "
;;; {stem-el} -- ???.
-;; Copyright (C) 2012 Free Software Foundation, Inc.
+;; Copyright (C) 2019 Free Software Foundation, Inc.
;;
;; This file is part of GNU eev.
;;
@@ -801,368 +796,6 @@ emacs -fg bisque -bg black
eev-readme.el
-;;; _ _
-;;; _ __ _____ _| |__ ___ ___| |_
-;;; | '_ \ / _ \ \ /\ / / '_ \ / _ \/ __| __|
-;;; | | | | __/\ V V /| | | | (_) \__ \ |_
-;;; |_| |_|\___| \_/\_/ |_| |_|\___/|___/\__|
-;;;
-;; «find-newhost-links» (to ".find-newhost-links")
-;; Scripts to connect to a newly-installed Debian machine
-;; (find-angg ".emacs.templates" "find-newhost-links")
-;; (find-find-links-links "newhost" "thatmname thatip thismname thisip
thisiface")
-;; (find-angg "bin/etc.lua" "inet_addr")
-
-;; New, not used yet:
-(defun ee-inet-addr (&optional iface str)
-"Return the IP after \"inet addr:\" in the output of \"/sbin/ifconfig IFACE\".
-The defaulr for IFACE is \"wlan0\". If STR is non-nil, pretend that the
-output of /sbin/ifconfig was STR (for debugging)."
- (setq iface (or iface "wlan0"))
- (setq str (or str (find-sh0 (format "/sbin/ifconfig %s" iface))))
- (if (string-match "inet addr:\\([0-9.]+\\)" str)
- (match-string 1 str)))
-;;
-;; See also: system-name
-
-(defvar ee-this-mname nil)
-(defvar ee-this-iface "wlan0")
-(defvar ee-this-ip nil)
-;;
-(defun ee-this-mname () (find-sh0 "uname -n"))
-(defun ee-this-ip (&optional iface)
- (find-sh0 (format "/sbin/ifconfig %s | etc.lua inet_addr"
- (or ee-this-iface iface))))
-;;
-;; (find-sh0 "uname -n")
-;; (find-sh0 "/sbin/ifconfig")
-;; (find-sh0 "/sbin/ifconfig wlan0")
-;; (find-sh0 "/sbin/ifconfig eth0")
-;; (setq ee-this-iface "wlan0")
-;; (setq ee-this-iface "eth0")
-;; (ee-this-mname)
-;; (ee-this-ip)
-;; (setq ee-this-mname (ee-this-mname))
-;; (setq ee-this-ip (ee-this-ip))
-
-(defun find-newhost-links (&optional thatmname thatip thismname thisip
thisiface &rest rest)
- "Visit a temporary buffer with an e-script to set up a new host."
- (interactive)
- (let ((thisdisplay))
- (setq thatmname (or thatmname "{thatmname}"))
- (setq thatip (or thatip "{thatip}"))
- (setq thismname (or thismname ee-this-mname "{thismname}"))
- (setq thisip (or thisip ee-this-ip "{thisip}"))
- (setq thisiface (or thisiface ee-this-iface "{thisiface}"))
- (setq thisdisplay (or (getenv "DISPLAY") "{thisdisplay}"))
- (apply 'find-elinks `(
- ;; Convention: the first sexp always regenerates the buffer.
- (find-newhost-links ,thatmname ,thatip ,thismname ,thisip ,thisiface)
- (find-newhost-links ,thatmname ,thatip ,ee-this-mname ,ee-this-ip
,ee-this-iface)
- (find-newhost-links ,thatmname ,thatip nil nil nil)
- (find-newhost-links ,thatmname ,thatip)
- (find-efunction 'find-newhost-links)
- ;; Body:
- ""
- ,(ee-template0 "\
-# Basic setup (on this machine, {thismname} - set thismname and thisip):
-# (find-sh0 \"/sbin/ifconfig wlan0\")
-# (find-sh0 \"/sbin/ifconfig eth0\")
-# (setq ee-this-iface \"wlan0\")
-# (setq ee-this-iface \"eth0\")
-# (ee-this-mname)
-# (ee-this-ip)
-# (setq ee-this-mname (ee-this-mname))
-# (setq ee-this-ip (ee-this-ip))
-# (find-newhost-links \"{thatmname}\" \"{thatip}\")
-
-# Make sure that we can refer to {thatmname} by name
-# (find-sh0 \"ls -l /etc/hosts\")
-# (find-sh0 \"sudo chmod 666 /etc/hosts\")
-# (kill-new \"{thatip} {thatmname}\")
-# (find-fline \"/etc/hosts\")
-# (find-fline \"/etc/hosts\" \"{thatmname}\")
-# (find-fline \"/etc/hosts\" \"{thatip}\")
-
-# Basic setup (on the remote machine, {thatmname} - by hand):
-# adduser edrx
-# (find-es \"sudo\" \"sudo\")
-# apt-get install openssh-server xterm
-# chmod 666 /etc/hosts
-# nano /etc/hosts
-# (kill-new \"{thisip} {thismname}\")
-
-# Try to connect:
-# (find-sh0 \"ssh-keygen -R {thatip}\")
-# (find-sh0 \"ssh-keygen -R {thatmname}\")
-
- (eepitch-shell)
- (eepitch-kill)
- (eepitch-shell)
-ssh address@hidden
-exit
-ssh address@hidden
-exit
-
-# Try file access by tramp
-# (find-fline \"/ssh:address@hidden:/\")
-# (find-fline \"/scp:address@hidden:/\")
-# (find-fline \"/ssh:address@hidden:/\")
-# (find-fline \"/scp:address@hidden:/\")
-
-;; If that works:
-\(code-c-d \"{thatmname}\" \"/scp:address@hidden:\")
-\(code-c-d \"{thatmname}\" \"/ssh:address@hidden:\")
-;; (find-{thatmname}file \"/\")
-;; (find-{thatmname}file \"/home/edrx/\")
-\(defun eepitch-{thatmname} () (interactive)
- (eepitch '(find-comintprocess \"ssh {thatmname}\" \"ssh address@hidden")))
-\(defun eepitch-{thatmname}root () (interactive)
- (eepitch '(find-comintprocess \"ssh {thatmname}\" \"ssh address@hidden")))
-
-
-# Make sure that the remote machine knows this hostname
-ssh address@hidden
- #
- # Does the remote machine know this hostname?
- echo \"{thisip} {thismname}\"
- cat /etc/hosts | grep {thismname}
- #
- # If it isn't there, add it:
- cat /etc/hosts
- ls -l /etc/hosts
- sudo chmod 666 /etc/hosts
- echo \"{thisip} {thismname}\" >> /etc/hosts
- cat /etc/hosts | grep {thismname}
- cat /etc/hosts
- #
- # Try to open a remote xterm on this X server
- # (find-sh0 \"xhost -\")
- # (find-sh0 \"xhost +\")
- DISPLAY={thisip}{thisdisplay} xterm -T \"address@hidden" &
- DISPLAY={thismname}{thisdisplay} xterm -T \"address@hidden" &
- exit
-
-
-# A high-level version of the above:
-# (find-sh0 \"xhost +\")
-# (find-{thatmname}file \"/etc/hosts\" \"{thismname}\")
-# (eekill \"{thisip} {thismname}\\n\")
-# (eekill \"# (setq backup-inhibited t)\\n\")
-
- (eepitch-{thatmname})
- (eepitch-kill)
- (eepitch-{thatmname})
-DISPLAY={thisip}{thisdisplay} xterm -T \"address@hidden" &
-DISPLAY={thismname}{thisdisplay} xterm -T \"address@hidden" &
-
-")
- ) rest)))
-
-;; (find-newhost-links)
-;; (find-newhost-links "gwen" "192.168.1.101")
-
-
-
-;;; _ _ _
-;;; __| | |__ _ __ ___ __ _| | _____
-;;; / _` | '_ \| '_ ` _ \ / _` | |/ / _ \
-;;; | (_| | | | | | | | | | (_| | < __/
-;;; \__,_|_| |_|_| |_| |_|\__,_|_|\_\___|
-;;;
-;; «find-dhmake-links» (to ".find-dhmake-links")
-;;
-;; Some templates for generating ".deb"s.
-;; If you want to build a .deb for a package called, say, "foo-bar",
-;; these scripts will use the directory "~/usrc/foo-bar/foo-bar_xxx/"
-;; to build it - that directory will be recreated from scratch each
-;; time - and the "override files for dhmake" will be taken from the
-;; directory "~/foo-bar/". At this moment these paths are hardcoded.
-;;
-;; I generate the 3 main packages at
-;; http://angg.twu.net/debian/
-;; http://angg.twu.net/debian/README.html
-;; with these commands:
-;; (find-dhmake-links "eev" "eevbuild")
-;; (find-dhmake-links "eev-puro" "eevpuro")
-;; (find-dhmake-links "eev-lua-extras" "eevluaextras")
-
-(defvar ee-dhmake-fullname "Eduardo Ochs")
-(defvar ee-dhmake-email "address@hidden")
-
-;; (find-estring-elisp (ee-dhmake-codecds "eev-puro" "eevpuro" "20120305"))
-;;
-(defun ee-dhmake-codecds (stem c date)
- (ee-template '(stem c date) "\
-;; Generated by:
-;; (ee-dhmake-codecds \"{stem}\" \"{c}\" \"{date}\")
-;;
-\(code-c-d \"{c}dh\" \"~/{stem}/\")
-\(code-c-d \"{c}dhd\" \"~/{stem}/debian/\")
-\(code-c-d \"{c}\" \"~/usrc/{stem}/{stem}-0.1.{date}/\")
-\(code-c-d \"{c}d\" \"~/usrc/{stem}/{stem}-0.1.{date}/debian/\")
-\(code-c-d \"{c}dd\" \"~/usrc/{stem}/{stem}-0.1.{date}/debian/{stem}/\")
-\(code-c-d \"{c}unp\" \"~/usrc/{stem}/{stem}-unpacked/\")
-;; (find-{c}dhfile \"\")
-;; (find-{c}dhdfile \"\")
-;; (find-{c}file \"\")
-;; (find-{c}dfile \"\")
-;; (find-{c}ddfile \"\")
-;; (find-{c}unpfile \"\")
-;; (find-{c}dsh \"find * | sort\")
-;; (find-{c}ddsh \"find * | sort\")
-;; (find-{c}unpsh \"find * | sort\")
-;; (find-status \"{stem}-deb\")
-;; (find-vldifile \"{stem}-deb.list\")
-;; (find-udfile \"{stem}-deb-puro/\")"))
-
-;; (find-estring (ee-dhmake-build "eev-puro" "eevpuro" "20120305"))
-;;
-(defun ee-dhmake-build (stem c date)
- (ee-template '(stem c date ee-dhmake-fullname ee-dhmake-email) "\
-# Generated by:
-# (ee-dhmake-build \"{stem}\" \"{c}\" \"{date}\")
-#
-rm -Rv ~/usrc/{stem}/
-mkdir -p ~/usrc/{stem}/
-mkdir ~/usrc/{stem}/{stem}-0.1.{date}/
-# ln -s {stem}-0.1.{date} ~/usrc/{stem}/{stem}-0.1
- ln -s {stem}-0.1.{date} {stem}-0.1
-cd ~/usrc/{stem}/{stem}-0.1.{date}/
-
-echo | \\
-DEBFULLNAME=\"{ee-dhmake-fullname}\" \\
- dh_make --email {ee-dhmake-email} \\
- --copyright=gpl \\
- --cdbs \\
- --native
-rm -v debian/README.Debian
-rm -v debian/*.EX
-rm -v debian/*.ex
-cp -iv debian/control debian/control.orig
-
-# (find-fline \"~/{stem}/debian/\")
-# (find-sh0 \"rm -Rv ~/{stem}/debian/\")
-mkdir -p ~/{stem}/debian/
-if [ ! -e ~/{stem}/Makefile ]; then
- echo Creating: ~/{stem}/Makefile
- echo \"clean:\" > ~/{stem}/Makefile
-fi
-if [ ! -e ~/{stem}/debian/control ]; then
- echo Creating: ~/{stem}/debian/control
- cp -v debian/control ~/{stem}/debian/control
-fi
-if [ ! -e ~/{stem}/debian/rules ]; then
- echo Creating: ~/{stem}/debian/rules
- cp -v debian/rules ~/{stem}/debian/rules
- echo \"build/{stem}::\" >> ~/{stem}/debian/rules
- echo \"install/{stem}::\" >> ~/{stem}/debian/rules
-fi
-
-# (find-{c}dh \"debian/\")
-# (find-{c}dh \"debian/control\")
-# (find-{c}dh \"debian/rules\")
-cp -v ~/{stem}/debian/* debian/
-cp -v ~/{stem}/Makefile .
-
-# (find-man \"1 dpkg-buildpackage\")
-# dpkg-buildpackage -us -uc -rfakeroot 2>&1 | tee odb
- dpkg-buildpackage -us -uc -b -rfakeroot 2>&1 | tee odb
-# (find-{c}file \"odb\")
-
-rm -Rv ~/usrc/{stem}/{stem}-unpacked/
-mkdir ~/usrc/{stem}/{stem}-unpacked/
-mkdir ~/usrc/{stem}/{stem}-unpacked/DEBIAN/
-cd ~/usrc/{stem}/
-ar p {stem}_*.deb control.tar.gz | tar -C {stem}-unpacked/DEBIAN/ -xvzf -
-ar p {stem}_*.deb data.tar.gz | tar -C {stem}-unpacked/ -xvzf -
-
-# (find-{c}unpfile \"\")
-# (find-{c}unpfile \"DEBIAN/\")
-# (find-{c}unpfile \"DEBIAN/control\")
-# (find-{c}unpsh \"find * | sort\")"))
-
-(defun find-dhmake-links (&optional stem c date &rest rest)
- "Visit a temporary buffer containing hyperlinks for dhmake."
- (interactive)
- (setq stem (or stem "{stem}"))
- (setq c (or c "{c}"))
- (setq date (or date (format-time-string "%Y%m%d")))
- (apply 'find-elinks `(
- ;; Convention: the first sexp always regenerates the buffer.
- (find-dhmake-links ,stem ,c ,date ,@rest)
- (find-efunction 'find-dhmake-links)
- ;; Body:
- ""
- ;; (find-estring-elisp (ee-dhmake-codecds ,stem ,c ,date))
- ;; (find-estring (ee-dhmake-build ,stem ,c ,date))
- ;; (eev (ee-dhmake-build ,stem ,c ,date))
- ;; (find-fline "$EE")
- ;; (find-fline (format "~/%s/debian/" stem))
- ;; (find-sh0 ,(format "rm -Rv ~/%s/debian/" stem))
- ;; ""
- ,(ee-template `(stem c date) "\
-# Set up the build script that `ee' will execute:
-# (find-estring-elisp (ee-dhmake-codecds \"{stem}\" \"{c}\" \"{date}\"))
-# (find-estring (ee-dhmake-build \"{stem}\" \"{c}\" \"{date}\"))
-# (eev (ee-dhmake-build \"{stem}\" \"{c}\" \"{date}\"))
-# (find-fline \"$EE\")
-
-# Examine its main control files:
-# (find-fline \"~/{stem}/debian/rules\")
-# (find-fline \"~/{stem}/debian/control\")
-# (find-fline \"~/{stem}/debian/\")
-
- (eepitch-shell)
- (eepitch-kill)
- (eepitch-shell)
-ee
-cd ~/usrc/{stem}/
-ls -lF *.deb
-sudo dpkg -i {stem}*.deb
-# sudo dselect update
-
-# (find-status \"{stem}\")
-# (find-vldifile \"{stem}.list\")
-# (find-udfile \"{stem}/\")
-
-
-# Upload to angg.twu.net.
-# (THIS IS A HACK!)
-# (find-twusfile \"debian/\")
-
- (eepitch-eshell)
-cd ~/usrc/{stem}/
-ls -l {stem}_0.1.{date}_all.deb
-cp -v {stem}_0.1.{date}_all.deb (ee-twusfile \"debian/\")
-ls -l (ee-twusfile \"debian/\")
-# (find-twusfile \"debian/\")
-
- (eepitch-Twu)
-cd ~/slow_html/debian/
-mkdir -p dists/./main/binary-i386/
-mkdir -p dists/./main/binary-amd64/
-ls -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
-")
- ) rest))
-
-;; (find-dhmake-links)
-;; (find-dhmake-links "{stem}" "{c}" "{date}")
-;; (find-dhmake-links "foo-bar" "foobar")
-;; (find-dhmake-links "eev" "eevbuild")
-;; (find-dhmake-links "eev" "eevbuild" "20120404")
-
-
-
-
-
;;; _ _ _ _
;;; _ _ ___ _ _| |_ _ _| |__ ___ __| | |
;;; | | | |/ _ \| | | | __| | | | '_ \ / _ \_____ / _` | |
@@ -1328,119 +961,6 @@ cd {dir}
-;;; _ _ _ _ _
-;;; | | | |_ __ | | ___ __ _ __| | __ _ _ __ __| |
-;;; | | | | '_ \| |/ _ \ / _` |/ _` | / _` | '_ \ / _` |
-;;; | |_| | |_) | | (_) | (_| | (_| | | (_| | | | | (_| |
-;;; \___/| .__/|_|\___/ \__,_|\__,_| \__,_|_| |_|\__,_|
-;;; |_|
-;;; _ _ _
-;;; __| | _____ ___ __ | | ___ __ _ __| |
-;;; / _` |/ _ \ \ /\ / / '_ \| |/ _ \ / _` |/ _` |
-;;; | (_| | (_) \ V V /| | | | | (_) | (_| | (_| |
-;;; \__,_|\___/ \_/\_/ |_| |_|_|\___/ \__,_|\__,_|
-;;;
-;; «find-upload-links» (to ".find-upload-links")
-
-;; 2019mar05: commented out. This will be deleted soon.
-;; 2012jan26 - experimental hack.
-;; Some of these functions use environment variables for readability
-;; (i.e., to make the shell scripts more readable).
-;; Default values (all for angg.twu.net):
-
-;; (ee-setenv "MYPAGEDIR" "/scp:address@hidden:public_html")
-;; (ee-setenv "MYPAGEURL" "http://angg.twu.net")
-;; (ee-setenv "DNPAGEURL" "http://angg.twu.net")
-;;
-;; (defun ee-upload-links (fromdir/ todir/ fname)
-;; "An internal function used by `find-upload-links'.
-;; Try this: (find-elinks (ee-upload-links \"eev-current/eev-template.el\"))"
-;; (let ((dir (file-name-directory (ee-expand fname)))
-;; (fname- (file-name-nondirectory fname))
-;; (mypagedir (getenv "MYPAGEDIR"))
-;; (mypageurl (getenv "MYPAGEURL"))
-;; )
-;; `("# Env vars (current values):"
-;; (setenv "MYPAGEDIR" ,(getenv "MYPAGEDIR"))
-;; (setenv "MYPAGEURL" ,(getenv "MYPAGEURL"))
-;; ,(ee-template0 "\
-;; # Upload (warning: SLOW, uses tramp!):
-;; (eepitch-eshell)
-;; cp -v ~/{fromdir/}{fname} $MYPAGEDIR/{todir/}{fname}
-;; ls -l ~/{fromdir/}{fname} $MYPAGEDIR/{todir/}{fname}\n
-;; # Test:
-;; (eepitch-shell)
-;; (eepitch-kill)
-;; (eepitch-shell)
-;; cd /tmp/
-;; wget -N {mypageurl}/{fname}
-;; ls -l /tmp/{fname-} ~/{fname}
-;; # (find-fline \"/tmp/{fname-}\")"))))
-;;
-;; (defun ee-download-links (fromdir/ todir/ fname)
-;; "Visit a temporary buffer containing a script for downloading FNAME."
-;; (setq fromdir/ (or fromdir/ (file-name-directory fname)))
-;; (setq todir/ (or todir/ (file-name-directory fname)))
-;; (let ((fname- (file-name-nondirectory fname))
-;; (dnpageurl (getenv "DNPAGEURL")))
-;; `(,(ee-template `(fromdir/ todir/ fname fname- dnpageurl) "\
-;; # Download:
-;; (eepitch-shell)
-;; (eepitch-kill)
-;; (eepitch-shell)
-;; cd /tmp/
-;; wget -N {dnpageurl}/{fromdir/}{fname}
-;; ls -l /tmp/{fname-} ~/{todir/}{fname}
-;; cp -v /tmp/{fname-} ~/{todir/}{fname}
-;; # (diff \"/tmp/{fname-}\" \"~/{todir/}{fname}\")
-;; # (find-tkdiff \"/tmp/{fname-}\" \"~/{todir/}{fname}\")
-;; # (find-fline \"/tmp/{fname-}\")
-;; # (find-fline \"~/{todir/}{fname}\")"))))
-;;
-;; (defun find-upload-links (&optional fromdir/ todir/ fname &rest rest)
-;; "Visit a temporary buffer containing a script for uploading FNAME."
-;; (interactive)
-;; (setq fname (or fname "{fname}"))
-;; (setq fromdir/ (or fromdir/ (file-name-directory fname)))
-;; (setq todir/ (or todir/ (file-name-directory fname)))
-;; (let ((ee-hyperlink-prefix "# "))
-;; (apply 'find-elinks `(
-;; ;; Convention: the first sexp always regenerates the buffer.
-;; (find-upload-links ,fromdir/ ,todir/ ,fname ,@rest)
-;; ;; The second sexp generates the corresponding download link.
-;; (find-download-links ,fname ,@rest)
-;; ""
-;; ,@(ee-upload-links fromdir/ todir/ fname)) rest)))
-;;
-;; (defun find-download-links (&optional fromdir/ todir/ fname extras &rest
rest)
-;; "Visit a temporary buffer containing a script for downloading FNAME."
-;; (interactive)
-;; (setq fname (or fname "{fname}"))
-;; (setq fromdir/ (or fromdir/ (file-name-directory fname)))
-;; (setq todir/ (or todir/ (file-name-directory fname)))
-;; (apply 'find-elinks `(
-;; ;; Convention: the first sexp always regenerates the buffer.
-;; (find-download-links ,fromdir/ ,todir/ ,fname ,@rest)
-;; ;; Body:
-;; ""
-;; ,@(ee-download-links fromdir/ todir/ fname)
-;; ,@extras) rest))
-;;
-;; (defun ut ()
-;; (interactive)
-;; "Upload eev-template.el"
-;; (find-upload-links "eev-current/" "eev-current/" "eev-template.el"))
-;;
-;; (defun dt ()
-;; (interactive)
-;; "Download eev-template.el and load the new version."
-;; (find-download-links
-;; "eev-current/" "emacs/eev/" "eev-template.el"
-;; '("\n (load \"eev-template.el\")")))
-
-
-
-
;;;
;;; _ __ ___ _ __ ___
;;; | '_ \/ __| '_ \ / _ \
diff --git a/eev-wrap.el b/eev-wrap.el
index 0c7f00a..0b42756 100644
--- a/eev-wrap.el
+++ b/eev-wrap.el
@@ -169,7 +169,7 @@ have to run an \"undo\"."
"An internal function used by `ee-wrap-anchor'."
(ee-template0 (ee-tolatin1 "\
{prefix}«.{anchor}»\t(to \"{anchor}\")
-{prefix}«{anchor}» (to \".{anchor}\")")))
+{prefix}«{anchor}» (to \".{anchor}\")")))
diff --git a/eev.el b/eev.el
index 1e2e904..73a24dd 100644
--- a/eev.el
+++ b/eev.el
@@ -3,10 +3,10 @@
;; Copyright (C) 2019 Free Software Foundation, Inc.
;; Author: Eduardo Ochs <address@hidden>
-;; Package-Requires: ((emacs "24.3"))
+;; Package-Requires: ((emacs "24.1"))
;; Keywords: lisp e-scripts
;; URL: http://angg.twu.net/#eev
-;; Version: 20190410
+;; Version: 20190425
;; 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