(Re)generate: (find-wrap-intro)
Source code:  (find-eev "eev-intro.el" "find-wrap-intro")
More intros:  (find-eev-quick-intro)
              (find-eval-intro)
              (find-eepitch-intro)
This buffer is _temporary_ and _editable_.
It is meant as both a tutorial and a sandbox.



Note: this intro needs to be rewritten!
Ideally it should _complement_ the material in:
  (find-eev-quick-intro "6.3. Creating eepitch blocks: `M-T'")
  (find-eev-quick-intro "8.3. Creating index/section anchor pairs")
  (find-eev-quick-intro "8.4. Creating e-script blocks")





1. Eepitch and eev

Eepitch defines only two keys - <F8> and <M-T> - and <M-T> is a particular case of something more general: "wrapping commands", that follow these conventions: 1) they are bound to meta-shift-letter keys (M-T, M-F, M-M, ...), 2) they transform the current line and then move down, 3) they produce Lisp code meant to be executed with `M-e' or `F8', 4) they are listed at: (find-efunctiondescr 'eev-mode "M-F") 5) their keybindings are only available when eev-mode is turned on. To understand how they work, please follow the instructions below and try them here. Note that this buffer is a sandbox, and it can be recreated by executing the sexp "(find-wrap-intro)" at the top. Note that the wrapping commands are all bound to key sequences of the form meta-SHIFT-letter - don't forget the shift!!!

2. <M-T>: produce an eepitch block

If you type <M-T> on a line containing just the word "shell" you get three lines, like this: * (eepitch-shell) * (eepitch-kill) * (eepitch-shell) We call a block of three lines like this an "eepitch block", and eepitch blocks can be used to set up interactions with external programs. Try typing <M-T> on the lines that say "shell" and "python" below, and use them to send some lines to bash and to a python interpreter (with <F8>): bash export PS1='$PWD% ' cd /tmp/ function ee () { set -v; . /tmp/ee.sh; set +v; } rm -v /tmp/ee.sh cat > /tmp/ee.sh <<'%%%' echo Hello cd /etc/ %%% cat /tmp/ee.sh bash /tmp/ee.sh ee python square = lambda x: x*x square(5)

3. <M-F>: hyperlink to a file or a directory

If you type <M-F> on the lines below, /etc/ /tmp/ ~/ ~/.emacs you get hyperlinks like these: # (find-fline "/etc/") # (find-fline "/tmp/") # (find-fline "~/") # (find-fline "~/.emacs")

4. <M-S>: hyperlink to the output of a shell command

If you type <M-S> on a line containing a shell command you get a hyperlink that starts with `find-sh', and that when followed opens a temporary buffer with the output of that shell command, like these: # (find-sh "find --help") # (find-sh "find /etc | sort") # (find-sh "find /etc -type d | sort") # (find-sh "find /etc -type d -maxdepth 1 | sort") # (find-sh "find /etc -type d -maxdepth 2 | sort") Try it here: dict smop dict 'minor detail' If you have the packages dict, dictd and dict-jargon installed these hyperlinks will show you the meaning of the expressions "smop" and "minor detail". # (find-sh "dict smop") # (find-sh "dict 'minor detail'")

5. <M-M>: hyperlink to a manpage

Try <M-M> here: 1 tac

6. All wrapping functions

Try this: (find-eaproposf "eewrap") It will show a temporary buffer with hyperlinks like this one, (find-efunction 'eewrap-find-fline) that points to the definition of `eewrap-find-fline'. Each definition of an `eewrap-*' function is preceded by a header that contains two lines like these ones: ;; Skel: (find-eewrap-links "F" "find-fline" "fname") ;; Test: (find-eewraptest-links "find-fline" "/tmp/foo") The `find-eewraptest-links' goes to a temporary buffer that contains a test like this one, ;; (eek "<down> <<eewrap-find-fline>>") /tmp/foo that demonstrates a typical use of that `eewrap-*' function. Here are all the tests copied to a single place: ;; M-A: (find-efunction 'eewrap-anchor) ;; Test: (find-eewraptest-links "anchor" "# <foo>") ;; (eek "<down> <<eewrap-anchor>>") # <foo> ;; M-C: (find-efunction 'eewrap-code-c-d) ;; Test: (find-eewraptest-links "code-c-d" "CCC /DIR/") ;; (eek "<down> <<eewrap-code-c-d>>") CCC /DIR/ ;; M-D: (find-efunction 'eewrap-debian) ;; Test: (find-eewraptest-links "debian" "bash") ;; (eek "<down> <<eewrap-debian>>") bash ;; M-J: (find-efunction 'eewrap-eejump) ;; Test 1: (find-eewraptest-links "eejump" "42 (find-fline \"~/TODO\")") ;; (eek "<down> <<eewrap-eejump>>") 42 (find-fline "~/TODO") ;; M-J: (find-efunction 'eewrap-eejump) ;; Test 2: (find-eewraptest-links "eejump" "todo (find-fline \"~/TODO\")") ;; (eek "<down> <<eewrap-eejump>>") todo (find-fline "~/TODO") ;; M-F: (find-efunction 'eewrap-find-fline) ;; Test: (find-eewraptest-links "find-fline" "/tmp/foo") ;; (eek "<down> <<eewrap-find-fline>>") /tmp/foo ;; M-M: (find-efunction 'eewrap-man) ;; Test: (find-eewraptest-links "man" "1 tac") ;; (eek "<down> <<eewrap-man>>") 1 tac ;; M-P: (find-efunction 'eewrap-pdflike) ;; Test: (find-eewraptest-links "pdflike" "o /tmp/o.pdf") ;; (eek "<down> <<eewrap-pdflike>>") o /tmp/o.pdf ;; M-R: (find-efunction 'eewrap-rm/mkdir/cd) ;; Test: (find-eewraptest-links "rm/mkdir/cd" "/tmp/foo/") ;; (eek "<down> <<eewrap-rm/mkdir/cd>>") /tmp/foo/ ;; M-S: (find-efunction 'eewrap-sh) ;; Test: (find-eewraptest-links "sh" "dict smop") ;; (eek "<down> <<eewrap-sh>>") dict smop ;; M-T: (find-efunction 'eewrap-eepitch) ;; Test: (find-eewraptest-links "eepitch" "shell") ;; (eek "<down> <<eewrap-eepitch>>") shell ;; M-V: (find-efunction 'eewrap-audiovideo) ;; Test: (find-eewraptest-links "audiovideo" "ovideo /tmp/o.mp4") ;; (eek "<down> <<eewrap-audiovideo>>") ovideo /tmp/o.mp4 ;; M-Z: (find-efunction 'eewrap-zsh) ;; Test: (find-eewraptest-links "zsh" "echo $SHELL") ;; (eek "<down> <<eewrap-zsh>>") echo $SHELL ;; M-#: (find-efunction 'eewrap-two-eepitches) ;; Test: (find-eewraptest-links "two-eepitches" "shell python") ;; (eek "<down> <<eewrap-two-eepitches>>") shell python The bindings for `M-Z' and `M-#' are not active by default. See: (find-eev "eev-mode.el" "eev-mode-map-set" "M-Z" "eewrap-zsh") (find-eev "eev-mode.el" "eev-mode-map-set" "M-#" "eewrap-two-eepitches")

7. Wrapping functions generate hyperlinks

...this is a slogan - a huge idea, in a very shortened form. In its full form, that would be: (Some) wrapping function provide one of the basic ways to produce elisp hyperlinks quickly; the second basic way, which is a bit more complex conceptually, is via Elisp hyperlinks buffers. This, and the whole rationale behind generating and using elisp hyperlinks, is explained here: (find-links-intro "Elisp hyperlinks buffers") The "some" in beginning of the long version of the slogan, above, is because a few of the wrapping commands, for example, <M-T> and <M-R>, are used to produce things that are not hyperlinks - usually other kinds of scripts.