[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: upcase-region changes 'i' to 'P'
From: |
Richard M. Stallman |
Subject: |
Re: upcase-region changes 'i' to 'P' |
Date: |
Fri, 30 Sep 2005 13:33:05 -0400 |
> This looks like it's in a mode designed for Turkish, turning i into
> capital I-with-dot. Meanwhile, capital I corresponds to lower-case
> dotless i.
>
> You must have done something that enabled this mode. What was it?
> (I am not sure how one is supposed to enable it.)
The problem can be reproduced also if you do:
env LANG=C EMACS_UNIBYTE=1 emacs
I did some debugging and found that the problem
is called by this code
if (NILP (up))
{
up = Fmake_char_table (Qcase_table, Qnil);
map_char_table (set_identity, Qnil, table, table, up, 0, indices);
map_char_table (shuffle, Qnil, table, table, up, 0, indices);
XCHAR_TABLE (table)->extras[0] = up;
specifically the line that calls shuffle. This occurs because the
downcase table has an entry for capital-I-with-dot, whose value is i.
This patch seems to fix it, but I am not sure it is entirely correct.
*** mule-cmds.el 24 Sep 2005 22:42:53 -0400 1.283
--- mule-cmds.el 29 Sep 2005 19:50:32 -0400
***************
*** 1867,1873 ****
(load syntax nil t))
;; No information for syntax and case. Reset to the defaults.
(let ((syntax-table (standard-syntax-table))
! (case-table (standard-case-table))
(ch (if (eq window-system 'pc) 128 160)))
(while (< ch 256)
(modify-syntax-entry ch " " syntax-table)
--- 1867,1873 ----
(load syntax nil t))
;; No information for syntax and case. Reset to the defaults.
(let ((syntax-table (standard-syntax-table))
! (case-table (make-char-table 'case-table))
(ch (if (eq window-system 'pc) 128 160)))
(while (< ch 256)
(modify-syntax-entry ch " " syntax-table)