Sometimes I must use Emacs (in X mode) over a network connection (for example, working on a cloud VM). I am pretty comfortable with the interface responsiveness inside a frame, although X is notoriously sensitive to network delays. But when it comes to any type of creating a new X window, be it a menu, a tooltip or a new frame, I'm looking at a few seconds wait. Tolerably painful if I want a new frame--this is not something I do often--but entirely unusable for a menu.
Unfortunately, flyspell, that I often use, is hard-coded to invoke x-popup-menu
¹. Fixing a typo manually is certainly faster than popping up the menu, but there is not a function in it to add the word to dictionary, and this is where the menu gets me.
But nothing in principle prevents one from fbinding their own override version of x-popup-menu
to intercept calls to it. So my question is, essentially, two-part:
Is there a more or less generic way (a package, presumably) that converts pop-up menus into (ideally) ido prompts, or other in-frame interface, e. g., the usual completion buffer? This would be a win for me!
If such a thing does not exist, is there a flyspell-specific modification: a package that hooks into flyspell, or a fork that does not use menus, or just anything but the popups?
I am aware of certain alternatives. For example, I use tramp mode over SSH when feasible and edit remote files in a local, responsive Emacs. But it often happens that all I have on me is a Windows laptop, so a remote X client is the only practical option.
¹ Tangentially, and curiously, for the (late) XEmacs flyspell has a separate code path that invokes the more general, window-system-agnostic popup-menu
function, which exists, and is supposedly compatible, in GNU Emacs. Even though the XEmacs project has been thoroughly dead for a decade, being one of its major developers, I can't stop wondering what was the reason for this...
ispell-buffer
and am then presented with a buffer of various options to choose from. You may be interested in doing something similar and bypass the pop-up feature entirely. I would have to trace the functions to figure out how you are getting the popup to even happen, but popups are not mandatory.ispell-buffer
is not what I am looking for, as it prompts for everything it considers mispellings, including even parts of identifiers. 99% of what I edit is code. Ideally, I want to hit a chord and select a replacement word or an option to save to dictionary the word at the point, and this single word only. I am not aware of any ispell function that allows this--do you know of one? I think I must dig deeper into it.frog-menu-type
set toavy-side-window
to avoid posframe.