(Re)generate: (find-eev-intro)
Source code: (find-eev "eev-intro.el" "find-eev-intro")
Main intros: (find-eev-quick-intro)
(find-emacs-keys-intro)
(find-eepitch-intro)
(find-here-links-intro)
(find-refining-intro)
Index to the source files: (find-eev "eev-load.el")
This buffer is _temporary_ and _editable_.
It is meant as both a tutorial and a sandbox.
The quickest way to open or recreate this is with `M-5 M-0 M-j'.
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. These are the basic ones:
0. (find-eev-quick-intro)
1. (find-emacs-keys-intro)
2. (find-eev-intro)
3. (find-here-links-intro)
4. (find-refining-intro)
5. (find-saving-links-intro)
6. (find-pdf-like-intro)
7. (find-eepitch-intro)
8. (find-audiovideo-intro)
9. (find-video-links-intro)
10. (find-videos-intro)
11. (find-psne-intro)
12. (find-rcirc-intro)
13. (find-elisp-intro)
14. (find-dot-emacs-intro)
15. (find-lexical-intro)
16. (find-strange-functions-intro)
17. (find-multiwindow-intro)
18. (find-eev-install-intro)
19. (find-eev-levels-intro)
These are things that I am using in workshops:
20. (find-windows-beginner-intro)
21. (find-eev-exercises-intro)
These ones explain ideas, conventions, and usage patterns:
22. (find-escripts-intro)
23. (find-links-conv-intro)
These are older and more technical versions of sections of the
eev-quick-intro:
24. (find-eval-intro)
25. (find-links-intro)
26. (find-brxxx-intro)
27. (find-wrap-intro)
28. (find-eejump-intro)
29. (find-anchors-intro)
30. (find-code-c-d-intro)
These are etcs:
31. (find-templates-intro)
32. (find-org-intro)
33. (find-git-intro)
These ones explain advanced features that require extra setup:
34. (find-kla-intro)
35. (find-kl-here-intro)
36. (find-edit-index-intro)
37. (find-rstdoc-intro)
38. (find-show2-intro)
39. (find-lua-tutorial-intro)
40. (find-debootstrap-intro)
41. (find-lean4-intro)
42. (find-try-sly-intro)
43. (find-prepared-intro)
44. (find-bounded-intro)
45. (find-channels-intro)
These ones are obsolete:
46. (find-emacs-intro)
47. (find-three-main-keys-intro)
48. (find-defun-intro)
For an index of the videos, run:
(find-1stclassvideos)
1. `eev-mode'
To toggle eev-mode on and off, use `M-x eev-mode'.
The text below is a copy of:
(find-eev-install-intro "1. Installing eev by hand")
Note that eev-mode.el has this commentary:
;; Turning on eev-mode simply activates the eev-mode-map keymap, and
;; adds an "eev" to the mode line to remind you this. Turning off
;; eev-mode deactivates the keymap and the reminder.
If you prefer to start with eev-mode off, omit the
line `(eev-mode 1)' above or change it to `(eev-mode 0)'. To
toggle eev-mode on and off, use `M-x eev'. The keybindings in
eev-mode are listed here:
(find-eev "eev-mode.el" "eev-mode-map-set")
Years ago eev was a very invasive package that changed several
global settings; now it's the opposite. If you load eev the only
things that happen are:
1) Several functions and variables become defined. They ALL
have the prefixes "find-", "ee", "code-" or "br",
except for one: "to".
2) The standard-display-table is changed to make three
characters be displayed as colored glyphs: "*" (char 15),
"«" (char 171), and "»" (char 187).
3) The environment variable "S" is set.
4) An innocuous wrapper is installed around an internal
function used by `man' (with `advice-add'). See:
(find-eev "eev-blinks.el" "find-man")
TODO: update the text above! I rewrote most
of `(find-eev-install-intro)' in 2019sep29... See:
(find-eev-install-intro "1. Beginners and experts")
(find-eev-install-intro "2. The expert setup" "Here's what")
(find-eev-install-intro "4. `eev-mode'")
3. The keybindings
`eev-mode' defines its own meanings for lots of meta-shift-letter
key combinations - which are not normally used by Emacs - and,
besides that, only for:
`M-e' (find-eval-intro "`M-e'")
`M-k' (find-eval-intro "`M-k'")
`M-j' (find-eejump-intro "\neejump\n")
`<f8>' (find-eepitch-intro "The main key: <F8>")
and for several key sequences starting with `M-h'. The two
simplest ways to list the _main_ keys of eev are:
1) click with the middle mouse button on the "eev" in the
mode line - this is equivalent to:
(find-efunctiondescr 'eev-mode)
2) type `M-2 M-j' - this is equivalent to:
(find-emacs-keys-intro)
These two ways are shown in this screenshot:
http://anggtwu.net/IMAGES/eev-mode-help-and-M-2-M-j.png
To see _all_ the keybindings, run one of these sexps:
(find-eev "eev-mode.el" "eev-mode-map-set")
(find-ekeymapdescr eev-mode-map)
If the keybindings in `eev-mode-map' interfere with other
keybindings that you use, the simplest solution is to define a
quick way to turn `eev-mode' on and off. If `M-x eev-mode' is too
long, you can try:
(defalias 'em 'eev-mode)
(global-set-key (kbd "s-e") 'eev-mode)
The `defalias' above makes `M-x em' equivalent to `M-x eev-mode',
and the `global-set-key' makes the key sequence `<Super>-e' run
`eev-mode'. If you don't know what is the super key, see:
(find-enode "Modifier Keys")
https://en.wikipedia.org/wiki/Super_key_(keyboard_button)
You can also modify `eev-mode-map' to make it define fewer
keybindings, but this is not so trivial to set up. One way to do
that is explained here:
(find-eev "eev-mode.el" "when-not-eev-mode-map")
4. The prefix `find-'
Some people feel that the functions defined by eev should not use
the prefix `find-', that they should use `eefind-' instead...
The code below can be used to list all the `find-*' functions
defined by eev - including the `find-*' functions defined by
calls to `code-c-d', `code-pdf-page', and friends:
(require 'dash)
;; See: https://github.com/magnars/dash.el#functions
;; Tests:
;; (find-epp (assoc (symbol-file 'find-pdf-page 'defun) load-history))
;; (setq a-lh-entry (assoc (symbol-file 'find-pdf-page 'defun) load-history))
;; (find-epp a-lh-entry)
;; (find-epp (ee-lh-entry-finds a-lh-entry))
;;
(defun ee-lh-entry-finds (lh-entry)
"Filter a load-history entry to keep only the `(defun . find-*)'s"
(let* ((a (--filter (consp it) lh-entry))
(b (--filter (eq (car it) 'defun) a))
(c (--filter (string-match "^find-" (symbol-name (cdr it))) b)))
(cons (car lh-entry) c)))
(defun ee-lh-eev-finds ()
"Filter the load-history - returns a stripped version with only
the eev files and the `(defun . find-*)'s in them."
(let* ((lh-eevs (--filter (string-match "eev" (car it)) load-history)))
(-map 'ee-lh-entry-finds lh-eevs)))
(defun ee-lh-eev-find-functions ()
"Return a list of all `find-*' functions defined by eev."
(let* ((a (ee-lh-eev-finds))
(b (-map 'cdr a))
(c (apply 'append b)))
(-map 'cdr c)))
;; Tests:
;; (find-epp (ee-lh-eev-finds))
;; (find-eppp (ee-lh-eev-find-functions))
It should be possible to use that list of functions to produce an
experimental variant of eev in which all these `find-*' functions
become `eefind-*' functions, and in which there a function that
creates `find-*' aliases for all these `eefind-*' functions. I
will try to implement that a prototype for that in the first
months of 2021, but I am afraid that I won't use it much myself -
I think that this is ugly. If you you like to discuss, test, or
implement parts of this, please get in touch!