Subject: Re: bug#2375: 23.0.90; ^ in gnus summary buffer does not work in the nextstep build

From: David Engster <[email-masked]>
Date: Wed, 18 Feb 2009 22:15:12 +0100

Harald Maier <[email-masked]> writes:
> In the OS X nextstep build the GNUS function
>
>   gnus-summary-refer-parent-article (^)
>
> always raises the following error:
>
>   Debugger entered--Lisp error: (wrong-type-argument overlayp nil)
>     delete-overlay(nil)
>     ns-delete-working-text()
>     ns-unput-working-text()
>     call-interactively(ns-unput-working-text nil [(ns-unput-working-text)])
>
> This problem does not happen with the OS X X11 build. There the
> funktion works always fine, so it seems only a nextstep build problem.

I can confirm this. I don't know a solution, but a few remarks which
might help tracking down this bug:

First of all, this is not a Gnus issue, since doing M-x
gnus-summary-refer-parent-article works. Also, this problem effects any
binding for "^". For example, in the Gnus group buffer, where "^" runs
gnus-group-enter-server-mode, the same error occurs.

This only happens with keyboard layouts where "^" is a dead key on Mac
OS X, e.g. the German layout. When I switch to US layout, the "^" is not
a dead key and this error does not happen. Therefore, this issue seems
to be a problem with the NS port not correctly handling dead keys. My
guess would be that the problem lies in this piece of code in
src/keyboard.c:

if defined (HAVE_NS)
      else if (event->kind == NS_TEXT_EVENT)
        {
          if (event->code == KEY_NS_PUT_WORKING_TEXT)
            obj = Fcons (intern ("ns-put-working-text"), Qnil);
          else
            obj = Fcons (intern ("ns-unput-working-text"), Qnil);
          kbd_fetch_ptr = event + 1;
        }
#endif

-David