mirror of
https://github.com/vim/vim.git
synced 2025-09-24 03:44:06 -04:00
patch 8.1.0059: displayed digraph for "ga" wrong with 'encoding' "cp1251"
Problem: Displayed digraph for "ga" wrong with 'encoding' "cp1251". Solution: Convert from 'encoding' to "utf-8" if needed. (closes #3015)
This commit is contained in:
@@ -1979,14 +1979,37 @@ do_digraph(int c)
|
|||||||
* If not found return NULL.
|
* If not found return NULL.
|
||||||
*/
|
*/
|
||||||
char_u *
|
char_u *
|
||||||
get_digraph_for_char(val)
|
get_digraph_for_char(int val_arg)
|
||||||
int val;
|
|
||||||
{
|
{
|
||||||
|
int val = val_arg;
|
||||||
int i;
|
int i;
|
||||||
int use_defaults;
|
int use_defaults;
|
||||||
digr_T *dp;
|
digr_T *dp;
|
||||||
static char_u r[3];
|
static char_u r[3];
|
||||||
|
|
||||||
|
#if defined(FEAT_MBYTE) && defined(USE_UNICODE_DIGRAPHS)
|
||||||
|
if (!enc_utf8)
|
||||||
|
{
|
||||||
|
char_u buf[6], *to;
|
||||||
|
vimconv_T vc;
|
||||||
|
|
||||||
|
// convert the character from 'encoding' to Unicode
|
||||||
|
i = mb_char2bytes(val, buf);
|
||||||
|
vc.vc_type = CONV_NONE;
|
||||||
|
if (convert_setup(&vc, p_enc, (char_u *)"utf-8") == OK)
|
||||||
|
{
|
||||||
|
vc.vc_fail = TRUE;
|
||||||
|
to = string_convert(&vc, buf, &i);
|
||||||
|
if (to != NULL)
|
||||||
|
{
|
||||||
|
val = utf_ptr2char(to);
|
||||||
|
vim_free(to);
|
||||||
|
}
|
||||||
|
(void)convert_setup(&vc, NULL, NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
for (use_defaults = 0; use_defaults <= 1; use_defaults++)
|
for (use_defaults = 0; use_defaults <= 1; use_defaults++)
|
||||||
{
|
{
|
||||||
if (use_defaults == 0)
|
if (use_defaults == 0)
|
||||||
|
@@ -465,4 +465,16 @@ func Test_show_digraph()
|
|||||||
bwipe!
|
bwipe!
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_show_digraph_cp1251()
|
||||||
|
if !has('multi_byte')
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
new
|
||||||
|
set encoding=cp1251
|
||||||
|
call Put_Dig("='")
|
||||||
|
call assert_equal("\n<\xfa> <|z> <M-z> 250, Hex fa, Oct 372, Digr ='", execute('ascii'))
|
||||||
|
set encoding=utf-8
|
||||||
|
bwipe!
|
||||||
|
endfunc
|
||||||
|
|
||||||
" vim: shiftwidth=2 sts=2 expandtab
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
@@ -761,6 +761,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
59,
|
||||||
/**/
|
/**/
|
||||||
58,
|
58,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user