All Hail Quail
Hrvoje Niksic <[email protected]> Fri, 19 Apr 2002 04:35:03 +0200
| Newsgroups | gmane.emacs.xemacs.mule |
|---|---|
| Message-ID | <[email protected]> |
I hated Quail for *years*. Until I decided to try it out. And now I hate it with a renewed passion bordering on insanity. The exquisite bitter agony of a love-hate relationship without the love part is making me write this. If you can't stand rants, stand aside. Consider yourself warned. I won't speak of usability, human interface guidelines, speed, quality of implementation, broken interface for defining keyboards, useless use of macros, or anything like that. This is about basic Emacs functionality. * Don't they ever use `undo' in the land of the MULEs? Apparently not, because `undo' is broken under Quail. One could understand that inputting a character using a multi-character combination would break the undo boundary. But so does inserting a key that just had the bad luck of being rebound to another key using Quail. For those who have never used `undo' for more than a moment, I can explain. When you insert more than a few characters at a time, like I am doing now, XEmacs only inserts undo boundaries after several characters have been typed. That way pressing undo will delete several characters at a time -- rather than one character or all characters, which are the choices offered by Lesser Editors. Not so with Quail. If you set the keyboard to croatian, typing ššššššš in a row will undo char by char. And so will zzzzzzz, through the sheer bad luck of being on non-default locations. * Didn't M-\ use to delete all whitespace around a char? You know, like M-SPC, but without leaving that one space? Apparently not in MULE, because Quail binds `M-\' to `quail-start-translation'. And yet, when you press M-\, spaces are correctly deleted. So Quail is in fact calling the proper function, but possibly before or after doing Something Else. How ingenious! Someone will have to patent this and become a millionair! At this point, Quail fans might ask, "so what's your problem? why do you complain about something that works?" Here is why: * They seem to perform a similar trick with M-y, which *breaks it*. Yes, you heard me right, M-y, one of the most important commands in Emacs, one that yanks the stuff off your kill ring. In Quail, M-y results in the error "Previous command was not a yank". You can shout, "yes it was!" until you're blue in the face -- Quail will have no sympathy. But when you press C-\ to turn off the devil, it works just fine. Coincidence? Or is it that the M-\ patent applied to M-y is flawed in a subtle way? I guess Quail redefines the "kill ring" to become a "kill item" or a special kind of selection, that gets lost really quickly. Yes, that'd make sense. I'm making notes for another patent. * Quail sucks donkey balls through nano tubes. I've run out of steam. Time to learn more ways in which Quail is broken. Or it might soon be time to deliver my yearly anti-ISO2022 rant.