diff --git a/7.4.324 b/7.4.324 new file mode 100644 index 0000000..7418d06 --- /dev/null +++ b/7.4.324 @@ -0,0 +1,190 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.324 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.324 +Problem: In Ex mode, cyrillic characters are not handled. (Stas Malavin) +Solution: Support multi-byte characters in Ex mode. (Yukihiro Nakadaira) +Files: src/ex_getln.c + + +*** ../vim-7.4.323/src/ex_getln.c 2014-05-29 14:36:26.156862577 +0200 +--- src/ex_getln.c 2014-06-12 19:33:10.440522741 +0200 +*************** +*** 2188,2193 **** +--- 2188,2194 ---- + int vcol = 0; + char_u *p; + int prev_char; ++ int len; + + /* Switch cursor on now. This avoids that it happens after the "\n", which + * confuses the system function that computes tabstops. */ +*************** +*** 2264,2270 **** + { + if (line_ga.ga_len > 0) + { +! --line_ga.ga_len; + goto redraw; + } + continue; +--- 2265,2281 ---- + { + if (line_ga.ga_len > 0) + { +! #ifdef FEAT_MBYTE +! if (has_mbyte) +! { +! p = (char_u *)line_ga.ga_data; +! p[line_ga.ga_len] = NUL; +! len = (*mb_head_off)(p, p + line_ga.ga_len - 1) + 1; +! line_ga.ga_len -= len; +! } +! else +! #endif +! --line_ga.ga_len; + goto redraw; + } + continue; +*************** +*** 2280,2286 **** + + if (c1 == Ctrl_T) + { +! long sw = get_sw_value(curbuf); + + p = (char_u *)line_ga.ga_data; + p[line_ga.ga_len] = NUL; +--- 2291,2297 ---- + + if (c1 == Ctrl_T) + { +! long sw = get_sw_value(curbuf); + + p = (char_u *)line_ga.ga_data; + p[line_ga.ga_len] = NUL; +*************** +*** 2300,2307 **** + /* redraw the line */ + msg_col = startcol; + vcol = 0; +! for (p = (char_u *)line_ga.ga_data; +! p < (char_u *)line_ga.ga_data + line_ga.ga_len; ++p) + { + if (*p == TAB) + { +--- 2311,2319 ---- + /* redraw the line */ + msg_col = startcol; + vcol = 0; +! p = (char_u *)line_ga.ga_data; +! p[line_ga.ga_len] = NUL; +! while (p < (char_u *)line_ga.ga_data + line_ga.ga_len) + { + if (*p == TAB) + { +*************** +*** 2309,2319 **** + { + msg_putchar(' '); + } while (++vcol % 8); + } + else + { +! msg_outtrans_len(p, 1); +! vcol += char2cells(*p); + } + } + msg_clr_eos(); +--- 2321,2334 ---- + { + msg_putchar(' '); + } while (++vcol % 8); ++ ++p; + } + else + { +! len = MB_PTR2LEN(p); +! msg_outtrans_len(p, len); +! vcol += ptr2cells(p); +! p += len; + } + } + msg_clr_eos(); +*************** +*** 2362,2368 **** + + if (IS_SPECIAL(c1)) + c1 = '?'; +! ((char_u *)line_ga.ga_data)[line_ga.ga_len] = c1; + if (c1 == '\n') + msg_putchar('\n'); + else if (c1 == TAB) +--- 2377,2392 ---- + + if (IS_SPECIAL(c1)) + c1 = '?'; +! #ifdef FEAT_MBYTE +! if (has_mbyte) +! len = (*mb_char2bytes)(c1, +! (char_u *)line_ga.ga_data + line_ga.ga_len); +! else +! #endif +! { +! len = 1; +! ((char_u *)line_ga.ga_data)[line_ga.ga_len] = c1; +! } + if (c1 == '\n') + msg_putchar('\n'); + else if (c1 == TAB) +*************** +*** 2376,2385 **** + else + { + msg_outtrans_len( +! ((char_u *)line_ga.ga_data) + line_ga.ga_len, 1); + vcol += char2cells(c1); + } +! ++line_ga.ga_len; + escaped = FALSE; + + windgoto(msg_row, msg_col); +--- 2400,2409 ---- + else + { + msg_outtrans_len( +! ((char_u *)line_ga.ga_data) + line_ga.ga_len, len); + vcol += char2cells(c1); + } +! line_ga.ga_len += len; + escaped = FALSE; + + windgoto(msg_row, msg_col); +*** ../vim-7.4.323/src/version.c 2014-06-12 18:39:16.828400409 +0200 +--- src/version.c 2014-06-12 19:37:40.296532950 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 324, + /**/ + +-- +ZOOT: I'm afraid our life must seem very dull and quiet compared to yours. + We are but eightscore young blondes, all between sixteen and + nineteen-and-a-half, cut off in this castle, with no one to protect us. + Oooh. It is a lonely life ... bathing ... dressing ... undressing ... + making exciting underwear.... + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org ///