(Re)generate: (find-kl-here-intro)
Source code: (find-efunction 'find-kl-here-intro)
More intros: (find-eev-quick-intro)
(find-eev-intro)
(find-eepitch-intro)
This buffer is _temporary_ and _editable_.
It is meant as both a tutorial and a sandbox.
This into describes features that are not loaded by default.
To load them, run this:
;; See: (find-kl-here-intro)
;; (find-eev "eev-kl-here.el")
(require 'eev-kl-here)
1. Introduction
The central idea of eev is that it lets you create "executable
logs" of what you do. Usually half of these logs will be made of
eepitch blocks - see:
http://anggtwu.net/eepitch.html
and the other half will be made of "elisp hyperlinks to
everything interesting that you find". This is explained here,
(find-here-links-intro)
(find-here-links-intro "2. \"Here\"")
(find-here-links-intro "3. `find-here-links'")
but very few people used that second half - creating elisp
hyperlinks - because until 2022/2023 creating each elisp
hyperlink took lots of keystrokes... we had to create a temporary
buffer with lots of elisp hyperlinks to "here", select the best
one, edit it a bit, and copy it to our notes.
Let me call that "the old way". See:
(find-kla-intro "2. The old way")
(find-kla-intro "2. The old way" "The old way shows all options")
In 2022 I started to work on an alternative to that "old way".
It became one of my presentations at the EmacsConf2022 - see:
(find-kla-intro "3. The new way")
Title: Bidirectional links with eev (@ EmacsConf 2022)
Info: (find-1stclassvideo-links "eev2022kla")
Play: (find-eev2022klavideo "00:00")
LSubs: (find-eev2022klalsubs "00:00")
And in 2023 I found a way - implemented in the functions `kl',
`kll', and `kls' - to extend that "new way" to more kinds of
"here"s. `M-x kla' and its friends can only kill links to
files, but `kl', `kll', and `kls' support all these kinds of
"here"s:
(find-eev "eev-kl-here.el" "hprog")
`M-x kl' is much easier to use than both `find-here-links' and
`kla' and its friends, but its implementation is much more
complex.
2. Try it!
Type `M-x kl'. This will "kill a link to here"; it will detect
that we are in an "intro", and you will see this message in the
echo area:
Copied to the kill ring: (find-kl-here-intro)
Now go to the line with the title of this section, and type `M-x
kll'. This will "kill a link to here", where "here" is this
intro, and refine it to make it point to the current line. You
will see this message in the echo area:
Copied to the kill ring: (find-kl-here-intro "2. Try it!")
...then go to the buffer with your notes with `M-1 M-j', paste
the killed link there - remember:
(find-eev-quick-intro "5.2. Cutting and pasting")
and follow the link with `M-e'. It should take you back to the
beginning of this section.
3. Info
Now try to do something similar to create links to info buffers.
Run this:
(find-2b nil '(find-enode "Buffers"))
It will create a window setting like this one:
_____________________
| | |
| this | *info* |
| intro | (emacs) |
| | Buffers |
|_________|___________|
Type `M-x kl' on the window at the right. You will get this
message:
Copied to the kill ring: (find-enode "Buffers")
Go to your buffer with notes with `M-1 M-j', paste the link
there, and check that following that link with `M-e' takes you
back to that info page.
Now do something similar with:
(find-2b nil '(find-emacs-keys-intro "3. Cutting & pasting"))
That section has several `find-enode' links. Follow one, use `M-x
kl' to kill a link to that info page, paste that link to your
notes, and check that following it with `M-e' takes you back to
that info page.
4. `M-x kls'
`M-x kls' "Kills a Link to here and refines it with a String".
`M-x kls' it is similar to `M-x kll', but it uses the current
region instead of the current line.
Try it in the last line of the previous paragraph - mark the work
"region" and type `M-x kls'. You should get this message,
Copied to the kill ring: (find-kl-here-intro "region")
and if you yank the link with `C-y' you will get this,
(find-kl-here-intro "region")
that is a link that points to the last line of the first
paragraph of this section.
5. The innards
If you run `M-x kl', `M-x kll' or `M-x kls' with a prefix
argument they will show a buffer with debugging information
instead of killing a link. The last lines of that buffer will be
these links, that explain everything:
# And:
# (find-kl-here-intro "5. The innards")
# (find-here-links-intro "8. Debugging")
# (find-here-links-intro "8. Debugging" "Each test tests")
# (find-eev "eev-kl-here.el" "hprog")
# (find-eev "eev-kl-here.el" "kl")