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...