1 diff -up vim73/runtime/doc/eval.txt.780 vim73/runtime/doc/eval.txt
2 --- vim73/runtime/doc/eval.txt.780 2013-01-28 13:41:04.000000000 +0100
3 +++ runtime/doc/eval.txt 2013-01-28 13:44:58.000000000 +0100
4 @@ -1705,7 +1705,7 @@ call( {func}, {arglist} [, {dict}])
5 any call {func} with arguments {arglist}
6 ceil( {expr}) Float round {expr} up
7 changenr() Number current change number
8 -char2nr( {expr}) Number ASCII value of first char in {expr}
9 +char2nr( {expr}[, {utf8}]) Number ASCII/UTF8 value of first char in {expr}
10 cindent( {lnum}) Number C indent for line {lnum}
11 clearmatches() none clear all matches
12 col( {expr}) Number column nr of cursor or mark
13 @@ -1862,7 +1862,7 @@ mkdir( {name} [, {path} [, {prot}]])
14 mode( [expr]) String current editing mode
15 mzeval( {expr}) any evaluate |MzScheme| expression
16 nextnonblank( {lnum}) Number line nr of non-blank line >= {lnum}
17 -nr2char( {expr}) String single char with ASCII value {expr}
18 +nr2char( {expr}[, {utf8}]) String single char with ASCII/UTF8 value {expr}
19 or( {expr}, {expr}) Number bitwise OR
20 pathshorten( {expr}) String shorten directory names in a path
21 pow( {x}, {y}) Float {x} to the power of {y}
22 @@ -2282,13 +2282,17 @@ changenr() *changenr()*
23 redo it is the number of the redone change. After undo it is
24 one less than the number of the undone change.
26 -char2nr({expr}) *char2nr()*
27 +char2nr({expr}[, {utf8}]) **char2nr()*
28 Return number value of the first char in {expr}. Examples: >
29 char2nr(" ") returns 32
30 char2nr("ABC") returns 65
31 -< The current 'encoding' is used. Example for "utf-8": >
32 +< When {utf8} is omitted or zero, the current 'encoding' is
34 + Example for "utf-8": >
35 char2nr("á") returns 225
36 char2nr("á"[0]) returns 195
37 + With {utf8} set to 1, always treat as utf-8 characters.
38 + A combining character is a separate character.
39 < |nr2char()| does the opposite.
41 cindent({lnum}) *cindent()*
42 diff -up vim73/src/eval.c.780 vim73/src/eval.c
43 --- vim73/src/eval.c.780 2013-01-28 13:41:04.000000000 +0100
44 +++ src/eval.c 2013-01-28 13:41:04.000000000 +0100
45 @@ -7854,7 +7854,7 @@ static struct fst
46 {"ceil", 1, 1, f_ceil},
48 {"changenr", 0, 0, f_changenr},
49 - {"char2nr", 1, 1, f_char2nr},
50 + {"char2nr", 1, 2, f_char2nr},
51 {"cindent", 1, 1, f_cindent},
52 {"clearmatches", 0, 0, f_clearmatches},
54 @@ -8003,7 +8003,7 @@ static struct fst
55 {"mzeval", 1, 1, f_mzeval},
57 {"nextnonblank", 1, 1, f_nextnonblank},
58 - {"nr2char", 1, 1, f_nr2char},
59 + {"nr2char", 1, 2, f_nr2char},
61 {"pathshorten", 1, 1, f_pathshorten},
63 @@ -9303,7 +9303,17 @@ f_char2nr(argvars, rettv)
67 - rettv->vval.v_number = (*mb_ptr2char)(get_tv_string(&argvars[0]));
71 + if (argvars[1].v_type != VAR_UNKNOWN)
72 + utf8 = get_tv_number_chk(&argvars[1], NULL);
75 + rettv->vval.v_number = (*utf_ptr2char)(get_tv_string(&argvars[0]));
77 + rettv->vval.v_number = (*mb_ptr2char)(get_tv_string(&argvars[0]));
81 rettv->vval.v_number = get_tv_string(&argvars[0])[0];
82 @@ -14360,7 +14370,16 @@ f_nr2char(argvars, rettv)
86 - buf[(*mb_char2bytes)((int)get_tv_number(&argvars[0]), buf)] = NUL;
90 + if (argvars[1].v_type != VAR_UNKNOWN)
91 + utf8 = get_tv_number_chk(&argvars[1], NULL);
93 + buf[(*utf_char2bytes)((int)get_tv_number(&argvars[0]), buf)] = NUL;
95 + buf[(*mb_char2bytes)((int)get_tv_number(&argvars[0]), buf)] = NUL;
100 diff -up vim73/src/version.c.780 vim73/src/version.c
101 --- vim73/src/version.c.780 2013-01-28 13:41:04.000000000 +0100
102 +++ src/version.c 2013-01-28 13:41:04.000000000 +0100
103 @@ -726,6 +726,8 @@ static char *(features[]) =
104 static int included_patches[] =
105 { /* Add new patch number below this line */