(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-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 eev-quick-intro: 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-prepared-intro) 34. (find-bounded-intro) 35. (find-channels-intro) This one was used in a video: 36. (find-three-main-keys-intro) These ones are obsolete: 37. (find-emacs-intro) 38. (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 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://angg.twu.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!