Re: [COMMIT] Rename the ascii-character property, support more keysyms

Aidan Kehoe <[email protected]> Thu, 7 Jul 2005 06:16:10 +0200
Newsgroups gmane.emacs.xemacs.design,gmane.emacs.xemacs.patches
Message-ID <[email protected]>
 Ar an ceathr=C3=BA l=C3=A1 de m=C3=AD I=C3=BAil, scr=C3=ADobh Stephen J.=
 Turnbull:=20

 > [...] All the query functions, on the other hand, give coordinates
 > relative to an Emacs window.

Hmm, ugly design, as far as I can see. Could probably be worked around wi=
th
loads of judicious hiding of toolbars and menubars--but what was the
rationale for it?

 > [...]
 >     Aidan> The revisions of x-compose.el were a consequence of the
 >     Aidan> removal of x-iso8859-1.el; the removal of x-iso8859-1.el
 >     Aidan> was a consequence of ####=E2=80=99s that said =E2=80=9Cwe s=
hould remove
 >     Aidan> x-iso8859-1.el when we can,=E2=80=9D which is, to me, an
 >     Aidan> indication that such a change should not be controversial.
 >=20
 > It's exactly the opposite.  It's an indication that the prerequisites =
to
 > the recommended change are probably controversial.  This is especially
 > true with Ben and Jamie comments, as neither of them was shy about
 > ripping out code they didn't like if they thought that they had the
 > relevant use cases covered in other ways.

Well, in this case, those comments were written long before XEmacs had
support for non-Latin-1, so I=E2=80=99m pretty sure those use cases are c=
overed by
these changes.=20

 >     Aidan> The problems being unrelated doesn=E2=80=99t make the patch
 >     Aidan> incoherent.
 >=20
 > Of course it does.=20

I still disagree. Trivially, you could criticise my documentation and my
function names in a ten line patch, and there we would have unrelated
problems in a presumably coherent patch.=20

 > It means that the reviewer either has to split the patch to review par=
t
 > of it, or make sufficient time to review the whole thing.  Go review t=
he
 > Wing vs. the World threads in the xemacs-review archives.

I=E2=80=99ve read plenty of Wing vs. world threads, and patches, and this=
 patch was,
in my judgement, an order of magnitude less scattered.=20

 > You are free to commit whatever you like to a branch, and request
 > testing of that branch, etc.=20

And people are free not to test the branch, just as they are free not to
test patches when I explicitly request that before committing.

 > If you want stuff in the mainline, though, it needs to pass review.  I=
f
 > you want it in quickly, it needs to pass review quickly.  To get that,
 > you need to get people to review, which means making it convenient for
 > them to review.  The combination of the jit binding patch, the
 > ascii-character patch, and the x-compose patch probably cost you a
 > month's delay from me for the ascii-character patch and a couple of we=
eks
 > on the jit binding patch, and I still haven't gotten to actually
 > _testing_ them.

And who says that if I had split it it would have been any faster?=20

 >     Aidan> W.r.t. Adrian=E2=80=99s breakage, I asked, twice, for testi=
ng of
 >     Aidan> that change from Windows users before it was committed,
 >     Aidan> with no response. I don=E2=80=99t see how I could have done=
 that
 >     Aidan> differently without installing VMWare and paying our
 >     Aidan> friends in Redmond whatever it is that Visual C++ costs
 >     Aidan> these days.
 >=20
 > My recommendation is trivial: don't commit patches you can't test on
 > some common platforms and don't have excellent understanding of how
 > the mechanism works on some of the affected platforms.  That requires
 > less effort on your part than any other way.  :-)  Choose stuff that
 > all the active reviewers can review.  There's plenty of work to be
 > done on Lisp code, which is platform-independent or buggy by
 > definition.  "Unicode Inside" should be mostly platform-independent.
 >=20
 > If keyboard work is really that important to you, there are a number
 > of possibilities.  I'm sure the SourceForge compile farm has Windows
 > boxes to at least ensure it builds. =20

Nope.=20

 > You must have friends with Windows boxes you could borrow for testing.

Most of my friends in this part of the world are humanities folk, and I
don=E2=80=99t know anyone with Visual C++. On the plus side, I haven=E2=80=
=99t had to argue
with wide-eyed unconditional opponents of software patents in months, tha=
nks
be to Sweevo, the God of Cut Timber.=20

 > I have boxes out the wazoo (due to insane budget policies in my
 > institution), I could sacrifice one to Windows testing, the constraint
 > being my time, which will start to be available in reasonable chunks i=
n
 > about 10 days.  You could write directly to Adrian for testing,
 > explaining that this is a pet project but you feel unable to commit
 > without a test report.  You could write Ben Wing and Andy Piper
 > personally for coding advice.  Ben is very likely to give a useful
 > response even if he seems to be ignoring the lists entirely.  Andy is
 > less so due to work pressure, but he's not been entirely absent so I'm
 > sure he'd take one inquiry in good spirit, and let you know on what te=
rms
 > he's (un)available if it's inconvenient for him now.

So, if the mailing lists are doing their job, all these are equivalent to=
 a
an open-ended request on them, no?

 >     >> Uh, what's the hurry?
 >=20
 >     Aidan> The faster the process for one change is, the more time
 >     Aidan> there is for other changes. I don=E2=80=99t see anything
 >     Aidan> controversial about that--XEmacs is unfortunately not at
 >     Aidan> the point of asymptotically approaching perfection, such
 >     Aidan> that there is a small number of things left to do :-( .
 >=20
 > Exactly.  With so many things to do, why did you choose to do this?

I was doing lots of things; I implemented this in a break from swearing a=
t
my unicode-internally code for getting alignment wrong when inserting int=
o a
buffer.

 > With the need for speed, why did you combine three things that you
 > should have known in advance I was going to resist individually into a
 > single patch, pretty much ensuring that the whole thing would get
 > vetoed?

Why should I have known that in advance? I mean, I understand and accept
your objections to renaming ascii-character in the way I did now, but I a=
m
still, several mails later, having trouble appreciating your trepidation =
at
the other changes. I don=E2=80=99t read minds any more than anyone else.=20

 >     >> It's a reference to Meta-handling, and there's no question that
 >     >> it can screw up ASCII users to the extent that they do use
 >     >> 8-bit-is-meta.
 >=20
 >     Aidan> I didn=E2=80=99t change any meta handling--I only removed t=
he
 >     Aidan> MAP-DEVICE-KEY-NAMES argument, which has a tenuous
 >     Aidan> relationship to meta handling.
 >=20
 > According to the documentation of `set-input-mode', high-bit handling
 > is a three-state switch: ignore the high bit, interpret the high bit
 > as meta, interpret the high bit as C1/GR.  The underlying function
 > used to have two booleans (for this purpose) with the "both-set" state
 > disallowed, it now has one, and therefore something has changed.  Is
 > that not true?

It=E2=80=99s not true; the behaviour of set-input-mode is exactly as it w=
as before.

 > Now, now.  :-)  They're not glaciated; there's plenty of work being
 > done on the emacs-unicode2 branch it would seem, not to mention
 > various people's private branches.  I'll grant that I did it very
 > differently (rather than freeze for a year, I released as "gamma", a
 > formalization of "point zero releases always suck"), but the practical
 > result isn't all that different---except that as usual the released
 > GNU Emacs will be better documented and more robust than any XEmacs
 > since before it was called XEmacs, and there may be a few *nix distros
 > left that distribute 21.4a rather than 22.0-pre.

Labels matter, and stability is easy to do when you have their lack of
energy with regard to incorporating new features. Their multi-tty support
has been stable for months, for example, and there=E2=80=99s not a whispe=
r of it
being integrated.=20

 > As for the comment-face silliness, he's waiting for the documentation
 > kind of stuff to get done, and like everybody in this business, he
 > can't resist jumping into a flamewar over trivialities.  BFD.

I don=E2=80=99t think that it=E2=80=99s a big deal, just an indication of=
 bad
judgement. Ditto with his reaction to Stefan Monnier=E2=80=99s fatherhood=
,
cf. http://edward.oconnor.cx/2005/04.shtml for details.=20

 > I think that current policy at GNU Emacs is a recipe for permanently
 > making GNU Emacs as irrelevant as XEmacs has become to the vast
 > majority of developers, but "That's Just My Opinion---I Could Be
 > Wrong."[1]  Even if that's your opinion, too.  :-)  30-some active GNU
 > Emacs developers support RMS in doing this, even if they disagree on a
 > specific here or there; that's about as big a vote of confidence as
 > any Emacs maintainer can get, no?

Hey, the Catholic Church counts a billion believers--that doesn=E2=80=99t=
 make its
stance on contraception right. Or even arguable.=20

 >     >> What XEmacs has over GNU Emacs is a modern design (so to
 >     >> speak), but except for purely technical improvements (the
 >     >> dumper, the MINIMAL_TAGBITS stuff, etc), the important ones go
 >     >> back to Jamie's.  Some of Ben's stuff is really interesting
 >     >> (specifiers, lstreams, etc), but for whatever reason Ben's APIs
 >     >> seem to be an impediment to new developers, unlike the Lucid
 >     >> event loop, extents, creation of various abstract data types,
 >     >> etc.
 >=20
 >     Aidan> Did Jamie=E2=80=99s changes ship with nice sample uses of t=
he APIs?
 >=20
 > Yes, one.  It was called "Lucid Emacs".  This isn't entirely
 > facetious; the Lucid folks (not just Jamie) generally didn't design
 > huge APIs without having applications for them, whereas that's an MO
 > that immediately fingers Ben as the culprit.

Ah, okay, that does make sense.=20

 >     Aidan> Because, for example, I ended up reading code to work out
 >=20
 > You could have asked me; I use that feature all the time.  :-)

If I asked questions about every tiny detail I was having trouble
understanding, the traffic in comp.emacs.xemacs would be 90% my unanswere=
d
questions, I suspect. :-) .

 >     Aidan> that you could pass an actual buffer object as the LOCALE
 >     Aidan> argument to set-specifier
 >=20
 > Did you submit a document patch?  :-)  Note that this is one of Ben's
 > APIs, which are notorious for their unreadability and unreadable
 > documentation (and not just according to David Kastrup; David's
 > reports have provoked hundreds of lines of doc patches from developers
 > who at least sympathize with him even while they say they understood
 > it the first time ;-).

I need to look into where to put it; in some sort of general introduction=
 to
Ben=E2=80=99s APIs, if such a thing exists.=20

 > [...] BTW, it's actually a sarcastic reference to the historical pract=
ice in
 > Mule of favoring Japanese.  The irony of finding myself doing it, too,
 > because I was chasing other bugs at the time, well....  That comment
 > embarrasses me every time I see it, and one of these days I'll lose
 > patience with it and fix the underlying problem.

So you put off integrating the Xft patch for however many months because =
of
its crappy internationalisation support, and then went and integrated it
yourself, with crappy internationalisation support?

 > In general, the big problem with Mule is that most of the app and UI
 > coders have ignored it entirely, and the Mule coders (mostly Japanese
 > or ISO 8859-1 users) have set up the defaults so that Japanese support
 > is excellent out of the box.  Thus a lot of UIs and high level APIs
 > that should be there (eg for non-Latin fonts) just aren't.
 >
 >     >> Not even close.  If you know that your environment will have
 >     >> only one unibyte encoding in it that you care about ever,
 >     >> no-Mule XEmacs plus setting the font resource is all you need.
 >=20
 >     Aidan> Who knows that? Even Jamie Zawinski, bless his resolutely
 >     Aidan> ASCII-centric heart, has had our broken support for decent
 >     Aidan> typography bite him in the arse.
 >=20
 > We have no support for typography at all, what _are_ you talking
 > about?  Please don't confuse support for your favorite glyphs with
 > support for typography.

http://list-archive.xemacs.org/xemacs-beta/200408/msg00151.html=20

Sorry, =E2=80=9Ctypographical glyphs.=E2=80=9D

 > Anyway, people who only use XEmacs for program development can be
 > pretty sure they'll only see their favorite 8-bit codes.

No they can=E2=80=99t. They will eventually copy and paste something from=
 a mail of
mine, or someone=E2=80=99s blog, and end up with crap in the buffer.=20

 >     Aidan> Europeans tend to have much more interaction with other
 >     Aidan> European countries and their languages than do the Japanese
 >     Aidan> with other East Asian countries and their languages; I
 >     Aidan> think if we prevented people in German language
 >     Aidan> environments from typing =C3=B1, the result would complaint=
s
 >     Aidan> from people who use that functionality--from Uwe Brauer,
 >     Aidan> anyway, and from me, though I have been putting off signing
 >     Aidan> up for Spanish class--and oblivousness from everyone else.
 >=20
 > C'mon, stop trying to score easy debating points and start thinking
 > about the issues.  If there are only 96 GR characters available, we
 > can't support (eg) both Russian and German with the same unibyte coded
 > character set, at least not if we stick to the usual standards.

The editor (I=E2=80=99m not saying =E2=80=9Cwe=E2=80=9D because I=E2=80=99=
ll be shouting =E2=80=9Cuse Mule!=E2=80=9D
whenever anyone suggests such a thing) can support them with different fo=
nts
in different buffers, if they want to go in that direction.=20

 > Clearly we want to help users to avoid inadvertantly entering a bunch
 > of Cyrillic characters which will be mixed with Latin-1, ensuring that
 > one or the other is unreadable in plain text.

Well, they will get immediate feedback when what they=E2=80=99ve typed do=
esn=E2=80=99t
appear as such in the buffer, and if they are serious about trying to han=
dle
Mule in non-Mule, they can separate out the characters into distinct
buffers, changing the fonts in those buffers to have the appropriate char=
set
registry.=20

 > Similarly, some users might wish to be warned (or even prevented) from
 > entering Latin-1 characters not used by their current language, althou=
gh
 > I grant that's probably a stretch.

To me, it=E2=80=99s almost inconceivable.=20

 > How that UI gets set up (which is what would generate complaints) is a
 > completely different issue.  My point is that the existing API
 > provides a single set of objects (the pseudo-keysyms) that can be
 > tested for such a situation, while the approach you implemented does
 > not, since by the time the keystroke has been converted to something
 > that Lisp can handle it's already a character.
 >
 > Of course, based on my limited current knowledge, it's possible that
 > the pseudo-keysyms are never actually exposed to Lisp, and it's
 > possible, even likely, that the whole issue is moot in practice, as
 > most such users will convert to Mule.  If so, again, what's the hurry?

There=E2=80=99s also the option of doing this by wrapping self-insert-com=
mand; the
keysym will be available to Lisp from there.=20

 >     >> I think it's worth thinking about whether it's true and whether
 >     >> it matters before doing it, rather than trying it, having you
 >     >> go on permanent sabbatical, and then having the bugs show up.
 >     >> That happened altogether too often in the run-up to releasing
 >     >> 21.4.
 >=20
 >     Aidan> I think your general point is right there, but in this
 >     Aidan> specific case it=E2=80=99s not that warrented.
 >=20
 > Yeah, and all of everybody's commits are specific cases where it's not
 > warranted.  Otherwise they wouldn't have committed.  Ie, this kind of
 > principle has to applied as the general case, then you get this kind
 > of discussion in specific cases.

I meant this specific use case doesn=E2=80=99t warrant that thinking.=20

 > [...]
 >
 >     >> Don't know how many of the [ASCII-only bit-8-is-meta users]
 >     >> there are, but shouldn't the [number of Europeans et al who
 >     >> want GR entry] be "zero" because they'd have "bit-8-is-meta"
 >     >> off in the first place?
 >=20
 >     Aidan> You mean in the TTY?
 >=20
 > No, in XEmacs.  If they're stuck with a TTY that doesn't support GR
 > entry as such but does display GR glyphs, they've probably learned to
 > use the Meta map as a way to enter GR glyphs in 8-bit clean apps, I
 > would think.

M-x for oslash is the least intuitive thing in the world. Back when I was
using non-Mule, I bound a key to iso-accents-mode and accepted that I
wouldn=E2=80=99t be able to paste. Or is that even what you=E2=80=99re ta=
lking about?

 >     >> It's a symbol, for heaven's sake; that string could be used
 >     >> anywhere, and if it's used in a context where the contents are
 >     >> expected to be HPC because it's known to be a keysym name, it's
 >     >> unsafe.  What makes you think there are no such places?
 >=20
 >     Aidan> For example, because we munge the keysym names in the
 >     Aidan> platform specific code, mapping dead_diaeresis to
 >     Aidan> dead-diaeresis,
 >=20
 > That is bizarre.  From your previous comments I gather you didn't find
 > any rationale for it?  Just because hyphens look more Lisp-y?

Exactly.=20

 > However, it should be invertible, since hyphens are interpreted as
 > subtraction in C, and can't be part of identifiers.  No?=20

We munge some hyphens, we don=E2=80=99t munge others. But yeah, it is pro=
bably
invertible. Probably.=20

 > Do we munge any other characters?  (BTW, X11 is so weird; elsewhere in
 > that file, "diaeresis" is spelled "dieresis", and there's even a #defi=
ne
 > XK_Greek_IOTAdiaeresis XK_Greek_IOTAdieresis allegedly
 > backward-compatible with an old typo....)

English could really do with a standard orthography ...

 >     Aidan> so any future lookup in the X11 code is
 >     Aidan> guaranteed to give something nonsensical for some fraction
 >     Aidan> of its input. x-valid-keysym-name-p is already open to
 >     Aidan> being buggy in this direction, and I=E2=80=99m not aware of=
 any
 >     Aidan> open bug reports involving it.
 >=20
 > "Two wrongs make a right"?

=E2=80=9CTwo irrelevancies remain irrelevant,=E2=80=9D is closer to my fe=
eling on it ...

 >     Aidan> There is one place, in console-x.c, and I just introduced
 >     Aidan> it. Looks like I=E2=80=99ll be using the Qhpc #define in mo=
re than
 >     Aidan> one place, whee.
 >=20
 > Nobody said that working on XEmacs wouldn't be "work".  :-P

Nobody said there=E2=80=99d be much more English than code, either ...

--=20
=E2=80=9CI, for instance, am gung-ho about open source because my family =
is being
held hostage in Rob Malda=E2=80=99s basement. But who fact-checks me, or =
Enderle,
when we say something in public? No-one!=E2=80=9D -- Danny O=E2=80=99Brie=
n