patch 7.4.913
Problem:    No utf-8 support for the hangul input feature.
Solution:   Add utf-8 support. (Namsh)
diff --git a/src/feature.h b/src/feature.h
index 01f611e..c499d9d 100644
--- a/src/feature.h
+++ b/src/feature.h
@@ -677,9 +677,6 @@
 # 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
@@ -687,7 +684,6 @@
 #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
 
 /*
diff --git a/src/gui.c b/src/gui.c
index fc2981c..0736522 100644
--- a/src/gui.c
+++ b/src/gui.c
@@ -1223,8 +1223,19 @@
 	    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);
+	    {
+		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,9 +2583,19 @@
 #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);
+	{
+	    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
diff --git a/src/hangulin.c b/src/hangulin.c
index 24cf180..f02cad8 100644
--- a/src/hangulin.c
+++ b/src/hangulin.c
@@ -1619,3 +1619,49 @@
     *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;
+}
diff --git a/src/proto/hangulin.pro b/src/proto/hangulin.pro
index adfde14..59e6986 100644
--- a/src/proto/hangulin.pro
+++ b/src/proto/hangulin.pro
@@ -6,4 +6,6 @@
 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 : */
diff --git a/src/screen.c b/src/screen.c
index b1af862..de9e04d 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -10047,7 +10047,13 @@
 	    if (gui.in_use)
 	    {
 		if (hangul_input_state_get())
-		    MSG_PUTS_ATTR(" \307\321\261\333", attr);   /* HANGUL */
+		{
+		    /* 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
diff --git a/src/ui.c b/src/ui.c
index e0e54d9..5438a38 100644
--- a/src/ui.c
+++ b/src/ui.c
@@ -1723,8 +1723,17 @@
     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
 
diff --git a/src/version.c b/src/version.c
index a0896f8..1604635 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    913,
+/**/
     912,
 /**/
     911,