[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Hyperbole and eev

From: Eduardo Ochs
Subject: Hyperbole and eev
Date: Mon, 28 Sep 2020 12:40:10 -0300

Hi Robert,

I will try to answer all your e-mails in a single e-mail - in a new
thread. Yor e-mails are here:


First: thanks for the hints, things are starting to make sense to me.

We are clearly using different notions of simplicity - eev is like a
Volkswagen Beetle, in the sense that if you open its lid everything is
trivial to figure out and to fix, hack, and extend.

It's nice that you said

> I really, really recommend that you try to use Hyperbole without
> initially mixing it with eev, as I think you will find that
> Hyperbole already contains much of what you need to simplify eev and
> tie it to a broader Emacs ecosystem.

because that sort of allows me to ask you to try eev! =) =) =)
I am not going to ask you to try eev without Hyperbole, though - I
tried to

  1. make eev as non-invasive as possible - see:


  2. make it trivial to navigate by people who have very short
     attention spans and who have just a few spare minutes to play
     with it. Here are the instructions:

       a. install eev with M-x list-packages,

       b. run M-x eev-beginner,

       c. learn how to use M-e and M-j to navigate the docs. See:


Let me copy that section here:

  1. Basic keys (eev)
  The most basic keys of eev are:
    M-e   - to follow a hyperlink.  Mnemonic: "(e)valuate"/"(e)xecute".
            See: (find-eev-quick-intro "2. Evaluating Lisp")
                 (find-eev-quick-intro "3. Elisp hyperlinks")
    M-j   - to jump to certain predefined places.  In particular,
                `M-j' takes you to a buffer with basic help and a
                      list of jump targets. See:
                      (find-eev-quick-intro "7.2. The list of eejump targets")
            `M-2 M-j' takes you to this help page.
            `M-5 M-j' takes you to: (find-eev-quick-intro)
    M-k   - to go back.  Mnemonic: "(k)ill buffer".
            See: (find-eev-quick-intro "3. Elisp hyperlinks" "M-k")

By the way, you asked me what this line of my e-mail does:

  (code-c-d "hyperbole" "~/.emacs.d/elpa/hyperbole-7.1.2/" "hyperbole")

The answer is here:

  (find-eev-quick-intro "9.1. `code-c-d'")

You can see the code that it runs by running this:

  (find-code-c-d "hyperbole" "~/.emacs.d/elpa/hyperbole-7.1.2/" "hyperbole")

We are following different design principles. In my view, or, in eev's
view, Hyperbole uses an awful amount of markup syntax, and it keeps
the Elisp code too far from the user. Let me give you two examples,
and ask you a question about a technical point in which I am stuck.

I am watching your video

  "Bring Your Text to Life the Easy Way with GNU Hyperbole"

and I am indexing it with the tricks described here:


The video made me understand that Hyperbole's action key works on
{Implicit Buttons}, <(Explicit Buttons)>, and <(Global Buttons)> -
from 17:00 in the video onwards - and from 19:06 onwards you show that
the action key also works on pathnames enclosed in double quotes, in a
way that supports lots of abbreviations. That's REALLY nice - but let
me point to you that eev's hyperlinks can to point to arbitrary
positions in files, manpages, PDFs, etc, and I don't know if the "#"
syntax in Hyperbole's hyperlinks can do that... see:


Ok, time for my technical question. Apparently this Hyperbole button

  {C-h h d a}

should have essentially the same action as:

  (eek "C-h h d a")

but my `eek' sexp just inserts an "a". It's trivial to inspect the
innards of how the function eek works - we just have to search for its
source code, and it is just this:

  (defun eek (str) (interactive "sKeys: ")
    "Execute STR as a keyboard macro. See `edmacro-mode' for the exact format.\n
  An example: (eek \"C-x 4 C-h\")"
    (execute-kbd-macro (read-kbd-macro str)))

Your key sequence buttons work well on key sequences like {C-h h d a},
but I couldn't find a function that on receiving the string like "C-h
h d a" would execute it as a key sequence, like this would do,

    (execute-kbd-macro (read-kbd-macro "C-h h d a")))

but without the bugs... I grepped for "key sequence" in the Hyperbole
source directory and created a link to the result of that grep,

  (find-hyperbolegrep "grep --color -niH --null -e 'key sequence' *.el")

to be able to go back to that easily. I guess that the function that I
am looking for is in:

  (find-hyperbolefile "hib-kbd.el")

but I couldn't find it... and typing C-h A didn't help me much. I have
the feeling that C-h A would be better if it would say which function
the action key would call - I mean, something more precise than saying

    Eduardo Ochs

reply via email to

[Prev in Thread] Current Thread [Next in Thread]