12

The problem: I found it's tiredsome to move my eyeballs up and down from where my cursor is to the bottom echo area.

The question: is it possible to make the echo area dynamically allocated close to my cursor, like tooltips? I searched for packages but not able to find one. I don't believe it's a new idea and someone must've done it.

wangii
  • 223
  • 1
  • 3
  • What if you echo several screenfulls of text? – wvxvw Dec 31 '14 at 13:56
  • @wvxvw, There could be a fallback mechanism. I've implemented exactly this for specific cases. I'm curious if there's a generic solution already. – abo-abo Dec 31 '14 at 14:09
  • 2
    It's possible if you use [a dedicated frame](http://www.emacswiki.org/emacs/Dedicated_Minibuffer_Frame). It is from a package named [oneonone](http://www.emacswiki.org/emacs/oneonone.el). In the comment section, it is written that `1on1-minibuffer-frame-flag is non-nil (the default value), then the minibuffer is shown in its own frame`. – Tu Do Dec 31 '14 at 14:11
  • 1
    Closely related to [this question](http://emacs.stackexchange.com/questions/1074/how-to-display-the-content-of-minibuffer-in-the-middle-of-the-emacs-frame/1078). That one's about minibuffer *input*, but it has a positive answer so you may be able to adapt it. – Malabarba May 16 '15 at 10:02

2 Answers2

5

As @TuDo's comment indicates (and he can change it to an answer if he likes, in which case I'll remove this answer), you can at least use a standalone minibuffer frame, and you can position it where you like.

One advantage over the default setup is that you have only a single place to look, always, for output messages (echo area) and for input editing (minibuffer).

You could even cause its position to change dynamically - for example, to be close to where the current input focus is.

One On One Emacs can help. Out of the box, it lets you decide where to put the minibuffer frame, but to reposition it dynamically you will need to do a little extra.

(EmacsWiki is currently down, but you can download oneonone.el from MELPA also.)

Drew
  • 75,699
  • 9
  • 109
  • 225
3

The echo area explicitly uses the minibuffer window, so unless that changes the answer is "no, it's not possible" (or at minimum not very practical).

Refer to https://stackoverflow.com/questions/10063410/is-it-possible-to-separate-minibuffer-and-echo-area-in-emacs

phils
  • 48,657
  • 3
  • 76
  • 115
  • But if I intercepted `message` to display it in an overlay instead of the echo area? – abo-abo Dec 31 '14 at 14:16
  • Sure, if you only want this for `message`. There are many other functions which output to the echo area, however; I don't believe it's a trivial issue. As per the linked Q&A, have a look at the manual to get some idea of the scope. – phils Dec 31 '14 at 14:18
  • 1
    Note in particular that there are many C functions which bypass `message` and instead directly call one of the C functions which implement messaging underneath. – phils Dec 31 '14 at 14:28
  • It's sad. I was thinking to use an overlay + some codes to redirect the messagebuffer. – wangii Jan 01 '15 at 18:56
  • You can have a small frame that contains only a minibuffer window. The only difficulty is poping it up whenever the echo area is displaying anything. – Malabarba May 16 '15 at 10:03