emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/eev 3950e1e 16/64: First commit in two years; `find-eev


From: Stefan Monnier
Subject: [elpa] externals/eev 3950e1e 16/64: First commit in two years; `find-eev-quick-intro', `to-latin1', and lots more
Date: Sun, 7 Apr 2019 16:59:04 -0400 (EDT)

branch: externals/eev
commit 3950e1e6f071d0175e57ffdd6a0bfb939d5b7b0d
Author: Eduardo Ochs <address@hidden>
Commit: Eduardo Ochs <address@hidden>

    First commit in two years; `find-eev-quick-intro', `to-latin1', and lots 
more
---
 VERSION        |   4 +-
 eejump.el      |  18 +-
 eev-anchors.el |  32 +++-
 eev-blinks.el  |  29 +++-
 eev-env.el     |  77 ++++++++-
 eev-intro.el   | 524 ++++++++++++++++++++++++++++++++++++++++++++++++++++-----
 eev-pdflike.el |   4 +
 eev-tlinks.el  |  96 ++++++++---
 eev-wrap.el    |  32 +++-
 9 files changed, 720 insertions(+), 96 deletions(-)

diff --git a/VERSION b/VERSION
index acadc47..1499217 100644
--- a/VERSION
+++ b/VERSION
@@ -1,2 +1,2 @@
-Tue Jun 30 20:41:22 GMT 2015
-Tue Jun 30 17:41:22 BRT 2015
+Dom Jul 30 04:10:51 GMT 2017
+Dom Jul 30 01:10:51 BRT 2017
diff --git a/eejump.el b/eejump.el
index b50ec93..f4b5d4e 100644
--- a/eejump.el
+++ b/eejump.el
@@ -1,6 +1,6 @@
 ;;; eejump.el -- jump quickly to predefined places.
 
-;; Copyright (C) 2012 Free Software Foundation, Inc.
+;; Copyright (C) 2012,2016 Free Software Foundation, Inc.
 ;;
 ;; This file is (not yet?) part of GNU eev.
 ;;
@@ -19,21 +19,26 @@
 ;;
 ;; Author:     Eduardo Ochs <address@hidden>
 ;; Maintainer: Eduardo Ochs <address@hidden>
-;; Version:    2013sep08
+;; Version:    2016sep23
 ;; Keywords:   e-scripts
 ;;
 ;; Latest version: <http://angg.twu.net/eev-current/eejump.el>
 ;;       htmlized: <http://angg.twu.net/eev-current/eejump.el.html>
 ;;       See also: <http://angg.twu.net/eev-current/eev-readme.el.html>
 ;;                 <http://angg.twu.net/eev-intros/find-eev-intro.html>
+;;                 <http://angg.twu.net/eev-intros/find-eev-quick-intro.html>
 ;;                 <http://angg.twu.net/eev-intros/find-eejump-intro.html>
 ;;                                                (find-eev-intro)
+;;                                                (find-eev-quick-intro)
 ;;                                                (find-eejump-intro)
 
 ;;; Commentary:
 
-;; See: (find-eejump-intro)
-;; and: (find-eev "eev-wrap.el" "eewrap-eejump")
+;; See: (find-eev-quick-intro "7.1. eejump")
+;;      (find-eev-quick-intro "7.1. eejump" "meta-uppercase-j")
+;;      (find-eejump-intro)
+;;      (find-eev "eev-wrap.el" "eewrap-eejump")
+;;      (find-eev "eev-blinks.el" "find-eejumps")
 
 
 
@@ -44,10 +49,11 @@
 (define-key eev-mode-map "\M-j" 'eejump)
 
 (defun eejump (arg)
-  "See: (find-eejump-intro)"
+  "See: (find-eev-quick-intro \"7.1. eejump\")
+and: (find-eejump-intro)"
   (interactive "P")
   (if (null arg)
-      (eejump-*)
+      (find-eejumps)                   ; was: (eejump-*)
     (if (fboundp (intern (format "eejump-%d" arg)))
        (funcall (intern (format "eejump-%d" arg)))
       (eejump-str* (format "%d" arg)))))
diff --git a/eev-anchors.el b/eev-anchors.el
index d39c1f4..ab963b1 100644
--- a/eev-anchors.el
+++ b/eev-anchors.el
@@ -64,6 +64,30 @@
 
 
 
+;;;                  _        _       _   _       _ 
+;;;   ___  ___      | |_ ___ | | __ _| |_(_)_ __ / |
+;;;  / _ \/ _ \_____| __/ _ \| |/ _` | __| | '_ \| |
+;;; |  __/  __/_____| || (_) | | (_| | |_| | | | | |
+;;;  \___|\___|      \__\___/|_|\__,_|\__|_|_| |_|_|
+;;;                                                 
+;; 2017jul29: this is a low-level hack to allow anchors like "�tag�"
+;; to work on both unibyte and multibyte buffers and files without
+;; requiring the user to set the variable `ee-anchor-format' in the
+;; local variables section.
+
+(defun ee-to-coding (coding str)
+  (ee-no-properties (decode-coding-string str coding)))
+
+(defun ee-tolatin1 (str)
+  "Make STR compatible with both unibyte and multibyte buffers.
+Convert STR to a multibyte format that works in both
+unibyte (raw-text) and multibyte (e.g., utf-8) buffers. This may
+fail if STR contains chars that are not in the latin-1 range.
+This function is used by `ee-format-as-anchor'."
+  (ee-to-coding 'latin-1 str))
+
+
+
 
 ;;;                   _                      __                            _   
 ;;;   __ _ _ __   ___| |__   ___  _ __      / _| ___  _ __ _ __ ___   __ _| |_ 
@@ -81,7 +105,7 @@
 (defun ee-format-as-anchor (tag)
   "Convert TAG into an anchor using `ee-anchor-format'."
   (if ee-anchor-format
-      (format ee-anchor-format tag)
+      (format (ee-tolatin1 ee-anchor-format) tag)
     (error "`ee-anchor-format' is nil - can't convert string to anchor")))
 
 
@@ -107,9 +131,9 @@ searches for the first occurrence of \"<<foo>>\" in the 
current
 buffer, then for the first occurrence of \"bar\" after that. If
 \"<<foo>>\" is not found then do not move point.
 
-It is good style to set `ee-goto-anchor' globally to nil and only
-use anchors in files where `ee-anchor-format' is declared in the
-local variables section of the file; see:
+It is good style to set `ee-anchor-format' globally to nil and
+only use anchors in files where `ee-anchor-format' is declared in
+the local variables section of the file; see:
 
   (find-node \"(emacs)File Variables\")
   (find-node \"(emacs)Specifying File Variables\")
diff --git a/eev-blinks.el b/eev-blinks.el
index a495666..732a1d2 100644
--- a/eev-blinks.el
+++ b/eev-blinks.el
@@ -3,7 +3,7 @@
 ;;; and that are not created by `code-c-d' and friends.
 
 ;; Copyright (C) 1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,
-;; 2009,2010,2011,2012,2013,2014 Free Software Foundation, Inc.
+;; 2009,2010,2011,2012,2013,2014,2016 Free Software Foundation, Inc.
 ;;
 ;; This file is (not yet) part of GNU eev.
 ;;
@@ -22,7 +22,7 @@
 ;;
 ;; Author:     Eduardo Ochs <address@hidden>
 ;; Maintainer: Eduardo Ochs <address@hidden>
-;; Version:    2014oct10
+;; Version:    2016apr20
 ;; Keywords:   e-scripts
 ;;
 ;; Latest version: <http://angg.twu.net/eev-current/eev-blinks.el>
@@ -51,6 +51,7 @@
 ;; �.find-Package�             (to "find-Package")
 ;; �.find-epp�                 (to "find-epp")
 ;; �.find-einternals�          (to "find-einternals")
+;; �.find-eejumps�             (to "find-eejumps")
 
 
 
@@ -791,9 +792,11 @@ Examples: (find-echarsetchars 'mule-unicode-0100-24ff 
\"733x\")
 ;;; |_| |_|_| |_|\__,_|      \___|\___|/ |\__,_|_| |_| |_| .__/|___/
 ;;;                                  |__/                |_|        
 ;;
-;; A hack to diplay all the current eejump targets.
-;; Should this be here? See: (find-eev "eejump.el")
-;; Try: (find-eejumps)
+;; �find-eejumps� (to ".find-eejumps")
+;; Display all the current eejump targets.
+;; Related to: (find-eev "eejump.el")
+;; Try:        (find-eejumps)
+;; See:        (find-eev-quick-intro "find-eejumps")
 
 (defun ee-defun-sexp-for (symbol) 
   `(defun ,symbol ,@(cdr (symbol-function symbol))))
@@ -803,13 +806,23 @@ Examples: (find-echarsetchars 'mule-unicode-0100-24ff 
\"733x\")
    "^(defun \\([^ ]+\\) nil " "(defun \\1 () "
    (ee-S (ee-defun-sexp-for symbol))))
 
-(defun eejump-symbols ()
+(defun ee-eejump-symbols ()
   (apropos-internal "^eejump-[0-9]*\\*?$"))
 
+(defun ee-find-eejumps-header ()
+  ";; (find-eejumps)
+;; See: (find-eev-quick-intro \"7.1. eejump\")
+;;      (find-eejump-intro)
+;; Current eejump targets:\n\n")
+
+(defun ee-find-eejumps-body ()
+  (mapconcat 'ee-defun-str-for (ee-eejump-symbols) "\n"))
+
 (defun find-eejumps (&rest pos-spec-list) (interactive)
+  "See: (find-eev-quick-intro \"find-eejumps\")"
   (apply 'find-estring-elisp
-        (concat ";; (find-eejumps)\n\n"
-                (mapconcat 'ee-defun-str-for (eejump-symbols) "\n"))
+        (concat (ee-find-eejumps-header)
+                (ee-find-eejumps-body))
         pos-spec-list))
 
 
diff --git a/eev-env.el b/eev-env.el
index 1db1e66..c520408 100644
--- a/eev-env.el
+++ b/eev-env.el
@@ -1,6 +1,6 @@
 ;;; eev-env.el -- set some environment variables.
 
-;; Copyright (C) 2012 Free Software Foundation, Inc.
+;; Copyright (C) 2012,2016 Free Software Foundation, Inc.
 ;;
 ;; This file is (not yet?) part of GNU eev.
 ;;
@@ -19,7 +19,7 @@
 ;;
 ;; Author:     Eduardo Ochs <address@hidden>
 ;; Maintainer: Eduardo Ochs <address@hidden>
-;; Version:    2012nov02
+;; Version:    2016sep18
 ;; Keywords:   e-scripts
 ;;
 ;; Latest version: <http://angg.twu.net/eev-current/eev-env.el>
@@ -56,20 +56,79 @@
 ;; (find-eevrcfile ".bashrc")
 ;; (find-eevrcfile ".zshrc")
 
+;; Note: `ee-setenv' and its calls for "S" and "EEVDIR" were moved to:
+;;   (find-eev "eev.el" "ee-setenv")
+;;
 (defun ee-setenv (envvar value)
   "In case the environment variable ENVVAR was not set set it to VALUE."
   (if (null (getenv envvar))
       (setenv envvar (ee-expand value))))
 
-(ee-setenv "S" "~/snarf")      ; for `find-psne-links'
+(ee-setenv "S" "~/snarf")       ; for `find-psne-links'
 
-;; Obsolete? See:
-;; (find-eev "eev-bounded.el")
-;; (find-eev "eev.el" "ee-setenv")
 (ee-setenv "EEVDIR"
-          (let ((fname (locate-library "eev")))
-            (if fname (directory-file-name (file-name-directory fname))
-              "~/eev-current")))       ; eev.el, etc
+           (let ((fname (locate-library "eev")))
+             (if fname (directory-file-name (file-name-directory fname))
+               "~/eev-current")))       ; eev.el, etc
+
+
+
+
+;;;                          _ _   _                           
+;;;   ___  ___     __      _(_) |_| |__         ___ _ ____   __
+;;;  / _ \/ _ \____\ \ /\ / / | __| '_ \ _____ / _ \ '_ \ \ / /
+;;; |  __/  __/_____\ V  V /| | |_| | | |_____|  __/ | | \ V / 
+;;;  \___|\___|      \_/\_/ |_|\__|_| |_|      \___|_| |_|\_/  
+;;;                                                            
+;; `ee-with-env' run a sexp in a modified environment.
+;; Tests:
+;;
+;; (ee-with-env '(("FOO" "~/foo") ("FOOL" "oo")) '(find-sh0 "set | grep -a 
FOO"))
+;; (ee-with-env '(("FOO" "~/foo")  "FOOL=oo")    '(find-sh0 "set | grep -a 
FOO"))
+;; (ee-with-env    "FOO=~/foo       FOOL=oo"     '(find-sh0 "set | grep -a 
FOO"))
+;; (ee-with-env    ""                            '(find-sh0 "set | grep -a 
FOO"))
+;;
+;; (ee-with-env0 '("A" "B=" "C=~/foo" ("D") ("E" "") ("F" "$SHELL")))
+;;   --> ("A" "B=" "C=/home/edrx/foo" "D" "E=" "F=/usr/bin/zsh")
+;; (ee-with-env0 "A B= C=~/foo")
+;;   --> ("A" "B=" "C=/home/edrx/foo")
+;;
+;; See:
+;; (find-evardescr 'process-environment "without \"=VALUE\"")
+;; (find-evardescr 'process-environment "first one")
+
+(defun ee-with-env (changes code)
+  "Run the sexp CODE with the changes CHANGES in the environment.
+CHANGES can be a list of (\"VAR\" \"VALUE\") pairs, a list of
+\"VAR=VALUE\" strings, or a string that is split into
+\"VAR=VALUE\" substrings at whitespace. Each \"VALUE\" is
+expanded with `ee-expand'.\n
+See the source for details, examples, and tests."
+  (eval `(let ((process-environment
+               (append (ee-with-env0 ',changes) process-environment)))
+          ,code)))
+
+(defun ee-with-env0 (changes)
+  "An internal function used by `ee-with-env'. See the source."
+  (mapcar 'ee-with-env00 (if (stringp changes) (ee-split changes) changes)))
+
+(defun ee-with-env00 (change)
+  "An internal function used by `ee-with-env'. See the source."
+  (if (stringp change)                               
+      ;; cases "A", "B=", "C=...":
+      (let ((pos (string-match "=" change)))
+       (if (not pos)                                 
+           change                                   ; case "A"
+         (let ((var (substring change 0 pos))        
+               (val (substring change (1+ pos))))
+           (format "%s=%s" var (ee-expand val)))))  ; cases "B=" and "C=..."
+    ;; cases ("D"), ("E" ""), ("F" "$FOO"):
+    (if (not (cdr change))
+       (car change)                                  
+      (format "%s=%s" (car change) (ee-expand (cadr change))))))
+
+
+
 
 (provide 'eev-env)
 
diff --git a/eev-intro.el b/eev-intro.el
index 6ec295c..93aa788 100644
--- a/eev-intro.el
+++ b/eev-intro.el
@@ -1,6 +1,6 @@
 ;;; eev-intro.el --- intro scripts for eev
 
-;; Copyright (C) 2013,2014 Free Software Foundation, Inc.
+;; Copyright (C) 2013,2014,2016,2017 Free Software Foundation, Inc.
 ;;
 ;; This file is (not yet?) part of GNU eev.
 ;;
@@ -19,7 +19,7 @@
 ;;
 ;; Author:     Eduardo Ochs <address@hidden>
 ;; Maintainer: Eduardo Ochs <address@hidden>
-;; Version:    2014aug23
+;; Version:    2017jul29
 ;; Keywords:   e-scripts
 ;;
 ;; Latest version: <http://angg.twu.net/eev-current/eev-intro.el>
@@ -31,6 +31,7 @@
 ;;; Commentary:
 ;;
 ;; To use this, simply execute any of the sexps below:
+;;   (find-eev-quick-intro)
 ;;   (find-eev-intro)
 ;;   (find-eval-intro)
 ;;   (find-eepitch-intro)
@@ -117,6 +118,7 @@ Here is a list of all the available sandbox-y tutorials that
 explain parts and concepts of eev, listed in (a kind of)
 recommended reading order:
 
+  00. (find-eev-quick-intro)
    0. (find-eev-intro)
    1. (find-eval-intro)
    2. (find-eepitch-intro)
@@ -137,8 +139,8 @@ recommended reading order:
   18. (find-channels-intro)
   19. (find-videos-intro)
 
-Items 1 and 2 should give you a good grasp of the main ideas -
-namely, that _elisp hyperlinks and interactive scripts can be
+Items 00, 1 and 2 should give you a good grasp of the main ideas
+- namely, that _elisp hyperlinks and interactive scripts can be
 embedded anywhere_. The other tutorials mainly show how to make
 these ideas pervasive.
 
@@ -5387,12 +5389,13 @@ The most basic keys of eev are:
   M-e   - to follow a hyperlink, see: (find-eval-intro \"Elisp hyperlinks\")
   M-k   - to go back,            see: (find-eval-intro \"\\nGoing back\")
   M-j   - to jump to certain predefined places - in particular,
-         `M-j' takes you to the list of jump targets in (find-eev 
\"eejump.el\")
+         `M-j' takes you to the list of jump targets.
         `M-2j' takes you to this help page.
         `M-5j' takes you to: (find-eev-intro)
          See: (find-eejump-intro \"Families\")
   M-h M-h - hyperlinks to here, plus help.
-         See: (find-links-intro \"`find-here-links'\")
+         See: (find-eev-quick-intro \"7.1. eejump\")
+              (find-links-intro \"`find-here-links'\")
 
 
 The mnemonics are:
@@ -5622,7 +5625,7 @@ http://www.youtube.com/watch?v=oJTwQvgfgMM Emacs Org-mode 
- a system for note-ta
 (defun find-eev-quick-intro (&rest pos-spec-list) (interactive)
   (let ((ee-buffer-name "*(find-eev-quick-intro)*"))
     (apply 'find-estring "\
-\\(Re)generate: (find-eev-quick-intro)
+\(Re)generate: (find-eev-quick-intro)
 Source code:  (find-efunction 'find-eev-quick-intro)
 More intros:  (find-eev-intro)
               (find-eval-intro)
@@ -5633,16 +5636,18 @@ Is is meant as both a tutorial and a sandbox.
 
 This is a tutorial for real beginners.
 It supposes that you have Emacs installed.
+You may start by watching:
 
+  http://angg.twu.net/eev-videos/video-eev-quick-0.mp4  (installation basics)
+  http://angg.twu.net/eev-videos/video-eev-quick-1.mp4  (about this tutorial)
+  http://angg.twu.net/eev-videos/video4-eepitch.mp4  (all of eev's main ideas)
 
-1. Installing eev
-=================
-Start by watching the video at
 
-  http://angg.twu.net/eev-videos/eev-quick.mp4
 
-to see how things should look like.
-Then open the page at
+
+1. Installing eev
+=================
+Open the page at
 
   http://angg.twu.net/eev-intros/find-eev-quick-intro.html
 
@@ -5742,13 +5747,25 @@ hyperlinks:
   (find-efunctiondescr 'find-file)
   (find-man \"cat\")
 
+Not all elisp hyperlinks \"go somewhere\"; some are like buttons that
+perform an action, like the one below, that acts as if the user had
+pressed a series of keys,
+
+  (eek \"<down> C-a H E L L O ! <up> C-e\")
+
+and some display their output in the echo area:
+
+  (find-sh0 \"date\")
+
 The following elisp hyperlinks may or may not work - try them too, but
-be aware that they may show errors instead of opening a new browser.
-The first one opens a page - actually a section, whose short title is
-\"Lisp Eval\" - from the main Emacs manual. The second one opens the
-file with the source code (in Lisp) for the function `find-file'.
+be aware that they may show errors instead of opening a new buffer.
+The first two of them open a page - actually a section, whose short
+title is \"Lisp Eval\" - from the main Emacs manual. The third one
+opens the file with the source code (in Lisp) for the function
+`find-file'.
 
   (find-node \"(emacs)Lisp Eval\")
+  (find-enode       \"Lisp Eval\")
   (find-efunction 'find-file)
 
 If they don't work that means that you don't have the Emacs manuals,
@@ -5764,20 +5781,78 @@ access to the \"non-free\" respository... ask for help 
if you need!
 
 
 
+
 4. Creating Elisp Hyperlinks
 ============================
-You can write elisp hyperlinks by hand, but that is hard.
+You can write elisp hyperlinks by hand, but that is hard. It is better
+to generate hyperlinks automatically and then use cut and paste.
+
+Eev has several functions that generate \"elisp hyperlinks\" buffers.
+For example,
+
+  (find-efunction-links 'find-file)
+
+creates this buffer, and switches to it:
+   ___________________________________________________________
+  |# (find-efunction-links 'find-file)                        |
+  |# (where-is 'find-file)                                    |
+  |# (describe-function 'find-file)                           |
+  |# (find-efunctiondescr 'find-file)                         |
+  |# (find-efunction 'find-file)                              |
+  |# (find-efunctionpp 'find-file)                            |
+  |# (find-efunctiond 'find-file)                             |
+  |# (find-estring (documentation 'find-file))                |
+  |# (find-estring (documentation 'find-file t))              |
+  |# (symbol-file 'find-file 'defun)                          |
+  |# (find-fline (symbol-file 'find-file 'defun))             |
+  |                                                           |
+  |# (Info-goto-emacs-command-node 'find-file)                |
+  |# (find-enode \"Command Index\" \"* find-file:\")              |
+  |# (find-elnode \"Index\" \"* find-file:\")                     |
+  |                                                           |
+  |                                                           |
+  |--:**-  *Elisp hyperlinks*   All L1     (Fundamental eev)--|
+  |___________________________________________________________|
+
+One standard way of using eev is:
+
+  a) we keep our current notes in a a file - for example, \"~/TODO\"
+  b) these notes are an \"executable log\" of what we did, including:
+     c) hyperlinks to things we saw or visited
+     d) commands issued to shells or shell-like programs (see sec. 6)
+
+The quickest way of generating hyperlinks for (c) is with `M-h M-h'
+\(`find-here-links'). When we type `M-h M-h' eev tries to generate an
+elisp hyperlinks buffer containing some hyperlinks to \"here\" - and how
+it does that depends on the major mode and on the name of the current
+buffer. For example, typing `M-h M-h' here generates:
+
+   ____________________________________________________________
+  |# See:                                                      |
+  |# (find-links-intro \"`find-here-links'\")                    |
+  |# (find-efunctiondescr 'eev-mode \"M-h M-h\")                 |
+  |                                                            |
+  |http://angg.twu.net/eev-intros/find-eev-quick-intro.html    |
+  |# (find-eev-quick-intro)                                    |
+  |                                                            |
+  |                                                            |
+  |--:**-  *Elisp hyperlinks*   All L1     (Fundamental eev)  -|
+  |____________________________________________________________|
+
+The
+
+  # (find-eev-quick-intro)
+
+opens this tutorial.
+
+Cutting and pasting is explained briefly in section 5.2.
+
+A way to \"refine\" hyperlinks to make them more precise is
+explained here:
+
+  (find-eval-intro \"Producing and refining hyperlinks\")
 
-The \"normal\" way of using eev is to use hyperlinks a lot - every time
-you find something interesting you put a hyperlink to it into the file
-where you keeping your notes, so that it will be trivial to go back
-there later.
 
-When you type `M-h M-h' you get a temporary buffer with lots of
-hyperlinks, some of them pointing to where you were before typing `M-h
-M-h'. By using cut and paste between that buffer and where you keep
-you notes, creating hyperlinks become easy... but we will see how to
-do cut and paste and how to edit files later.
 
 
 
@@ -5795,7 +5870,7 @@ I've learned by heart after using Emacs for 20 years:
 
   (find-emacs-intro \"Basic keys (Emacs)\")
 
-They are not very many, because I use this,
+They are not very many, because I use this a lot,
 
   (find-node \"(emacs)M-x\")
 
@@ -5807,6 +5882,95 @@ type `M-2 M-j'.
 
 
 
+5.1. Navigating the Emacs manuals
+---------------------------------
+The Emacs manuals are in \"info\" format, which means:
+
+  a) they are divided into \"nodes\" - a top node, and chapters,
+     sections, subsections, etc,
+
+  b) the nodes in each manual in info format are organized as a tree,
+     and they're all numbered except for the top node, the indexes and
+     the appendixes. For example:
+
+       top --.-- 1 --.-- 1.1
+             |       `-- 1.2
+             |-- 2
+             |-- 3 ----- 3.1 --.-- 3.1.1
+             |                 |-- 3.1.2
+             |                 `-- 3.1.3
+             |-- Appendix A 
+             `-- Index
+
+  c) each node also has a short name. Elisp hyperlinks use the
+     (internal) name of the manual and the short name to jump straight
+     to a node in a manual. The table below has some examples:
+
+       Manual (full name)   Node \"number\"    elisp hyperlink
+       -----------------------------------------------------
+       Emacs                Top             (find-node \"(emacs)\")
+       Emacs                7               (find-node \"(emacs)Basic\")
+       Emacs                7.4             (find-node \"(emacs)Basic Undo\")
+       Emacs                Concept Index   (find-node \"(emacs)Concept 
Index\")
+       Emacs Lisp           Top             (find-node \"(elisp)\")
+
+  d) Emacs uses \"Info mode\" when displaying nodes of manuals in info
+     format. These are the most important keys of Info mode:
+
+       q         exit                (go back to some other buffer) 
+       (arrows)  move point
+       RET       follow link at point
+       TAB       move to next link
+       BACKTAB   move to prev link
+       n         next                (1->2->3->Appendix A; 3.1.1->3.1.1->3.1.2)
+       p         previous            (1<-2<-3<-Appendix A; 3.1.1<-3.1.1<-3.1.2)
+       u         up                  (Top<-1<-1.1; 1<-1.2; 3<-3.1<-3.1.2, etc)
+       ]         forward-node        (Top->1->1.1->1.2->2->3->3.1->...->Index)
+       [         backward-node       (Top<-1<-1.1<-1.2<-2<-3<-3.1<-...<-Index)
+
+Try the keys above now - they are VERY imporant! Use:
+
+  (eek \"<down> M-3 M-e  ;; open the hyperlink below in another window\")
+  (find-node \"(emacs)Basic\")
+  (find-node \"(emacs)Major Modes\")
+
+
+
+5.2. Cutting and pasting
+------------------------
+You can do cut, copy and paste in a \"user-friendly\" way by using
+
+  a) the rightmost icons in the toolbar, or
+  b) the \"Edit\" menu in the menu-bar,
+
+but the keys are very much worth learning:
+
+  C-SPC   -- set-mark-command           (find-enode \"Setting Mark\")
+  C-x C-x -- exchange-point-and-mark    (find-enode \"Setting Mark\" \"C-x 
C-x\")
+  C-w     -- kill-region     (cut)      (find-enode \"Other Kill Commands\")
+  M-w     -- kill-ring-save  (copy)     (find-enode \"Kill Ring\")
+  C-y     -- yank            (paste)    (find-enode \"Kill Ring\")
+
+The \"region\" where cut & paste operate is always what is between
+the \"point\" and the \"mark\". See:
+
+  (find-enode \"Point\")
+  (find-enode \"Mark\")
+
+Exercise: understand how the `eek' sexp below switches the two
+lines just after it.
+
+  (eek \"<down> C-a C-SPC <down> C-w <down> C-y 3*<up>\")
+  First
+  Second
+
+
+
+
+
+
+
+
 6. Controlling shell-like programs
 ==================================
 This is the second main feature of eev. The hyperlinks thing used the
@@ -5815,14 +5979,15 @@ and pasting. The module of eev that controls shell-like 
programs - it
 is called \"eepitch\" - uses `<F8>' and `M-T'. Note that it is
 `alt-shift-t', to not interfere with Emacs's `M-t'.
 
-The sections below were copied from here:
+The sections below were adapted from:
 
   (find-eepitch-intro \"The main key: <F8>\")
 
 
 
-7. The main key: <F8>
-=====================
+
+6.1. The main key: <F8>
+-----------------------
 Emacs can run a shell in a buffer, and it can split its frame
 into windows, like this:
    ___________________
@@ -5866,10 +6031,21 @@ cd /tmp/
 echo \"We changed to: $(pwd)\"
 
 
+Note (for ADVANCED USERS):
+if the above does not work as expected then the code below MAY fix it -
+try it and copy it to your .emacs if it works...
 
+;; See: (find-eevfile \"eepitch.el\" \"defun eepitch-window-show\")
+\(defun eepitch-window-show ()
+  \"An emergency hack for Emacs versions where `display-buffer' is buggy\"
+  (find-2a nil '(find-ebuffer eepitch-buffer-name)))
 
-8. Other targets
-================
+
+
+
+
+6.2. Other targets
+------------------
 Just like `(eepitch-shell)' creates a shell buffer and sets the
 eepitch target to it, `(eepitch-python)' creates a buffer with a
 Python interpreter and uses it as the eepitch target. Try:
@@ -5904,8 +6080,8 @@ print(open(\"/tmp/o\").read())
 
 
 
-9. Creating eepitch blocks: `M-T'
-=================================
+6.3. Creating eepitch blocks: `M-T'
+-----------------------------------
 Write just \"shell\" or \"python\" in a line, then type
 `M-T' (i.e., meta-shift-t) there. The line will be turned into
 three - an \" (eepitch-xxx)\", an \" (eepitch-kill)\", and an
@@ -5921,8 +6097,8 @@ pwd
 
 
 
-10. Red stars
-=============
+6.4. Red stars
+--------------
 Eepitch.el sets the glyph for the char 15 to a red star in the
 standard display table. In layman's terms: eepitch.el tells Emacs
 that the character 15 should be displayed as a red star. The
@@ -5931,9 +6107,281 @@ representation on screen would be \"^O\". You can enter 
a
 literal ^O in a buffer by typing `C-q C-o'.
 
 
-(To be continued...)
+
+
+7. Quick access to one-liners
+=============================
+
+
+7.1. eejump
+-----------
+We may have elisp one-liners that we want to be able to execute very
+quickly, and from anywhere. For example, I keep all my notes that I
+have not organized yet in a file called \"~/TODO\", and if I type
+
+  M-1 M-j
+
+then I \"jump\" to \"~/TODO\" - the effect is the same as running this:
+
+  (find-fline \"~/TODO\")
+
+Note that `M-1 M-j' can be typed as:
+
+  hold the meta key,
+    type 1,
+    type j,
+  release the meta key.
+
+Internally, what happens is that:
+
+  `M-j' is bound to `eejump',
+  `M-1 M-j' runs `eejump' with argument 1, i.e., (eejump 1)
+  (eejump 1) runs (eejump-1)
+  (eejump-1) has been defined with:
+
+    (defun eejump-1 () (find-fline \"~/TODO\"))
+
+Note that if you type `M-J' (i.e., meta-uppercase-j) on the line below
+then it will be converted into the \"(defun eejump-1 ...)\" above,
+
+  1 (find-fline \"~/TODO\")
+
+and note also that if you type `M-j' without a prefix argument then it
+runs `(find-eejumps)', which displays all the current eejump targets,
+as defuns. Try it:
+
+  (eek \"M-j\")
+  (find-eejumps)
+
+An advanced feature: if you type `M-J' on a line that starts with
+something that is not a number, you get a defun for a \"command
+with a very short name\" like the ones that are described in the
+next section. Try it now:
+
+  (eek \"<down> M-J\")
+  e (find-fline \"/tmp/foo.tex\")
+
+
+
+
+
+7.2. Commands with very short names
+-----------------------------------
+Let's start with an example. If we are editing a LaTeX file, say
+\"/tmp/foo.tex\", then it is convenient to have quick ways to:
+
+  c) compile \"foo.tex\" into a \"foo.pdf\",
+  d) display the resulting \"foo.pdf\",
+  e) jump to \"foo.tex\" from anywhere to edit it.
+
+If our \"/tmp/foo.tex\" starts with these lines
+
+  % (defun c () (interactive) (find-sh \"cd /tmp/; pdflatex foo.tex\"))
+  % (defun d () (interactive) (find-xpdfpage \"/tmp/foo.pdf\"))
+  % (defun e () (interactive) (find-fline \"/tmp/foo.tex\"))
+
+and we execute these defuns, then from that point on `M-x c', `M-x d'
+and `M-x e' will do \"compile\", \"display\" and \"edit\" on \"foo.tex\", as
+described above.
+
+For more on `M-x', and on why the defuns above need the
+\"(interactive)\", see:
+
+  (find-node \"(emacs)M-x\")
+  (find-node \"(emacs)Commands\")
+  (find-node \"(elisp)Defining Commands\")
+
+
+
+
+7.3. `find-latex-links'
+-----------------------
+The easiest way to put the three defuns of the last section in
+the header of a LaTeX file is with:
+
+  (find-latex-links \"/tmp/foo\")
+
+`find-latex-links' is just one of several template functions that
+generate commands with very short names. Here's how to use it -
+the other ones are similar.
+
+  1) Run `M-x find-latex-links'. You will get a buffer whose top
+     line is:
+
+       # (find-latex-links \"{stem}\")
+
+  2) Edit that, and change the \"{stem}\" to \"/tmp/foo\".
+
+  3) Execute that top line, which is now:
+
+       # (find-latex-links \"/tmp/foo\")
+
+     You should get:
+
+   _____________________________________________________________________
+  |# (find-latex-links \"/tmp/foo\")                                      |
+  |# (find-eev-quick-intro \"`find-latex-links'\")                        |
+  |# (ee-copy-rest 1 '(find-fline \"/tmp/foo.tex\"))                      |
+  |                                                                     |
+  |% (defun c () (interactive) (find-sh \"pdflatex foo.tex\"))            |
+  |% (defun d () (interactive) (find-pdf-page \"/tmp/foo.pdf\"))          |
+  |% (defun e () (interactive) (find-fline \"/tmp/foo.tex\"))             |
+  |%                                                                    |
+  |\\documentclass{article}                                              |
+  |\\begin{document}                                                     |
+  |                                                                     |
+  |\\end{document}                                                       |
+  |                                                                     |
+  |                                                                     |
+  | -:**-  *Elisp hyperlinks*   All L1     (Fundamental)                |
+  |_____________________________________________________________________|
+
+
+  4) Execute the line with the \"(ee-copy-rest ...)\". You should get this -
+     the window on the right is visiting the file \"/tmp/foo.tex\":
+
+   ______________________________________________________________________
+  |# (find-latex-links \"/tmp/foo\")   |                                  |
+  |# (find-eev-quick-intro \"`find-lat|                                  |
+  |# (ee-copy-rest 1 '(find-fline \"/t|                                  |
+  |                                  |                                  |
+  |% (defun c () (interactive) (find-|                                  |
+  |% (defun d () (interactive) (find-|                                  |
+  |% (defun e () (interactive) (find-|                                  |
+  |%                                 |                                  |
+  |\\documentclass{article}           |                                  |
+  |\\begin{document}                  |                                  |
+  |                                  |                                  |
+  |\\end{document}                    |                                  |
+  |                                  |                                  |
+  |                                  |                                  |
+  | -:**-  *Elisp hyperlinks*   All L| -:**-  foo.tex        All L9     |
+  |_(Copied 8 lines to the kill ring - use C-y to paste)________________|
+
+
+  5) Go to the window on the right and type `M-y'. You should get this,
+
+   ______________________________________________________________________
+  |# (find-latex-links \"/tmp/foo\")   |% (defun c () (interactive) (find-|
+  |# (find-eev-quick-intro \"`find-lat|% (defun d () (interactive) (find-|
+  |# (ee-copy-rest 1 '(find-fline \"/t|% (defun e () (interactive) (find-|
+  |                                  |%                                 |
+  |% (defun c () (interactive) (find-|\\documentclass{article}           |
+  |% (defun d () (interactive) (find-|\\begin{document}                  |
+  |% (defun e () (interactive) (find-|                                  |
+  |%                                 |\\end{document}                    |
+  |\\documentclass{article}           |                                  |
+  |\\begin{document}                  |                                  |
+  |                                  |                                  |
+  |\\end{document}                    |                                  |
+  |                                  |                                  |
+  |                                  |                                  |
+  | -:**-  *Elisp hyperlinks*   All L| -:**-  foo.tex        All L9     |
+  |_____________________________________________________________________|
+
+  and you can now save the file foo.tex (hint: use `C-x C-s'!),
+  execute the three defuns for `c', `d', and `e', and jump to
+  \"/tmp/foo.tex\" from anywhere with `M-x e'.
+
+
+
+
+
+8. Anchors
+==========
+See (old version): (find-anchors-intro)
+
+
+8.1. Introduction: `to'
+-----------------------
+A hyperlink like
+
+  (to \"foo\")
+
+jumps to the first occurrence of the string \"�foo�\" in the
+current buffer. The function that wraps a string in `��'s is
+called `ee-format-as-anchor', and the sexp `(to \"foo\")'
+is equivalent the second sexp below:
+
+                    (ee-format-as-anchor \"foo\")
+  (ee-goto-position (ee-format-as-anchor \"foo\"))
+
+We will call strings in `��'s _anchors_, and we will say
+that `(to \"foo\")' jumps \"to the anchor `foo'\". The string
+inside a `��'s is called a _tag_.
+
+In a situation like this,
+
+  �one�     (to \"two\")
+  �two�     (to \"three\")
+  �three�   (to \"four\")
+  �four�    (to \"one\")
+
+we have four anchors, and typing `M-e' at the line with the
+anchor \"one\" takes us to the line with the anchor \"two\",
+typing `M-e' at the line with the anchor \"two\" takes us to the
+line with the anchor \"three\", typing `M-e' again takes us to
+the line with the anchor \"four\", and typing `M-e' again takes
+us back to the line with the anchor \"one\". In a situation like
+this we say that the anchors \"one\", \"two\", \"three\", and
+\"four\" _point to one another_.
+
+In a case like this,
+
+  �.five�   (to \"five\")
+   �five�  (to \".five\")
+
+where the names of two anchors pointing to one another differ by
+an initial dot, we will say that the anchor \".five\" is the
+\"index anchor\", and the anchor \"five\" is the \"section
+anchor\"; and one way to create an index for a file is to group
+all the index anchors together. For an example, see:
+
+  (find-eev \"eev-intro.el\" \".find-eev-intro\")
+
+
+
+8.2. Creating anchors by hand
+-----------------------------
+One way to type the chars `�' and `�' is with `C-x 8 <' and
+`C-x 8 >'. Try:
+
+  (eek \"RET C-x 8 < t a g C-x 8 >\")
+
+
+
+
+8.3. Creating index/section anchor pairs
+----------------------------------------
+Use `M-A' (`eewrap-anchor'). Note that this has been briefly
+mentioned here:
+
+  (find-wrap-intro \"All wrapping functions\")
+
+It will convert a line with a syntax like
+
+  comment-prefix <anchor-name>
+
+into:
+
+  comment-prefix �.anchor-name�        (to \"anchor-name\")
+  comment-prefix �anchor-name� (to \".anchor-name\")
+
+where comment-prefix is any string and anchor-name is a string
+without `<>'s. Note that the `<>'s, which are easy to type, are
+converted into `��'s, which are harder.
+
+
+
+
+
+
+
+\(To be continued...)
 " pos-spec-list)))
 
+;; end of defun
+
 ;; (find-eev-quick-intro)
 
 
diff --git a/eev-pdflike.el b/eev-pdflike.el
index 76fa18c..7df0197 100644
--- a/eev-pdflike.el
+++ b/eev-pdflike.el
@@ -227,6 +227,7 @@
 (defalias 'find-djvupage
           'find-djvu-page)
 (defun     find-djvu-page (fname &optional page &rest rest)
+  (ee-find-djvu-cleanup fname)
   (find-bgprocess (ee-find-djvu-page fname page)))
 (defvar ee-find-djvu-page-options '())
 (defun  ee-find-djvu-page (fname &optional page)
@@ -245,6 +246,9 @@
   (find-djvu-page {(ee-pp0 fname)} page))
 ")  (ee-code-pdftext-rest rest)))
 
+(defun ee-find-djvu-cleanup (&optional fname)
+  "A hack: clean up djview's 'recentFiles=' line in the config file if 
needed.")
+
 (code-brfile 'find-djvu-page :local 'brdjvul :dired 'brdjvud)
 
 
diff --git a/eev-tlinks.el b/eev-tlinks.el
index 87b8dde..e047581 100644
--- a/eev-tlinks.el
+++ b/eev-tlinks.el
@@ -1,6 +1,6 @@
 ;;; eev-tlinks.el --- hyperlinks to temporary buffers generated by templates
 
-;; Copyright (C) 2013,2014 Free Software Foundation, Inc.
+;; Copyright (C) 2013,2014,2016,2017 Free Software Foundation, Inc.
 ;;
 ;; This file is (not yet?) part of GNU eev.
 ;;
@@ -19,7 +19,7 @@
 ;;
 ;; Author:     Eduardo Ochs <address@hidden>
 ;; Maintainer: Eduardo Ochs <address@hidden>
-;; Version:    2014oct09
+;; Version:    2017abr29
 ;; Keywords:   e-scripts
 ;;
 ;; Latest version: <http://angg.twu.net/eev-current/eev-tlinks.el>
@@ -56,6 +56,9 @@
 ;; �.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")
+
 
 
 (require 'eev-env)
@@ -525,33 +528,45 @@ sudo dpkg -i *.deb
 ;;;                            |_|                        
 ;;
 ;; �find-eev-update-links� (to ".find-eev-update-links")
-;; (find-find-links-links "<none>" "eev-update" "dir")
 ;; A test: (find-eev-update-links)
 
-(defun find-eev-update-links (&optional dir &rest pos-spec-list)
+(defun find-eev-update-links (&optional dir script &rest pos-spec-list)
 "Visit a temporary buffer with scripts for installing and updating eev."
   (interactive)
   (setq dir (or dir ee-eevdir))
+  (setq script (or script "~/e"))
   (apply 'find-elinks
-   `((find-eev-update-links ,dir)
-     (find-eev-update-links "/tmp/eev/")
-     (find-eev-update-links "~/eev/")
-     (find-eev-update-links "{dir}")
+   `((find-eev-update-links ,dir ,script)
+     (find-eev-update-links "/tmp/eev/" ,script)
+     (find-eev-update-links "~/eev2/" ,script)
+     (find-eev-update-links "~/eev/" ,script)
+     (find-eev-update-links "{dir}" "{script}")
+     (find-eev-update-links)
      ,(ee-template0 "\
-#
-# In most \"*Elisp hyperlinks\" buffers the top sexp can be used
-# to re-generate the buffer, and it may be followed by other
-# similar sexps that re-generate the buffer using different
-# parameters in the templates.
-#
-# Try the top sexps above, and also see:
-#   (find-links-intro)
-#   (find-eev \"eev-readme.el\")
 
 
+# Download , unpack and create a script \"~/e\"
+# ============================================
+# See: (find-eev-quick-intro \"1. Installing eev\")
+
+{
+  rm -Rv {dir}
+  mkdir  {dir}
+  cd     {dir}
+  rm -v eev2.tgz
+  wget http://angg.twu.net/eev-current/eev2.tgz
+  tar -xvzf eev2.tgz
+  {
+    echo '#!/bin/sh'
+    echo 'cd {dir} && emacs -l eev-readme.el --eval=\"(find-eev-quick-intro)\"'
+  } > {script}
+  chmod 755 {script}
+}
+
 
-# Download / unpack the tarball
-# =============================
+
+# Download / unpack the tarball (an older way)
+# ============================================
 # See: (find-eepitch-intro)
 #      (find-eev \"eev-readme.el\")
 
@@ -1046,8 +1061,12 @@ Example:
     (find-youtubedl-links ,ee-youtubedl-dir3 nil ,hash nil ,stem)
     (find-youtubedl-links ,ee-youtubedl-dir4 nil ,hash nil ,stem)
     (find-efunction 'find-youtubedl-links)
+    ;;
     ;; (find-youtubedl-links ee-youtubedl-dir ,title ,hash ,ext- ,stem)
     ;; (setq ee-youtubedl-dir ,ee-youtubedl-dir)
+    ""
+    (find-ydbgrep ,(format "grep --color -nH -e %s db.lua" hash))
+    ;;
     ;; Body:
     ""
     ,(ee-template0 "\
@@ -1064,7 +1083,7 @@ cd {dir}
 {ee-youtubedl-command}       'http://www.youtube.com/watch?v={hash}'
 {ee-youtubedl-command} -F    'http://www.youtube.com/watch?v={hash}'
 {ee-youtubedl-command} -f 18 'http://www.youtube.com/watch?v={hash}'
-{ee-youtubedl-command} -f 18 --restrict-filenames --write-thumbnail 
'http://www.youtube.com/watch?v={hash}'
+{ee-youtubedl-command} -f 18 --restrict-filenames --all-subs 
'http://www.youtube.com/watch?v={hash}'
 
 # (find-es \"video\" \"youtube-dl\")
 # (find-fline \"{dir}\" \"{hash}\")
@@ -1486,6 +1505,43 @@ echo     'http://angg.twu.net/eev-videos/{anggstem}.mp4' 
>> ~/.psne.log
 
 
 
+;;;   __ _           _       _       _                 _ _       _        
+;;;  / _(_)_ __   __| |     | | __ _| |_ _____  __    | (_)_ __ | | _____ 
+;;; | |_| | '_ \ / _` |_____| |/ _` | __/ _ \ \/ /____| | | '_ \| |/ / __|
+;;; |  _| | | | | (_| |_____| | (_| | ||  __/>  <_____| | | | | |   <\__ \
+;;; |_| |_|_| |_|\__,_|     |_|\__,_|\__\___/_/\_\    |_|_|_| |_|_|\_\___/
+;;;                                                                       
+;; �find-latex-links� (to ".find-latex-links")
+
+(defun find-latex-links (&optional stem &rest pos-spec-list)
+"Visit a temporary buffer containing a template for creating a LaTeX document."
+  (interactive)
+  (setq stem (or stem "{stem}"))
+  (let ((stem- (file-name-nondirectory stem)))
+    (apply 'find-elinks
+     `((find-latex-links ,stem ,@pos-spec-list)
+       ;; Convention: the first sexp always regenerates the buffer.
+       ;; (find-efunction 'find-latex-links)
+       (find-eev-quick-intro "`find-latex-links'")
+       (ee-copy-rest 1 '(find-fline ,(concat stem ".tex")))
+       ""
+       ,(ee-template0 "\
+% (defun c () (interactive) (find-sh \"pdflatex {stem-}.tex\"))
+% (defun d () (interactive) (find-pdf-page \"{stem}.pdf\"))
+% (defun e () (interactive) (find-fline \"{stem}.tex\"))
+%
+\\documentclass{<}article{>}
+\\begin{<}document{>}
+
+\\end{<}document{>}")
+       )
+     pos-spec-list)))
+
+;; Tests: (find-latex-links)
+;;        (find-latex-links "/tmp/foo")
+
+
+
 
 (provide 'eev-tlinks)
 
diff --git a/eev-wrap.el b/eev-wrap.el
index ec231bf..d5ce69a 100644
--- a/eev-wrap.el
+++ b/eev-wrap.el
@@ -1,8 +1,8 @@
 ;;; eev-wrap.el --- wrap the current line into a hyperlink
 
-;; Copyright (C) 2013 Free Software Foundation, Inc.
+;; Copyright (C) 2013,2016 Free Software Foundation, Inc.
 ;;
-;; This file is (not yet?) part of GNU eev.
+;; This file is part of GNU eev.
 ;;
 ;; GNU eev is free software: you can redistribute it and/or modify
 ;; it under the terms of the GNU General Public License as published by
@@ -19,7 +19,7 @@
 ;;
 ;; Author:     Eduardo Ochs <address@hidden>
 ;; Maintainer: Eduardo Ochs <address@hidden>
-;; Version:    2013dec10
+;; Version:    2016sep23
 ;; Keywords:   e-scripts
 ;;
 ;; Latest version: <http://angg.twu.net/eev-current/eev-wrap.el>
@@ -174,9 +174,11 @@ have to run an \"undo\"."
     (error "Does not match")))
 (defun ee-wrap-anchor0 (prefix anchor)
   "An internal function used by `ee-wrap-anchor'."
-  (ee-template0 "\
+  (ee-template0 (ee-tolatin1 "\
 {prefix}�.{anchor}�\t(to \"{anchor}\")
-{prefix}�{anchor}� (to \".{anchor}\")"))
+{prefix}�{anchor}� (to \".{anchor}\")")))
+
+
 
 
 ;;;  __  __        ____                   _                          _ 
@@ -237,16 +239,28 @@ have to run an \"undo\"."
 ;;; |_|  |_|      \___/(_)  \___|\___|/ |\__,_|_| |_| |_| .__/ 
 ;;;                                 |__/                |_|    
 ;;
-;; See: (find-eejump-intro "Producing `eejump-nnn's and `eejump-nnn*'s")
+;; See: (find-eev-quick-intro "7.1. eejump")
+;;      (find-eev-quick-intro "7.1. eejump" "meta-uppercase-j")
+;; Old: (find-eejump-intro "Producing `eejump-nnn's and `eejump-nnn*'s")
 (define-key eev-mode-map "\M-J" 'eewrap-eejump)
 
 (defun  eewrap-eejump () (interactive)
   (ee-this-line-wrapn 2 'ee-wrap-eejump))
 (defun ee-wrap-eejump (n sexp)
   "An internal function used by `eewrap-eejump'."
-  (if (equal sexp "")
-      (ee-template0 "(defun eejump-{n}* () (find-efunction 'eejump-{n}*))")
-    (ee-template0   "(defun eejump-{n} () {sexp})")))
+  (if (string-match-p "^[0-9]+$" n)
+    (if (equal sexp "")
+        (ee-template0 "(defun eejump-{n}* () (find-efunction 'eejump-{n}*))")
+      (ee-template0   "(defun eejump-{n} () {sexp})"))
+    (ee-template0     "(defun {n} () (interactive) {sexp})")))
+;;
+;; Old:
+;; (defun ee-wrap-eejump (n sexp)
+;;   "An internal function used by `eewrap-eejump'."
+;;   (if (equal sexp "")
+;;       (ee-template0 "(defun eejump-{n}* () (find-efunction 'eejump-{n}*))")
+;;     (ee-template0   "(defun eejump-{n} () {sexp})")))
+
 
 
 ;;;  __  __       __  __                           



reply via email to

[Prev in Thread] Current Thread [Next in Thread]