aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGerd Moellmann2000-12-28 13:38:55 +0000
committerGerd Moellmann2000-12-28 13:38:55 +0000
commitf1cb0a258473258fa307806cad134de0d25970f5 (patch)
tree00449cad7a3908717242a2290642f979f9c92acd /src
parent5a7cb8f13db7a034020435845486ad2d735355dd (diff)
downloademacs-f1cb0a258473258fa307806cad134de0d25970f5.tar.gz
emacs-f1cb0a258473258fa307806cad134de0d25970f5.zip
(push_key_description): Add parameter FORCE_MULTIBYTE.
If set, print multibyte text. (Fsingle_key_description): Call push_key_description with FORCE_MULTIBYTE set. (describe_buffer_bindings): Likewise.
Diffstat (limited to 'src')
-rw-r--r--src/keymap.c33
1 files changed, 21 insertions, 12 deletions
diff --git a/src/keymap.c b/src/keymap.c
index 0c1a1146d15..094dac4d13c 100644
--- a/src/keymap.c
+++ b/src/keymap.c
@@ -1768,9 +1768,10 @@ spaces are put between sequence elements, etc.")
1768} 1768}
1769 1769
1770char * 1770char *
1771push_key_description (c, p) 1771push_key_description (c, p, force_multibyte)
1772 register unsigned int c; 1772 register unsigned int c;
1773 register char *p; 1773 register char *p;
1774 int force_multibyte;
1774{ 1775{
1775 unsigned c2; 1776 unsigned c2;
1776 1777
@@ -1859,13 +1860,23 @@ push_key_description (c, p)
1859 } 1860 }
1860 else if (c < 128 1861 else if (c < 128
1861 || (NILP (current_buffer->enable_multibyte_characters) 1862 || (NILP (current_buffer->enable_multibyte_characters)
1862 && SINGLE_BYTE_CHAR_P (c))) 1863 && SINGLE_BYTE_CHAR_P (c)
1863 *p++ = c; 1864 && !force_multibyte))
1865 {
1866 *p++ = c;
1867 }
1864 else 1868 else
1865 { 1869 {
1866 if (NILP (current_buffer->enable_multibyte_characters) 1870 int valid_p = SINGLE_BYTE_CHAR_P (c) || char_valid_p (c, 0);
1867 || SINGLE_BYTE_CHAR_P (c) 1871
1868 || ! char_valid_p (c, 0)) 1872 if (force_multibyte && valid_p)
1873 {
1874 if (SINGLE_BYTE_CHAR_P (c))
1875 c = unibyte_char_to_multibyte (c);
1876 p += CHAR_STRING (c, p);
1877 }
1878 else if (NILP (current_buffer->enable_multibyte_characters)
1879 || valid_p)
1869 { 1880 {
1870 int bit_offset; 1881 int bit_offset;
1871 *p++ = '\\'; 1882 *p++ = '\\';
@@ -1877,9 +1888,7 @@ push_key_description (c, p)
1877 } 1888 }
1878 } 1889 }
1879 else 1890 else
1880 { 1891 p += CHAR_STRING (c, p);
1881 p += CHAR_STRING (c, p);
1882 }
1883 } 1892 }
1884 1893
1885 return p; 1894 return p;
@@ -1926,7 +1935,7 @@ around function keys and event symbols.")
1926 { 1935 {
1927 char tem[KEY_DESCRIPTION_SIZE]; 1936 char tem[KEY_DESCRIPTION_SIZE];
1928 1937
1929 *push_key_description (XUINT (key), tem) = 0; 1938 *push_key_description (XUINT (key), tem, 1) = 0;
1930 return build_string (tem); 1939 return build_string (tem);
1931 } 1940 }
1932 } 1941 }
@@ -2445,10 +2454,10 @@ You type Translation\n\
2445 alternate_heading = 0; 2454 alternate_heading = 0;
2446 } 2455 }
2447 2456
2448 bufend = push_key_description (translate[c], buf); 2457 bufend = push_key_description (translate[c], buf, 1);
2449 insert (buf, bufend - buf); 2458 insert (buf, bufend - buf);
2450 Findent_to (make_number (16), make_number (1)); 2459 Findent_to (make_number (16), make_number (1));
2451 bufend = push_key_description (c, buf); 2460 bufend = push_key_description (c, buf, 1);
2452 insert (buf, bufend - buf); 2461 insert (buf, bufend - buf);
2453 2462
2454 insert ("\n", 1); 2463 insert ("\n", 1);