(Re)generate: (find-eev-intro)
Source code:  (find-eev "eev-intro.el" "find-eev-intro")
Main intros:  (find-eev-quick-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-lexical-intro)
  15. (find-multiwindow-intro)
  16. (find-eev-install-intro)

These are things that I am using in workshops:

  17. (find-windows-beginner-intro)
  18. (find-eev-exercises-intro)

These ones explain ideas, conventions, and usage patterns:

  19. (find-escripts-intro)
  20. (find-links-conv-intro)

These are older and more technical versions of sections of the

  21. (find-eval-intro)
  22. (find-links-intro)
  23. (find-brxxx-intro)
  24. (find-wrap-intro)
  25. (find-eejump-intro)
  26. (find-anchors-intro)
  27. (find-code-c-d-intro)

These are etcs:

  28. (find-templates-intro)
  29. (find-org-intro)
  30. (find-git-intro)

These ones explain advanced features that require extra setup:

  31. (find-kla-intro)
  32. (find-edit-index-intro)
  33. (find-rstdoc-intro)
  34. (find-prepared-intro)
  35. (find-bounded-intro)
  36. (find-channels-intro)

This one was used in a video:

  37. (find-three-main-keys-intro)

These ones are obsolete:

  38. (find-emacs-intro)
  39. (find-defun-intro)

For an index of the videos, run:


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 variables "S" and "EEVDIR" are 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!