home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / gnu / lucid / bug-lucid-emacs / text0212.txt < prev    next >
Encoding:
Text File  |  1993-07-04  |  2.4 KB  |  51 lines

  1.  
  2. I personally find it very difficult to argue in favor of the GNU
  3. keymap structure.  It seems to me that building keymaps using the
  4. simple types has the following arguments in its favor:
  5.  
  6. 1) It requires no changes to allocation code or GC code - things do break.
  7. 2) It requires no new read syntax or printed representation.
  8. 3) You don't need to worry about thinking of all the necessary
  9.    primitives beforehand, since people can roll their own.
  10. 4) It's obvious, just by looking at the structure, how they work.
  11. 5) You get leverage from the ability to apply existing routines (assq,
  12.    etcetera) to them.
  13.  
  14. But those are kind of stretched.
  15.  
  16. 1) Is is really that hard to write allocation, parsing, and unparsing
  17.    code?  ("Are we not hackers?" :-) )
  18. 2) Come on, it's not hard to come up with a good set of primitives.  A
  19.    keymap is a function mapping events onto commands.  How many things
  20.    do you need to do with that?
  21. 3) It's *not* obvious how to use them any more!  Did you know that a
  22.    binding for t in an GNU keymap structure acts like a default,
  23.    catch-all binding, providing the only way to create a keymap that
  24.    catches *all* events?  And exactly what does it mean to nconc one
  25.    keymap onto another?  Are you *sure*?
  26. 4) You can no longer effectively apply existing utility routines like
  27.    assq to an GNU keymap.  assq doesn't know about the vectors.  The
  28.    keymaps are too hairy to be operated on by anything but code which
  29.    knows it's dealing with a keymap.
  30. 5) It's a pain to upgrade.  The keymap changes are probably the
  31.    largest source of broken a lot of code in GNU 19.  Anyone who
  32.    thinks it's not going to happen again is a doodyhead.
  33. 6) It restricts your implementation.  If you expect people to poke
  34.    around in the data structure in the raw, this discourages you from
  35.    making reasonable improvements, like the Lucid reverse indices.
  36.  
  37. I have yet to hear a single mildly persuasive argument from anyone in
  38. favor of the GNU keymap structure.
  39.  
  40. RMS is this great programmer.  He's got GCC.  He's got Emacs.  He's
  41. got the MacArthur.  He's got this luxurious pad on the fourth floor of
  42. posh NE43.  I go to work for him, hoping some of that will rub off.
  43. It turns out that the single most common theme in his thought is,
  44. "That's too much work."  "That's going to take too long."  "Don't
  45. bother."
  46.  
  47. Is that what it takes?  Is this the punchline of my lifelong pursuit
  48. of hackerdom?  I'm apprenticing myself to a blacksmith, just in case.
  49. :-)
  50.  
  51.