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.