Subject: bug#5785: 24.0.50; Fail to bind C-. in emacs -nw from xterm.

From: Thierry Volpiatto <[email-masked]>
Date: Sat, 27 Mar 2010 00:02:56 +0100

Dan Nicolaescu <[email-masked]> writes:

> Thierry Volpiatto <[email-masked]> writes:
>
>   > Hi,
>   > I am unable to bind C-. in xterm.
>   > 
>   > A)
>   > 
>   > 1) I start xterm without my config of .Xdefaults.
>
> Can you please show the results of 
> xrdb -q | grep -i xterm 
>
> at this point?
Nothing (i have no .Xressources)

> Do you have any .Xdefaults settings for emacs?
> Can you please disable those too and verify that 
> xrdb -q | grep -i emacs
> doesn't print anything?
Nothing.

>   > 2) In scratch i write and eval:
>
> Please use 
> emacs -Q -nw
>
> for this step
>
>   > (global-set-key (kbd "C-.") #'(lambda () (interactive) (message "hello")))
>   > 
>   > 3) When i hit C-. "~" is printed in buffer (*scratch*).
>   > 
>   > B)
>   > 
>   > If i bind the same key (C-.) in a function that use the minibuffer, 
>   > (define-key anything-map (kbd "C-.") 'anything-find-files-down-one-level)
>   > 
>   > then,
>   > 27;6;46~ is printed in anything prompt.
>   > 
>   > NOTE:
>   > ----
>   > Also,
>   > Alt doesn't work in emacs without proper Xterm config in .Xdefault:
>   > XTerm*metaSendsEscape:  True
>
> This is a sign that something might be wrong in your setup, it should
> work by default.
Maybe, i don't use much Xterm, my favorite is urxvt.
But urxvt handle M-( correctly by default (No config).
So same test as above in same conditions work fine in urxvt and not in
Xterm.
So if it was my setting at system level, it should fail also with urxvt.

>   > Important settings:
>   >   value of $LC_ALL: C
>   >   value of $LC_COLLATE: C
>   >   value of $LC_CTYPE: fr_FR.UTF-8
>   >   value of $LC_MESSAGES: nil
>   >   value of $LC_MONETARY: nil
>   >   value of $LC_NUMERIC: nil
>   >   value of $LC_TIME: nil
>   >   value of $LANG: fr_FR.UTF-8
>   >   value of $XMODIFIERS: nil
>   >   locale-coding-system: utf-8-unix
>   >   default enable-multibyte-characters: t
>
> I don't know much about LANG stuff, but is it OK to have LANG=fr_FR.UTF-8 and LC_ALL=C? 

It's not a problem, LC_ALL=C is set locally in Emacs with setenv to
avoid other bug with shell prompts in Emacs, but that's another problem.
Anyway when set, LC_ALL overhide all other locale setting.
OTOH LANG set all to it's value but allow setting other variables.
So in emacs (no emacs -Q), my locale is:
,----
| LANG=fr_FR.UTF-8
| LC_CTYPE="C"
| LC_NUMERIC="C"
| LC_TIME="C"
| LC_COLLATE="C"
| LC_MONETARY="C"
| LC_MESSAGES="C"
| LC_PAPER="C"
| LC_NAME="C"
| LC_ADDRESS="C"
| LC_TELEPHONE="C"
| LC_MEASUREMENT="C"
| LC_IDENTIFICATION="C"
| LC_ALL=C
`----

But when i start emacs -Q, my locale are all utf-8
except LC_COLLATE for US sorting, that' my system settings.

,----
| LANG=fr_FR.UTF-8
| LC_CTYPE=fr_FR.UTF-8
| LC_NUMERIC="fr_FR.UTF-8"
| LC_TIME="fr_FR.UTF-8"
| LC_COLLATE=C
| LC_MONETARY="fr_FR.UTF-8"
| LC_MESSAGES="fr_FR.UTF-8"
| LC_PAPER="fr_FR.UTF-8"
| LC_NAME="fr_FR.UTF-8"
| LC_ADDRESS="fr_FR.UTF-8"
| LC_TELEPHONE="fr_FR.UTF-8"
| LC_MEASUREMENT="fr_FR.UTF-8"
| LC_IDENTIFICATION="fr_FR.UTF-8"
| LC_ALL=
`----

So when testing emacs -Q -nw in Xterm i have these locales.
And no .Xdefaults or .Xressources.
 
> Maybe there's a problem with the way your keyboard is set up?  Maybe
> someone that knows about french keyboards can help... 
So i think my keyboard config is ok.

>   > Load-path shadows:

[...]

>   > /home/thierry/elisp/ngnus/lisp/smiley hides /usr/share/emacs/24.0.50/lisp/gnus/smiley
>   > /home/thierry/elisp/ngnus/lisp/score-mode hides /usr/share/emacs/24.0.50/lisp/gnus/score-mode
>   > /home/thierry/elisp/ngnus/lisp/gnus-start hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-start
>   > /home/thierry/elisp/emms/lisp/tq hides /usr/share/emacs/24.0.50/lisp/emacs-lisp/tq
>   > /home/thierry/elisp/ngnus/lisp/time-date hides /usr/share/emacs/24.0.50/lisp/calendar/time-date
>   > /home/thierry/elisp/ngnus/lisp/parse-time hides /usr/share/emacs/24.0.50/lisp/calendar/parse-time
>
> These are no good.  Do all these go away if you use emacs -Q -nw  ?
Yes that's ngnus, it is not enabled in emacs -Q. That's remind me to
disable it and use emacs gnus.

-- 
Thierry Volpiatto
Gpg key: http://pgp.mit.edu/