[PATCH] Abstract out a display-table-specific API (2)

Aidan Kehoe kehoea at parhasard.net
Tue Dec 25 00:45:03 EST 2007


 Ar an ceathrú lá is fiche de mí na Nollaig, scríobh mike.kupfer at xemacs.org: 

 > (moved to xemacs-beta)
 > 
 > Hi Aidan, I've got a couple questions about the gnus patch.
 > 
 > First, I'm nervous about XEmacs-specific patches that I would have to
 > apply every time I resync with upstream.  

Yeah; I need to ask the Gnus people to apply it too. But for the moment I’m
worried about XEmacs-specific compatibility.

 > Is there some difference between XEmacs char-tables and GNU Emacs
 > char-tables that keeps us from using aref/aset?  

Yes. The XEmacs char tables are opaque objects, not vectors.

Okay, and now I check, I realise my “portable” code fails on GNU
Emacs. Here’s a version that works there, where char-tables are sequences
and really close to being vectors, though not quite:

(defun-when-void put-display-table (range value display-table)
  "Set the value for char RANGE to VALUE in DISPLAY-TABLE.  "
  (if (sequencep display-table)
      (aset display-table range value)
    (put-char-table range value display-table)))

(defun-when-void get-display-table (character display-table)
  "Find value for CHARACTER in DISPLAY-TABLE.  "
  (if (sequencep display-table)
      (aref display-table character)
    (get-char-table character display-table)))

 > The GNU Emacs Info page for display tables says
 > 
 > 	 A display table is actually a char-table (*note Char-Tables::)
 > 	 with `display-table' as its subtype.
 > 
 > and it uses aset in its example.
 > 
 > Failing that, have you discussed this change with the gnus team
 > (ding at gnus.org)?  Or is there at least some canonical way to tag
 > XEmacs-specific changes, to make resyncs easier?
 > 
 > Second, you appear to be introducing multiple copies of
 > put-display-table and get-display-table, both in this patch set and in
 > the patches you committed to xemacs-base and misc-games.  Shouldn't
 > there be just one copy in the packages tree, presumably in xemacs-base?

disp-table.el, which provides the display table code--make-display-table,
frob-display-table, describe-display-table, and in
http://mid.gmane.org/18288.1954.87217.762309@parhasard.net ,
put-display-table and get-display-table--is in core. Yeah, there’s a decent
argument that it might be better in packages, but it isn’t there for the
moment. There isn’t any other obvious place to put these two functions, IMO,
and moving them away from #'make-display-table and #'describe-display-table
will make for less clear code. 

The defun-when-void means any existing definition won’t be overridden.

-- 
¿Dónde estará ahora mi sobrino Yoghurtu Nghé, que tuvo que huir
precipitadamente de la aldea por culpa de la escasez de rinocerontes?



More information about the XEmacs-Beta mailing list