diff --git a/7.4.913 b/7.4.913 new file mode 100644 index 0000000..a5a89a8 --- /dev/null +++ b/7.4.913 @@ -0,0 +1,425 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.913 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.913 +Problem: No utf-8 support for the hangul input feature. +Solution: Add utf-8 support. (Namsh) +Files: src/gui.c, src/hangulin.c, src/proto/hangulin.pro, src/screen.c, + src/ui.c, runtime/doc/hangulin.txt, src/feature.h + + +*** ../vim-7.4.912/src/gui.c 2015-08-11 19:13:55.138175689 +0200 +--- src/gui.c 2015-11-10 14:20:22.653009478 +0100 +*************** +*** 1223,1230 **** + gui.highlight_mask = (cattr | attr); + #ifdef FEAT_HANGULIN + if (composing_hangul) +! (void)gui_outstr_nowrap(composing_hangul_buffer, 2, +! GUI_MON_IS_CURSOR | GUI_MON_NOCLEAR, cfg, cbg, 0); + else + #endif + (void)gui_screenchar(LineOffset[gui.row] + gui.col, +--- 1223,1241 ---- + gui.highlight_mask = (cattr | attr); + #ifdef FEAT_HANGULIN + if (composing_hangul) +! { +! char_u *comp_buf; +! int comp_len; +! +! comp_buf = hangul_composing_buffer_get(&comp_len); +! if (comp_buf) +! { +! (void)gui_outstr_nowrap(comp_buf, comp_len, +! GUI_MON_IS_CURSOR | GUI_MON_NOCLEAR, +! cfg, cbg, 0); +! vim_free(comp_buf); +! } +! } + else + #endif + (void)gui_screenchar(LineOffset[gui.row] + gui.col, +*************** +*** 2572,2580 **** + #ifdef FEAT_HANGULIN + if (composing_hangul + && gui.col == gui.cursor_col && gui.row == gui.cursor_row) +! (void)gui_outstr_nowrap(composing_hangul_buffer, 2, +! GUI_MON_IS_CURSOR | GUI_MON_NOCLEAR, +! gui.norm_pixel, gui.back_pixel, 0); + else + { + #endif +--- 2583,2601 ---- + #ifdef FEAT_HANGULIN + if (composing_hangul + && gui.col == gui.cursor_col && gui.row == gui.cursor_row) +! { +! char_u *comp_buf; +! int comp_len; +! +! comp_buf = hangul_composing_buffer_get(&comp_len); +! if (comp_buf) +! { +! (void)gui_outstr_nowrap(comp_buf, comp_len, +! GUI_MON_IS_CURSOR | GUI_MON_NOCLEAR, +! gui.norm_pixel, gui.back_pixel, 0); +! vim_free(comp_buf); +! } +! } + else + { + #endif +*** ../vim-7.4.912/src/hangulin.c 2015-07-21 17:53:11.577527989 +0200 +--- src/hangulin.c 2015-11-10 14:20:22.653009478 +0100 +*************** +*** 1619,1621 **** +--- 1619,1667 ---- + *des++ = johab_lcon_to_wan[lv]; + return 8; + } ++ ++ char_u * ++ hangul_string_convert(buf, p_len) ++ char_u *buf; ++ int *p_len; ++ { ++ char_u *tmpbuf = NULL; ++ vimconv_T vc; ++ ++ if (enc_utf8) ++ { ++ vc.vc_type = CONV_NONE; ++ if (convert_setup(&vc, (char_u *)"euc-kr", p_enc) == OK) ++ { ++ tmpbuf = string_convert(&vc, buf, p_len); ++ convert_setup(&vc, NULL, NULL); ++ } ++ } ++ ++ return tmpbuf; ++ } ++ ++ char_u * ++ hangul_composing_buffer_get(p_len) ++ int *p_len; ++ { ++ char_u *tmpbuf = NULL; ++ ++ if (composing_hangul) ++ { ++ int len = 2; ++ ++ tmpbuf = hangul_string_convert(composing_hangul_buffer, &len); ++ if (tmpbuf != NULL) ++ { ++ *p_len = len; ++ } ++ else ++ { ++ tmpbuf = vim_strnsave(composing_hangul_buffer, 2); ++ *p_len = 2; ++ } ++ } ++ ++ return tmpbuf; ++ } +*** ../vim-7.4.912/src/proto/hangulin.pro 2013-08-10 13:37:14.000000000 +0200 +--- src/proto/hangulin.pro 2015-11-10 14:20:22.653009478 +0100 +*************** +*** 6,9 **** +--- 6,11 ---- + void hangul_keyboard_set __ARGS((void)); + int hangul_input_process __ARGS((char_u *s, int len)); + void hangul_input_clear __ARGS((void)); ++ char_u *hangul_string_convert __ARGS((char_u *buf, int *p_len)); ++ char_u *hangul_composing_buffer_get __ARGS((int *p_len)); + /* vim: set ft=c : */ +*** ../vim-7.4.912/src/screen.c 2015-08-11 18:52:58.077121515 +0200 +--- src/screen.c 2015-11-10 14:20:22.657009438 +0100 +*************** +*** 10047,10053 **** + if (gui.in_use) + { + if (hangul_input_state_get()) +! MSG_PUTS_ATTR(" \307\321\261\333", attr); /* HANGUL */ + } + #endif + #ifdef FEAT_INS_EXPAND +--- 10047,10059 ---- + if (gui.in_use) + { + if (hangul_input_state_get()) +! { +! /* HANGUL */ +! if (enc_utf8) +! MSG_PUTS_ATTR(" \355\225\234\352\270\200", attr); +! else +! MSG_PUTS_ATTR(" \307\321\261\333", attr); +! } + } + #endif + #ifdef FEAT_INS_EXPAND +*** ../vim-7.4.912/src/ui.c 2015-09-01 20:31:16.311776122 +0200 +--- src/ui.c 2015-11-10 14:20:22.657009438 +0100 +*************** +*** 1723,1730 **** +--- 1723,1739 ---- + char_u *s; + int len; + { ++ char_u *tmpbuf; ++ ++ tmpbuf = hangul_string_convert(s, &len); ++ if (tmpbuf != NULL) ++ s = tmpbuf; ++ + while (len--) + inbuf[inbufcount++] = *s++; ++ ++ if (tmpbuf != NULL) ++ vim_free(tmpbuf); + } + #endif + +*** ../vim-7.4.912/runtime/doc/hangulin.txt 2013-08-10 13:24:54.000000000 +0200 +--- runtime/doc/hangulin.txt 2015-11-10 14:26:20.313417262 +0100 +*************** +*** 1,11 **** +! *hangulin.txt* For Vim version 7.4. Last change: 2009 Jun 24 + + + VIM REFERENCE MANUAL by Chi-Deok Hwang and Sung-Hyun Nam + +- NOTE: The |+hangul_input| feature is scheduled to be removed. If you want to +- keep it, please send a message to the Vim user maillist. +- + + Introduction *hangul* + ------------ +--- 1,8 ---- +! *hangulin.txt* For Vim version 7.4. Last change: 2015 Nov 10 + + + VIM REFERENCE MANUAL by Chi-Deok Hwang and Sung-Hyun Nam + + + Introduction *hangul* + ------------ +*************** +*** 17,23 **** + ------- + Next is a basic option. You can add any other configure option. > + +! ./configure --with-x --enable-multibyte --enable-fontset --enable-hangulinput + + And you should check feature.h. If |+hangul_input| feature is enabled + by configure, you can select more options such as keyboard type, 2 bulsik +--- 14,21 ---- + ------- + Next is a basic option. You can add any other configure option. > + +! ./configure --with-x --enable-multibyte --enable-hangulinput \ +! --disable-xim + + And you should check feature.h. If |+hangul_input| feature is enabled + by configure, you can select more options such as keyboard type, 2 bulsik +*************** +*** 26,43 **** + #define HANGUL_DEFAULT_KEYBOARD 2 + #define ESC_CHG_TO_ENG_MODE + /* #define X_LOCALE */ +- /* #define SLOW_XSERVER */ + + Environment variables + --------------------- +! You should set LANG variable to Korean locale such as ko or ko_KR.euc. + If you set LC_ALL variable, it should be set to Korean locale also. + + VIM resource + ------------ +! You should add nexts to your global vimrc ($HOME/.vimrc). > + +! :set fileencoding=korea + + Keyboard + -------- +--- 24,44 ---- + #define HANGUL_DEFAULT_KEYBOARD 2 + #define ESC_CHG_TO_ENG_MODE + /* #define X_LOCALE */ + + Environment variables + --------------------- +! You should set LANG variable to Korean locale such as ko, ko_KR.eucKR +! or ko_KR.UTF-8. + If you set LC_ALL variable, it should be set to Korean locale also. + + VIM resource + ------------ +! You may want to set 'encoding' and 'fileencodings'. +! Next are examples: + +! :set encoding=euc-kr +! :set encoding=utf-8 +! :set fileencodings=ucs-bom,utf-8,cp949,euc-kr,latin1 + + Keyboard + -------- +*************** +*** 52,59 **** + + Hangul Fonts + ------------ +! You can set text font using $HOME/.Xdefaults or in your gvimrc file. +! But to use Hangul, you should set 'guifontset' in your vimrc. + + $HOME/.Xdefaults: > + Vim.font: english_font +--- 53,68 ---- + + Hangul Fonts + ------------ +! If you use GTK version of GVIM, you should set 'guifont' and 'guifontwide'. +! For example: +! set guifont=Courier\ 12 +! set guifontwide=NanumGothicCoding\ 12 +! +! If you use Motif or Athena version of GVIM, you should set 'guifontset' in +! your vimrc. You can set fontset in the .Xdefaults file. +! +! $HOME/.gvimrc: > +! set guifontset=english_font,hangul_font + + $HOME/.Xdefaults: > + Vim.font: english_font +*************** +*** 66,105 **** + *international: True + Vim*fontList: english_font;hangul_font: + +- $HOME/.gvimrc: > +- set guifontset=english_font,hangul_font +- + attention! the , (comma) or ; (semicolon) + + And there should be no ':set guifont'. If it exists, then Gvim ignores + ':set guifontset'. It means VIM runs without fontset supporting. + So, you can see only English. Hangul does not be correctly displayed. + +! After 'fontset' feature is enabled, VIM does not allow using 'font'. + For example, if you use > + :set guifontset=eng_font,your_font + in your .gvimrc, then you should do for syntax > + :hi Comment guifg=Cyan font=another_eng_font,another_your_font + If you just do > + :hi Comment font=another_eng_font +! then you can see a GOOD error message. Be careful! + + hangul_font width should be twice than english_font width. + + Unsupported Feature + ------------------- +! Johab font not yet supported. And I don't have any plan. +! If you really want to use johab font, you can use the +! hanguldraw.c in gau package. + +! Hanja input not yet supported. And I don't have any plan. +! If you really want to input hanja, just use VIM with hanterm. + + Bug or Comment + -------------- + Send comments, patches and suggestions to: + +- Chi-Deok Hwang + SungHyun Nam + + vim:tw=78:ts=8:ft=help:norl: +--- 75,112 ---- + *international: True + Vim*fontList: english_font;hangul_font: + + attention! the , (comma) or ; (semicolon) + + And there should be no ':set guifont'. If it exists, then Gvim ignores + ':set guifontset'. It means VIM runs without fontset supporting. + So, you can see only English. Hangul does not be correctly displayed. + +! After 'fontset' feature is enabled, VIM does not allow using english +! font only in 'font' setting for syntax. + For example, if you use > + :set guifontset=eng_font,your_font + in your .gvimrc, then you should do for syntax > + :hi Comment guifg=Cyan font=another_eng_font,another_your_font + If you just do > + :hi Comment font=another_eng_font +! then you can see a error message. Be careful! + + hangul_font width should be twice than english_font width. + + Unsupported Feature + ------------------- +! We don't support Johab font. +! We don't support Hanja input. +! And We don't have any plan to support them. + +! If you really need such features, you can use console version of VIM with a +! capable terminal emulator. + + Bug or Comment + -------------- + Send comments, patches and suggestions to: + + SungHyun Nam ++ Chi-Deok Hwang <...> + + vim:tw=78:ts=8:ft=help:norl: +*** ../vim-7.4.912/src/feature.h 2014-11-30 13:34:16.893626683 +0100 +--- src/feature.h 2015-11-10 14:30:08.087134574 +0100 +*************** +*** 677,685 **** + # define ESC_CHG_TO_ENG_MODE /* if defined, when ESC pressed, + * turn to english mode + */ +- # if !defined(FEAT_XFONTSET) && defined(HAVE_X11) && !defined(FEAT_GUI_GTK) +- # define FEAT_XFONTSET /* Hangul input requires xfontset */ +- # endif + # if defined(FEAT_XIM) && !defined(LINT) + Error: You should select only ONE of XIM and HANGUL INPUT + # endif +--- 677,682 ---- +*************** +*** 687,693 **** + #if defined(FEAT_HANGULIN) || defined(FEAT_XIM) + /* # define X_LOCALE */ /* for OS with incomplete locale + support, like old linux versions. */ +- /* # define SLOW_XSERVER */ /* for extremely slow X server */ + #endif + + /* +--- 684,689 ---- +*** ../vim-7.4.912/src/version.c 2015-11-10 14:06:48.765187078 +0100 +--- src/version.c 2015-11-10 14:21:28.556347509 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 913, + /**/ + +-- +From "know your smileys": + :-D Big smile + + /// 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 ///