(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-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")