changeset 15603:639b8318472c v8.1.0809

patch 8.1.0809: too many #ifdefs commit https://github.com/vim/vim/commit/a12a161b8ce09d024ed71c2134149fa323f8ee8e Author: Bram Moolenaar <Bram@vim.org> Date: Thu Jan 24 16:39:02 2019 +0100 patch 8.1.0809: too many #ifdefs Problem: Too many #ifdefs. Solution: Graduate FEAT_MBYTE, part 3.
author Bram Moolenaar <Bram@vim.org>
date Thu, 24 Jan 2019 16:45:06 +0100
parents 2ef2028868e2
children 5d64befd4ab4
files src/os_amiga.c src/os_mswin.c src/os_unix.c src/os_w32exe.c src/os_win32.c src/quickfix.c src/regexp.c src/regexp_nfa.c src/screen.c src/version.c
diffstat 10 files changed, 125 insertions(+), 825 deletions(-) [+]
line wrap: on
line diff
--- a/src/os_amiga.c
+++ b/src/os_amiga.c
@@ -165,18 +165,12 @@ mch_inchar(
 
     for (;;)	    /* repeat until we got a character */
     {
-#  ifdef FEAT_MBYTE
 	len = Read(raw_in, (char *)buf, (long)maxlen / input_conv.vc_factor);
-#  else
-	len = Read(raw_in, (char *)buf, (long)maxlen);
-#  endif
 	if (len > 0)
 	{
-#ifdef FEAT_MBYTE
 	    /* Convert from 'termencoding' to 'encoding'. */
 	    if (input_conv.vc_type != CONV_NONE)
 		len = convert_input(buf, len, maxlen);
-#endif
 	    return len;
 	}
     }
--- a/src/os_mswin.c
+++ b/src/os_mswin.c
@@ -282,7 +282,6 @@ mch_settitle(
 # else
     if (title != NULL)
     {
-#  ifdef FEAT_MBYTE
 	if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
 	{
 	    /* Convert the title from 'encoding' to the active codepage. */
@@ -295,7 +294,6 @@ mch_settitle(
 		return;
 	    }
 	}
-#  endif
 	SetConsoleTitle((LPCSTR)title);
     }
 # endif
@@ -361,7 +359,6 @@ mch_FullName(
     else
 #endif
     {
-#ifdef FEAT_MBYTE
 	if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
 	{
 	    WCHAR	*wname;
@@ -387,7 +384,6 @@ mch_FullName(
 	    vim_free(cname);
 	}
 	if (nResult == FAIL)	    /* fall back to non-wide function */
-#endif
 	{
 	    if (_fullpath((char *)buf, (const char *)fname, len - 1) == NULL)
 	    {
@@ -415,14 +411,10 @@ mch_FullName(
     int
 mch_isFullName(char_u *fname)
 {
-#ifdef FEAT_MBYTE
     /* WinNT and later can use _MAX_PATH wide characters for a pathname, which
      * means that the maximum pathname is _MAX_PATH * 3 bytes when 'enc' is
      * UTF-8. */
     char szName[_MAX_PATH * 3 + 1];
-#else
-    char szName[_MAX_PATH + 1];
-#endif
 
     /* A name like "d:/foo" and "//server/share" is absolute */
     if ((fname[0] && fname[1] == ':' && (fname[2] == '/' || fname[2] == '\\'))
@@ -538,11 +530,10 @@ stat_symlink_aware(const char *name, sta
     return stat(name, stp);
 }
 
-#ifdef FEAT_MBYTE
     static int
 wstat_symlink_aware(const WCHAR *name, stat_T *stp)
 {
-# if (defined(_MSC_VER) && (_MSC_VER < 1900)) || defined(__MINGW32__)
+#if (defined(_MSC_VER) && (_MSC_VER < 1900)) || defined(__MINGW32__)
     /* Work around for VC12 or earlier (and MinGW). _wstat() can't handle
      * symlinks properly.
      * VC9 or earlier: _wstat() doesn't support a symlink at all. It retrieves
@@ -587,10 +578,9 @@ wstat_symlink_aware(const WCHAR *name, s
 	    return n;
 	}
     }
-# endif
+#endif
     return _wstat(name, (struct _stat *)stp);
 }
-#endif
 
 /*
  * stat() can't handle a trailing '/' or '\', remove it first.
@@ -598,14 +588,10 @@ wstat_symlink_aware(const WCHAR *name, s
     int
 vim_stat(const char *name, stat_T *stp)
 {
-#ifdef FEAT_MBYTE
     /* WinNT and later can use _MAX_PATH wide characters for a pathname, which
      * means that the maximum pathname is _MAX_PATH * 3 bytes when 'enc' is
      * UTF-8. */
     char_u	buf[_MAX_PATH * 3 + 1];
-#else
-    char_u	buf[_MAX_PATH + 1];
-#endif
     char_u	*p;
 
     vim_strncpy((char_u *)buf, (char_u *)name, sizeof(buf) - 1);
@@ -628,7 +614,6 @@ vim_stat(const char *name, stat_T *stp)
 		STRCAT(buf, "\\");
 	}
     }
-#ifdef FEAT_MBYTE
     if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
     {
 	WCHAR	*wp = enc_to_utf16(buf, NULL);
@@ -641,7 +626,6 @@ vim_stat(const char *name, stat_T *stp)
 	    return n;
 	}
     }
-#endif
     return stat_symlink_aware((char *)buf, stp);
 }
 
@@ -791,7 +775,6 @@ mch_chdir(char *path)
     if (*path == NUL)		/* drive name only */
 	return 0;
 
-#ifdef FEAT_MBYTE
     if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
     {
 	WCHAR	*p = enc_to_utf16((char_u *)path, NULL);
@@ -804,7 +787,6 @@ mch_chdir(char *path)
 	    return n;
 	}
     }
-#endif
 
     return chdir(path);	       /* let the normal chdir() do the rest */
 }
@@ -1145,9 +1127,6 @@ static char_u		*prt_name = NULL;
 #define IDC_PRINTTEXT2		402
 #define IDC_PROGRESS		403
 
-#if !defined(FEAT_MBYTE)
-# define vimSetDlgItemText(h, i, s) SetDlgItemText(h, i, s)
-#else
     static BOOL
 vimSetDlgItemText(HWND hDlg, int nIDDlgItem, char_u *s)
 {
@@ -1166,7 +1145,6 @@ vimSetDlgItemText(HWND hDlg, int nIDDlgI
     }
     return SetDlgItemText(hDlg, nIDDlgItem, (LPCSTR)s);
 }
-#endif
 
 /*
  * Convert BGR to RGB for Windows GDI calls
@@ -1563,7 +1541,6 @@ mch_print_init(prt_settings_T *psettings
 	char_u	*printer_name = (char_u *)devname + devname->wDeviceOffset;
 	char_u	*port_name = (char_u *)devname +devname->wOutputOffset;
 	char_u	*text = (char_u *)_("to %s on %s");
-#ifdef FEAT_MBYTE
 	char_u  *printer_name_orig = printer_name;
 	char_u	*port_name_orig = port_name;
 
@@ -1580,18 +1557,15 @@ mch_print_init(prt_settings_T *psettings
 	    if (to_free != NULL)
 		port_name = to_free;
 	}
-#endif
 	prt_name = alloc((unsigned)(STRLEN(printer_name) + STRLEN(port_name)
 							     + STRLEN(text)));
 	if (prt_name != NULL)
 	    wsprintf((char *)prt_name, (const char *)text,
 		    printer_name, port_name);
-#ifdef FEAT_MBYTE
 	if (printer_name != printer_name_orig)
 	    vim_free(printer_name);
 	if (port_name != port_name_orig)
 	    vim_free(port_name);
-#endif
     }
     GlobalUnlock(prt_dlg.hDevNames);
 
@@ -1680,9 +1654,7 @@ mch_print_begin(prt_settings_T *psetting
 {
     int			ret;
     char		szBuffer[300];
-#if defined(FEAT_MBYTE)
     WCHAR		*wp = NULL;
-#endif
 
     hDlgPrint = CreateDialog(GetModuleHandle(NULL), TEXT("PrintDlgBox"),
 					     prt_dlg.hwndOwner, PrintDlgProc);
@@ -1690,7 +1662,6 @@ mch_print_begin(prt_settings_T *psetting
     wsprintf(szBuffer, _("Printing '%s'"), gettail(psettings->jobname));
     vimSetDlgItemText(hDlgPrint, IDC_PRINTTEXT1, (char_u *)szBuffer);
 
-#if defined(FEAT_MBYTE)
     if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
 	wp = enc_to_utf16(psettings->jobname, NULL);
     if (wp != NULL)
@@ -1704,7 +1675,6 @@ mch_print_begin(prt_settings_T *psetting
 	vim_free(wp);
     }
     else
-#endif
     {
 	DOCINFO		di;
 
@@ -1767,10 +1737,7 @@ mch_print_start_line(int margin, int pag
     int
 mch_print_text_out(char_u *p, int len)
 {
-#if defined(FEAT_PROPORTIONAL_FONTS) || defined(FEAT_MBYTE)
     SIZE	sz;
-#endif
-#if defined(FEAT_MBYTE)
     WCHAR	*wp = NULL;
     int		wlen = len;
 
@@ -1801,7 +1768,6 @@ mch_print_text_out(char_u *p, int len)
 	}
 	return ret;
     }
-#endif
     TextOut(prt_dlg.hDC, prt_pos_x + prt_left_margin,
 					  prt_pos_y + prt_top_margin,
 					  (LPCSTR)p, len);
@@ -1873,10 +1839,8 @@ mch_resolve_shortcut(char_u *fname)
     CHAR		buf[MAX_PATH]; // could have simply reused 'wsz'...
     char_u		*rfname = NULL;
     int			len;
-# ifdef FEAT_MBYTE
     IShellLinkW		*pslw = NULL;
     WIN32_FIND_DATAW	ffdw; // we get those free of charge
-# endif
 
     /* Check if the file name ends in ".lnk". Avoid calling
      * CoCreateInstance(), it's quite slow. */
@@ -1888,7 +1852,6 @@ mch_resolve_shortcut(char_u *fname)
 
     CoInitialize(NULL);
 
-# ifdef FEAT_MBYTE
     if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
     {
 	// create a link manager object and request its interface
@@ -1930,7 +1893,6 @@ shortcut_errorw:
 	}
 	goto shortcut_end;
     }
-# endif
     // create a link manager object and request its interface
     hr = CoCreateInstance(
 	    &CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,
@@ -1969,10 +1931,8 @@ shortcut_end:
 	ppf->lpVtbl->Release(ppf);
     if (psl != NULL)
 	psl->lpVtbl->Release(psl);
-# ifdef FEAT_MBYTE
     if (pslw != NULL)
 	pslw->lpVtbl->Release(pslw);
-# endif
 
     CoUninitialize();
     return rfname;
@@ -2042,13 +2002,8 @@ serverSendEnc(HWND target)
     COPYDATASTRUCT data;
 
     data.dwData = COPYDATA_ENCODING;
-#ifdef FEAT_MBYTE
     data.cbData = (DWORD)STRLEN(p_enc) + 1;
     data.lpData = p_enc;
-#else
-    data.cbData = (DWORD)STRLEN("latin1") + 1;
-    data.lpData = "latin1";
-#endif
     (void)SendMessage(target, WM_COPYDATA, (WPARAM)message_window,
 							     (LPARAM)(&data));
 }
@@ -2118,11 +2073,9 @@ Messaging_WndProc(HWND hwnd, UINT msg, W
 	switch (data->dwData)
 	{
 	case COPYDATA_ENCODING:
-# ifdef FEAT_MBYTE
 	    /* Remember the encoding that the client uses. */
 	    vim_free(client_enc);
 	    client_enc = enc_canonize((char_u *)data->lpData);
-# endif
 	    return 1;
 
 	case COPYDATA_KEYS:
@@ -2954,15 +2907,12 @@ get_logfont(
     int		i;
     int		ret = FAIL;
     static LOGFONT *lastlf = NULL;
-#ifdef FEAT_MBYTE
     char_u	*acpname = NULL;
-#endif
 
     *lf = s_lfDefault;
     if (name == NULL)
 	return OK;
 
-#ifdef FEAT_MBYTE
     /* Convert 'name' from 'encoding' to the current codepage, because
      * lf->lfFaceName uses the current codepage.
      * TODO: Use Wide APIs instead of ANSI APIs. */
@@ -2972,7 +2922,6 @@ get_logfont(
 	enc_to_acp(name, (int)STRLEN(name), &acpname, &len);
 	name = acpname;
     }
-#endif
     if (STRCMP(name, "*") == 0)
     {
 #if defined(FEAT_GUI_W32)
@@ -3112,9 +3061,7 @@ theend:
 	if (lastlf != NULL)
 	    mch_memmove(lastlf, lf, sizeof(LOGFONT));
     }
-#ifdef FEAT_MBYTE
     vim_free(acpname);
-#endif
 
     return ret;
 }
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -2054,19 +2054,12 @@ get_x11_thing(
 	    retval = TRUE;
 	    if (!test_only)
 	    {
-#if defined(FEAT_XFONTSET) || defined(FEAT_MBYTE)
-		if (text_prop.encoding == XA_STRING
-# ifdef FEAT_MBYTE
-			&& !has_mbyte
-# endif
-			)
+		if (text_prop.encoding == XA_STRING && !has_mbyte)
 		{
-#endif
 		    if (get_title)
 			oldtitle = vim_strsave((char_u *)text_prop.value);
 		    else
 			oldicon = vim_strsave((char_u *)text_prop.value);
-#if defined(FEAT_XFONTSET) || defined(FEAT_MBYTE)
 		}
 		else
 		{
@@ -2093,7 +2086,6 @@ get_x11_thing(
 			    oldicon = vim_strsave((char_u *)text_prop.value);
 		    }
 		}
-#endif
 	    }
 	    XFree((void *)text_prop.value);
 	}
@@ -2105,7 +2097,7 @@ get_x11_thing(
  * systems X_HAVE_UTF8_STRING may be defined in a header file but
  * Xutf8SetWMProperties() is not in the X11 library.  Configure checks for
  * that and defines HAVE_XUTF8SETWMPROPERTIES. */
-#if defined(X_HAVE_UTF8_STRING) && defined(FEAT_MBYTE)
+#if defined(X_HAVE_UTF8_STRING)
 # if X_HAVE_UTF8_STRING && HAVE_XUTF8SETWMPROPERTIES
 #  define USE_UTF8_STRING
 # endif
@@ -4823,9 +4815,7 @@ mch_call_shell_fork(
 	    {
 # define BUFLEN 100		/* length for buffer, pseudo tty limit is 128 */
 		char_u	    buffer[BUFLEN + 1];
-# ifdef FEAT_MBYTE
 		int	    buffer_off = 0;	/* valid bytes in buffer[] */
-# endif
 		char_u	    ta_buf[BUFLEN + 1];	/* TypeAHead */
 		int	    ta_len = 0;		/* valid bytes in ta_buf[] */
 		int	    len;
@@ -5031,11 +5021,9 @@ mch_call_shell_fork(
 			    }
 			    else if (ta_buf[i] == '\r')
 				ta_buf[i] = '\n';
-# ifdef FEAT_MBYTE
 			    if (has_mbyte)
 				i += (*mb_ptr2len_len)(ta_buf + i,
 							ta_len + len - i) - 1;
-# endif
 			}
 
 			/*
@@ -5048,7 +5036,6 @@ mch_call_shell_fork(
 			    {
 				if (ta_buf[i] == '\n' || ta_buf[i] == '\b')
 				    msg_putchar(ta_buf[i]);
-# ifdef FEAT_MBYTE
 				else if (has_mbyte)
 				{
 				    int l = (*mb_ptr2len)(ta_buf + i);
@@ -5056,7 +5043,6 @@ mch_call_shell_fork(
 				    msg_outtrans_len(ta_buf + i, l);
 				    i += l - 1;
 				}
-# endif
 				else
 				    msg_outtrans_len(ta_buf + i, 1);
 			    }
@@ -5114,11 +5100,7 @@ mch_call_shell_fork(
 		    while (RealWaitForChar(fromshell_fd, 10L, NULL, NULL))
 		    {
 			len = read_eintr(fromshell_fd, buffer
-# ifdef FEAT_MBYTE
 				+ buffer_off, (size_t)(BUFLEN - buffer_off)
-# else
-				, (size_t)BUFLEN
-# endif
 				);
 			if (len <= 0)		    /* end of file or error */
 			    goto finished;
@@ -5138,7 +5120,6 @@ mch_call_shell_fork(
 				    ga_append(&ga, buffer[i]);
 			    }
 			}
-# ifdef FEAT_MBYTE
 			else if (has_mbyte)
 			{
 			    int		l;
@@ -5181,7 +5162,6 @@ mch_call_shell_fork(
 			    }
 			    buffer_off = 0;
 			}
-# endif /* FEAT_MBYTE */
 			else
 			{
 			    buffer[len] = NUL;
--- a/src/os_w32exe.c
+++ b/src/os_w32exe.c
@@ -130,9 +130,7 @@ errout:
     free(argv);
     if (tofree != NULL)
 	free(tofree);
-#ifdef FEAT_MBYTE
     free_cmd_argsW();
-#endif
 
     return 0;
 }
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -452,11 +452,7 @@ unescape_shellxquote(char_u *p, char_u *
     {
 	if (*p == '^' && vim_strchr(escaped, p[1]) != NULL)
 	    mch_memmove(p, p + 1, l--);
-#ifdef FEAT_MBYTE
 	n = (*mb_ptr2len)(p);
-#else
-	n = 1;
-#endif
 	p += n;
 	l -= n;
     }
@@ -1890,7 +1886,6 @@ mch_inchar(
 	    {
 		int	n = 1;
 
-#ifdef FEAT_MBYTE
 		if (ch2 == NUL)
 		{
 		    int	    i;
@@ -1912,7 +1907,6 @@ mch_inchar(
 		    }
 		}
 		else
-#endif
 		    typeahead[typeaheadlen] = c;
 		if (ch2 != NUL)
 		{
@@ -1950,17 +1944,11 @@ mch_inchar(
 		if ((modifiers & MOD_MASK_ALT)
 			&& n == 1
 			&& (typeahead[typeaheadlen] & 0x80) == 0
-#ifdef FEAT_MBYTE
 			&& !enc_dbcs
-#endif
 		   )
 		{
-#ifdef FEAT_MBYTE
 		    n = (*mb_char2bytes)(typeahead[typeaheadlen] | 0x80,
 						    typeahead + typeaheadlen);
-#else
-		    typeahead[typeaheadlen] |= 0x80;
-#endif
 		    modifiers &= ~MOD_MASK_ALT;
 		}
 
@@ -2044,7 +2032,6 @@ executable_exists(char *name, char_u **p
 	return FALSE;
     }
 
-#ifdef FEAT_MBYTE
     if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
     {
 	WCHAR	*p = enc_to_utf16((char_u *)name, NULL);
@@ -2073,7 +2060,6 @@ executable_exists(char *name, char_u **p
 	    return TRUE;
 	}
     }
-#endif
 
     curpath = getenv("PATH");
     newpath = (char*)alloc((unsigned)(STRLEN(curpath) + 3));
@@ -2768,7 +2754,6 @@ mch_check_win(
 }
 
 
-#ifdef FEAT_MBYTE
 /*
  * fname_casew(): Wide version of fname_case().  Set the case of the file name,
  * if it already exists.  When "len" is > 0, also expand short to long
@@ -2878,7 +2863,6 @@ fname_casew(
     wcscpy(name, szTrueName);
     return OK;
 }
-#endif
 
 /*
  * fname_case(): Set the case of the file name, if it already exists.
@@ -2906,7 +2890,6 @@ fname_case(
 
     slash_adjust(name);
 
-#ifdef FEAT_MBYTE
     if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
     {
 	WCHAR	*p = enc_to_utf16(name, NULL);
@@ -2933,7 +2916,6 @@ fname_case(
 	}
 	return;
     }
-#endif
 
     /* If 'enc' is utf-8, flen can be larger than _MAX_PATH.
      * So we should check this after calling wide function. */
@@ -2962,7 +2944,6 @@ fname_case(
 	porigPrev = porig;
 	while (*porig != NUL && *porig != psepc)
 	{
-#ifdef FEAT_MBYTE
 	    int l;
 
 	    if (enc_dbcs)
@@ -2972,7 +2953,6 @@ fname_case(
 		    *ptrue++ = *porig++;
 	    }
 	    else
-#endif
 		*ptrue++ = *porig++;
 	}
 	*ptrue = NUL;
@@ -3044,7 +3024,6 @@ mch_get_user_name(
     char szUserName[256 + 1];	/* UNLEN is 256 */
     DWORD cch = sizeof szUserName;
 
-#ifdef FEAT_MBYTE
     if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
     {
 	WCHAR wszUserName[256 + 1];	/* UNLEN is 256 */
@@ -3062,7 +3041,6 @@ mch_get_user_name(
 	    }
 	}
     }
-#endif
     if (GetUserName(szUserName, &cch))
     {
 	vim_strncpy(s, (char_u *)szUserName, len - 1);
@@ -3083,7 +3061,6 @@ mch_get_host_name(
 {
     DWORD cch = len;
 
-#ifdef FEAT_MBYTE
     if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
     {
 	WCHAR wszHostName[256 + 1];
@@ -3101,7 +3078,6 @@ mch_get_host_name(
 	    }
 	}
     }
-#endif
     if (!GetComputerName((LPSTR)s, &cch))
 	vim_strncpy(s, (char_u *)"PC (Win32 Vim)", len - 1);
 }
@@ -3135,7 +3111,6 @@ mch_dirname(
      * But the Win32s known bug list says that getcwd() doesn't work
      * so use the Win32 system call instead. <Negri>
      */
-#ifdef FEAT_MBYTE
     if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
     {
 	WCHAR	wbuf[_MAX_PATH + 1];
@@ -3167,7 +3142,6 @@ mch_dirname(
 	}
 	return FAIL;
     }
-#endif
     if (GetCurrentDirectory(len, (LPSTR)buf) == 0)
 	return FAIL;
     lfnlen = GetLongPathNameA((LPCSTR)buf, (LPSTR)abuf, _MAX_PATH);
@@ -3205,7 +3179,6 @@ mch_setperm(char_u *name, long perm)
 {
     long	n = -1;
 
-#ifdef FEAT_MBYTE
     if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
     {
 	WCHAR *p = enc_to_utf16(name, NULL);
@@ -3219,7 +3192,6 @@ mch_setperm(char_u *name, long perm)
 	}
     }
     if (n == -1)
-#endif
 	n = _chmod((const char *)name, perm);
     if (n == -1)
 	return FAIL;
@@ -3290,7 +3262,6 @@ mch_isrealdir(char_u *name)
     int
 mch_mkdir(char_u *name)
 {
-#ifdef FEAT_MBYTE
     if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
     {
 	WCHAR	*p;
@@ -3303,7 +3274,6 @@ mch_mkdir(char_u *name)
 	vim_free(p);
 	return retval;
     }
-#endif
     return _mkdir((const char *)name);
 }
 
@@ -3314,7 +3284,6 @@ mch_mkdir(char_u *name)
     int
 mch_rmdir(char_u *name)
 {
-#ifdef FEAT_MBYTE
     if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
     {
 	WCHAR	*p;
@@ -3327,7 +3296,6 @@ mch_rmdir(char_u *name)
 	vim_free(p);
 	return retval;
     }
-#endif
     return _rmdir((const char *)name);
 }
 
@@ -3353,7 +3321,6 @@ mch_is_symbolic_link(char_u *name)
     int			res = FALSE;
     WIN32_FIND_DATAA	findDataA;
     DWORD		fileFlags = 0, reparseTag = 0;
-#ifdef FEAT_MBYTE
     WCHAR		*wn = NULL;
     WIN32_FIND_DATAW	findDataW;
 
@@ -3370,7 +3337,6 @@ mch_is_symbolic_link(char_u *name)
 	}
     }
     else
-#endif
     {
 	hFind = FindFirstFile((LPCSTR)name, &findDataA);
 	if (hFind != INVALID_HANDLE_VALUE)
@@ -3415,7 +3381,6 @@ win32_fileinfo(char_u *fname, BY_HANDLE_
 {
     HANDLE	hFile;
     int		res = FILEINFO_READ_FAIL;
-#ifdef FEAT_MBYTE
     WCHAR	*wn = NULL;
 
     if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
@@ -3436,7 +3401,6 @@ win32_fileinfo(char_u *fname, BY_HANDLE_
 	vim_free(wn);
     }
     else
-#endif
 	hFile = CreateFile((LPCSTR)fname,    /* file name */
 		    GENERIC_READ,	    /* access mode */
 		    FILE_SHARE_READ | FILE_SHARE_WRITE,	/* share mode */
@@ -3466,7 +3430,6 @@ win32_fileinfo(char_u *fname, BY_HANDLE_
 win32_getattrs(char_u *name)
 {
     int		attr;
-#ifdef FEAT_MBYTE
     WCHAR	*p = NULL;
 
     if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
@@ -3478,7 +3441,6 @@ win32_getattrs(char_u *name)
 	vim_free(p);
     }
     else
-#endif
 	attr = GetFileAttributes((char *)name);
 
     return attr;
@@ -3493,7 +3455,6 @@ win32_getattrs(char_u *name)
 win32_setattrs(char_u *name, int attrs)
 {
     int res;
-#ifdef FEAT_MBYTE
     WCHAR	*p = NULL;
 
     if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
@@ -3505,7 +3466,6 @@ win32_setattrs(char_u *name, int attrs)
 	vim_free(p);
     }
     else
-#endif
 	res = SetFileAttributes((char *)name, attrs);
 
     return res ? 0 : -1;
@@ -3621,9 +3581,7 @@ mch_nodetype(char_u *name)
 {
     HANDLE	hFile;
     int		type;
-#ifdef FEAT_MBYTE
     WCHAR	*wn = NULL;
-#endif
 
     /* We can't open a file with a name "\\.\con" or "\\.\prn" and trying to
      * read from it later will cause Vim to hang.  Thus return NODE_WRITABLE
@@ -3631,7 +3589,6 @@ mch_nodetype(char_u *name)
     if (STRNCMP(name, "\\\\.\\", 4) == 0)
 	return NODE_WRITABLE;
 
-#ifdef FEAT_MBYTE
     if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
 	wn = enc_to_utf16(name, NULL);
 
@@ -3647,7 +3604,6 @@ mch_nodetype(char_u *name)
 	vim_free(wn);
     }
     else
-#endif
 	hFile = CreateFile((LPCSTR)name,    /* file name */
 		    GENERIC_WRITE,	    /* access mode */
 		    0,			    /* share mode */
@@ -3695,7 +3651,6 @@ mch_get_acl(char_u *fname)
     p = (struct my_acl *)alloc_clear((unsigned)sizeof(struct my_acl));
     if (p != NULL)
     {
-# ifdef FEAT_MBYTE
 	WCHAR	*wn = NULL;
 
 	if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
@@ -3737,7 +3692,6 @@ mch_get_acl(char_u *fname)
 	    vim_free(wn);
 	}
 	else
-# endif
 	{
 	    /* Try to retrieve the entire security descriptor. */
 	    err = GetNamedSecurityInfo(
@@ -3815,9 +3769,7 @@ mch_set_acl(char_u *fname, vim_acl_T acl
 
     if (p != NULL)
     {
-# ifdef FEAT_MBYTE
 	WCHAR	*wn = NULL;
-# endif
 
 	/* Set security flags */
 	if (p->pSidOwner)
@@ -3836,7 +3788,6 @@ mch_set_acl(char_u *fname, vim_acl_T acl
 	if (p->pSacl)
 	    sec_info |= SACL_SECURITY_INFORMATION;
 
-# ifdef FEAT_MBYTE
 	if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
 	    wn = enc_to_utf16(fname, NULL);
 	if (wn != NULL)
@@ -3853,7 +3804,6 @@ mch_set_acl(char_u *fname, vim_acl_T acl
 	    vim_free(wn);
 	}
 	else
-# endif
 	{
 	    (void)SetNamedSecurityInfo(
 			(LPSTR)fname,		// Abstract filename
@@ -4211,7 +4161,6 @@ vim_create_process(
     LPVOID		*env,
     char		*cwd)
 {
-#ifdef FEAT_MBYTE
     if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
     {
 	BOOL	ret;
@@ -4247,7 +4196,6 @@ vim_create_process(
 	return ret;
     }
 fallback:
-#endif
     return CreateProcess(
 	NULL,			/* Executable name */
 	cmd,			/* Command to execute */
@@ -4267,7 +4215,6 @@ vim_shell_execute(
     char *cmd,
     INT	 n_show_cmd)
 {
-#ifdef FEAT_MBYTE
     if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
     {
 	WCHAR *wcmd = enc_to_utf16((char_u *)cmd, NULL);
@@ -4279,7 +4226,6 @@ vim_shell_execute(
 	    return ret;
 	}
     }
-#endif
     return ShellExecute(NULL, NULL, cmd, NULL, NULL, n_show_cmd);
 }
 
@@ -4466,20 +4412,9 @@ dump_pipe(int	    options,
     while (ret != 0 && availableBytes > 0)
     {
 	repeatCount++;
-	toRead =
-# ifdef FEAT_MBYTE
-		 (DWORD)(BUFLEN - *buffer_off);
-# else
-		 (DWORD)BUFLEN;
-# endif
+	toRead = (DWORD)(BUFLEN - *buffer_off);
 	toRead = availableBytes < toRead ? availableBytes : toRead;
-	ReadFile(g_hChildStd_OUT_Rd, buffer
-# ifdef FEAT_MBYTE
-		 + *buffer_off, toRead
-# else
-		 , toRead
-# endif
-		 , &len, NULL);
+	ReadFile(g_hChildStd_OUT_Rd, buffer + *buffer_off, toRead , &len, NULL);
 
 	/* If we haven't read anything, there is a problem */
 	if (len == 0)
@@ -4501,7 +4436,6 @@ dump_pipe(int	    options,
 		    ga_append(ga, buffer[i]);
 	    }
 	}
-# ifdef FEAT_MBYTE
 	else if (has_mbyte)
 	{
 	    int		l;
@@ -4545,7 +4479,6 @@ dump_pipe(int	    options,
 	    }
 	    *buffer_off = 0;
 	}
-# endif /* FEAT_MBYTE */
 	else
 	{
 	    buffer[len] = NUL;
@@ -4740,11 +4673,9 @@ mch_system_piped(char *cmd, int options)
 			}
 			else if (ta_buf[i] == '\r')
 			    ta_buf[i] = '\n';
-# ifdef FEAT_MBYTE
 			if (has_mbyte)
 			    i += (*mb_ptr2len_len)(ta_buf + i,
 						    ta_len + len - i) - 1;
-# endif
 		    }
 
 		    /*
@@ -4755,7 +4686,6 @@ mch_system_piped(char *cmd, int options)
 		    {
 			if (ta_buf[i] == '\n' || ta_buf[i] == '\b')
 			    msg_putchar(ta_buf[i]);
-# ifdef FEAT_MBYTE
 			else if (has_mbyte)
 			{
 			    int l = (*mb_ptr2len)(ta_buf + i);
@@ -4763,7 +4693,6 @@ mch_system_piped(char *cmd, int options)
 			    msg_outtrans_len(ta_buf + i, l);
 			    i += l - 1;
 			}
-# endif
 			else
 			    msg_outtrans_len(ta_buf + i, 1);
 		    }
@@ -4857,7 +4786,6 @@ mch_system(char *cmd, int options)
 }
 #else
 
-# ifdef FEAT_MBYTE
     static int
 mch_system(char *cmd, int options)
 {
@@ -4873,9 +4801,6 @@ mch_system(char *cmd, int options)
     }
     return system(cmd);
 }
-# else
-#  define mch_system(c, o) system(c)
-# endif
 
 #endif
 
@@ -4972,7 +4897,6 @@ mch_call_shell(
     int		tmode = cur_tmode;
 #ifdef FEAT_TITLE
     char	szShellTitle[512];
-# ifdef FEAT_MBYTE
     int		did_set_title = FALSE;
 
     /* Change the title to reflect that we are in a subshell. */
@@ -5003,7 +4927,6 @@ mch_call_shell(
 	}
     }
     if (!did_set_title)
-# endif
 	/* Change the title to reflect that we are in a subshell. */
 	if (GetConsoleTitle(szShellTitle, sizeof(szShellTitle) - 4) > 0)
 	{
@@ -5217,7 +5140,6 @@ mch_call_shell(
 			"External commands will not pause after completion.\n"
 			"See  :help win32-vimrun  for more information.");
 		    char *title = _("Vim Warning");
-# ifdef FEAT_MBYTE
 		    if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
 		    {
 			WCHAR *wmsg = enc_to_utf16((char_u *)msg, NULL);
@@ -5229,7 +5151,6 @@ mch_call_shell(
 			vim_free(wtitle);
 		    }
 		    else
-# endif
 			MessageBox(NULL, msg, title, MB_ICONWARNING);
 		    need_vimrun_warning = FALSE;
 		}
@@ -5294,8 +5215,8 @@ job_io_file_open(
 	DWORD dwFlagsAndAttributes)
 {
     HANDLE h;
-# ifdef FEAT_MBYTE
     WCHAR *wn = NULL;
+
     if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
     {
 	wn = enc_to_utf16(fname, NULL);
@@ -5308,7 +5229,6 @@ job_io_file_open(
 	}
     }
     if (wn == NULL)
-# endif
 	h = CreateFile((LPCSTR)fname, dwDesiredAccess, dwShareMode,
 		lpSecurityAttributes, dwCreationDisposition,
 		dwFlagsAndAttributes, NULL);
@@ -6339,7 +6259,6 @@ write_chars(
     COORD coord = g_coord;
     DWORD written;
 
-#ifdef FEAT_MBYTE
     if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
     {
 	static WCHAR	*unicodebuf = NULL;
@@ -6392,7 +6311,6 @@ write_chars(
 	}
     }
     else
-#endif
     {
 	if (!USE_VTP)
 	{
@@ -6763,10 +6681,8 @@ mch_delay(
     int
 mch_remove(char_u *name)
 {
-#ifdef FEAT_MBYTE
     WCHAR	*wn = NULL;
     int		n;
-#endif
 
     /*
      * On Windows, deleting a directory's symbolic link is done by
@@ -6777,7 +6693,6 @@ mch_remove(char_u *name)
 
     win32_setattrs(name, FILE_ATTRIBUTE_NORMAL);
 
-#ifdef FEAT_MBYTE
     if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
     {
 	wn = enc_to_utf16(name, NULL);
@@ -6788,7 +6703,6 @@ mch_remove(char_u *name)
 	    return n;
 	}
     }
-#endif
     return DeleteFile((LPCSTR)name) ? 0 : -1;
 }
 
@@ -6839,7 +6753,6 @@ mch_total_mem(int special UNUSED)
     return (long_u)((ms.ullTotalPhys - WINNT_RESERVE_BYTES) / 1024);
 }
 
-#ifdef FEAT_MBYTE
 /*
  * Same code as below, but with wide functions and no comments.
  * Return 0 for success, non-zero for failure.
@@ -6893,7 +6806,6 @@ mch_wrename(WCHAR *wold, WCHAR *wnew)
 
     return 0;
 }
-#endif
 
 
 /*
@@ -6924,7 +6836,6 @@ mch_rename(
     char	szNewPath[_MAX_PATH+1];
     char	*pszFilePart;
     HANDLE	hf;
-#ifdef FEAT_MBYTE
     WCHAR	*wold = NULL;
     WCHAR	*wnew = NULL;
     int		retval = -1;
@@ -6939,7 +6850,6 @@ mch_rename(
 	vim_free(wnew);
 	return retval;
     }
-#endif
 
     /*
      * No need to play tricks unless the file name contains a "~" as the
@@ -7024,25 +6934,20 @@ mch_access(char *n, int p)
 {
     HANDLE	hFile;
     int		retval = -1;	    /* default: fail */
-#ifdef FEAT_MBYTE
     WCHAR	*wn = NULL;
 
     if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
 	wn = enc_to_utf16((char_u *)n, NULL);
-#endif
 
     if (mch_isdir((char_u *)n))
     {
 	char TempName[_MAX_PATH + 16] = "";
-#ifdef FEAT_MBYTE
 	WCHAR TempNameW[_MAX_PATH + 16] = L"";
-#endif
 
 	if (p & R_OK)
 	{
 	    /* Read check is performed by seeing if we can do a find file on
 	     * the directory for any file. */
-#ifdef FEAT_MBYTE
 	    if (wn != NULL)
 	    {
 		int		    i;
@@ -7062,7 +6967,6 @@ mch_access(char *n, int p)
 		    (void)FindClose(hFile);
 	    }
 	    else
-#endif
 	    {
 		char		    *pch;
 		WIN32_FIND_DATA	    d;
@@ -7087,7 +6991,6 @@ mch_access(char *n, int p)
 	     * directories on read-only network shares.  However, in
 	     * directories whose ACL allows writes but denies deletes will end
 	     * up keeping the temporary file :-(. */
-#ifdef FEAT_MBYTE
 	    if (wn != NULL)
 	    {
 		if (!GetTempFileNameW(wn, L"VIM", 0, TempNameW))
@@ -7096,7 +6999,6 @@ mch_access(char *n, int p)
 		    DeleteFileW(TempNameW);
 	    }
 	    else
-#endif
 	    {
 		if (!GetTempFileName(n, "VIM", 0, TempName))
 		    goto getout;
@@ -7114,12 +7016,10 @@ mch_access(char *n, int p)
 	DWORD access_mode = ((p & W_OK) ? GENERIC_WRITE : 0)
 					     | ((p & R_OK) ? GENERIC_READ : 0);
 
-#ifdef FEAT_MBYTE
 	if (wn != NULL)
 	    hFile = CreateFileW(wn, access_mode, share_mode,
 						 NULL, OPEN_EXISTING, 0, NULL);
 	else
-#endif
 	    hFile = CreateFile(n, access_mode, share_mode,
 						 NULL, OPEN_EXISTING, 0, NULL);
 	if (hFile == INVALID_HANDLE_VALUE)
@@ -7129,13 +7029,10 @@ mch_access(char *n, int p)
 
     retval = 0;	    /* success */
 getout:
-#ifdef FEAT_MBYTE
     vim_free(wn);
-#endif
     return retval;
 }
 
-#if defined(FEAT_MBYTE) || defined(PROTO)
 /*
  * Version of open() that may use UTF-16 file name.
  */
@@ -7143,7 +7040,7 @@ getout:
 mch_open(const char *name, int flags, int mode)
 {
     /* _wopen() does not work with Borland C 5.5: creates a read-only file. */
-# ifndef __BORLANDC__
+#ifndef __BORLANDC__
     WCHAR	*wn;
     int		f;
 
@@ -7157,7 +7054,7 @@ mch_open(const char *name, int flags, in
 	    return f;
 	}
     }
-# endif
+#endif
 
     /* open() can open a file which name is longer than _MAX_PATH bytes
      * and shorter than _MAX_PATH characters successfully, but sometimes it
@@ -7180,7 +7077,7 @@ mch_fopen(const char *name, const char *
 
     if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
     {
-# if defined(DEBUG) && _MSC_VER >= 1400
+#if defined(DEBUG) && _MSC_VER >= 1400
 	/* Work around an annoying assertion in the Microsoft debug CRT
 	 * when mode's text/binary setting doesn't match _get_fmode(). */
 	char newMode = mode[strlen(mode) - 1];
@@ -7191,7 +7088,7 @@ mch_fopen(const char *name, const char *
 	    _set_fmode(_O_TEXT);
 	else if (newMode == 'b')
 	    _set_fmode(_O_BINARY);
-# endif
+#endif
 	wn = enc_to_utf16((char_u *)name, NULL);
 	wm = enc_to_utf16((char_u *)mode, NULL);
 	if (wn != NULL && wm != NULL)
@@ -7199,9 +7096,9 @@ mch_fopen(const char *name, const char *
 	vim_free(wn);
 	vim_free(wm);
 
-# if defined(DEBUG) && _MSC_VER >= 1400
+#if defined(DEBUG) && _MSC_VER >= 1400
 	_set_fmode(oldMode);
-# endif
+#endif
 	return f;
     }
 
@@ -7214,9 +7111,7 @@ mch_fopen(const char *name, const char *
 
     return fopen(name, mode);
 }
-#endif
-
-#ifdef FEAT_MBYTE
+
 /*
  * SUB STREAM (aka info stream) handling:
  *
@@ -7360,7 +7255,6 @@ copy_infostreams(char_u *from, char_u *t
     vim_free(fromw);
     vim_free(tow);
 }
-#endif
 
 /*
  * Copy file attributes from file "from" to file "to".
@@ -7370,11 +7264,9 @@ copy_infostreams(char_u *from, char_u *t
     int
 mch_copy_file_attribute(char_u *from, char_u *to)
 {
-#ifdef FEAT_MBYTE
     /* File streams only work on Windows NT and later. */
     PlatformId();
     copy_infostreams(from, to);
-#endif
     return 0;
 }
 
@@ -7464,7 +7356,6 @@ myresetstkoflw(void)
 #endif
 
 
-#if defined(FEAT_MBYTE) || defined(PROTO)
 /*
  * The command line arguments in UCS2
  */
@@ -7691,7 +7582,6 @@ fix_arg_enc(void)
 
     set_alist_count();
 }
-#endif
 
     int
 mch_setenv(char *var, char *value, int x)
@@ -7704,7 +7594,6 @@ mch_setenv(char *var, char *value, int x
 
     sprintf((char *)envbuf, "%s=%s", var, value);
 
-#ifdef FEAT_MBYTE
     if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
     {
 	WCHAR	    *p = enc_to_utf16(envbuf, NULL);
@@ -7713,14 +7602,13 @@ mch_setenv(char *var, char *value, int x
 	if (p == NULL)
 	    return -1;
 	_wputenv(p);
-# ifdef libintl_wputenv
+#ifdef libintl_wputenv
 	libintl_wputenv(p);
-# endif
+#endif
 	/* Unlike Un*x systems, we can free the string for _wputenv(). */
 	vim_free(p);
     }
     else
-#endif
     {
 	_putenv((char *)envbuf);
 #ifdef libintl_putenv
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -804,7 +804,6 @@ qf_get_next_file_line(qfstate_T *state)
     else
 	state->linebuf = IObuff;
 
-#ifdef FEAT_MBYTE
     // Convert a line if it contains a non-ASCII character.
     if (state->vc.vc_type != CONV_NONE && has_non_ascii(state->linebuf))
     {
@@ -827,7 +826,6 @@ qf_get_next_file_line(qfstate_T *state)
 	    }
 	}
     }
-#endif
 
     return QF_OK;
 }
@@ -872,9 +870,7 @@ qf_get_nextline(qfstate_T *state)
 #endif
     }
 
-#ifdef FEAT_MBYTE
     remove_bom(state->linebuf);
-#endif
 
     return QF_OK;
 }
@@ -1538,11 +1534,9 @@ qf_setup_state(
 	linenr_T	lnumfirst,
 	linenr_T	lnumlast)
 {
-#ifdef FEAT_MBYTE
     pstate->vc.vc_type = CONV_NONE;
     if (enc != NULL && *enc != NUL)
 	convert_setup(&pstate->vc, enc, p_enc);
-#endif
 
     if (efile != NULL && (pstate->fd = mch_fopen((char *)efile, "r")) == NULL)
     {
@@ -1576,10 +1570,8 @@ qf_cleanup_state(qfstate_T *pstate)
 	fclose(pstate->fd);
 
     vim_free(pstate->growbuf);
-#ifdef FEAT_MBYTE
     if (pstate->vc.vc_type != CONV_NONE)
 	convert_setup(&pstate->vc, NULL, NULL);
-#endif
 }
 
 /*
@@ -4690,9 +4682,7 @@ ex_make(exarg_T *eap)
 	    return;
 #endif
     }
-#ifdef FEAT_MBYTE
     enc = (*curbuf->b_p_menc != NUL) ? curbuf->b_p_menc : p_menc;
-#endif
 
     if (is_loclist_cmd(eap->cmdidx))
 	wp = curwin;
@@ -5032,9 +5022,7 @@ ex_cfile(exarg_T *eap)
     }
     if (au_name != NULL)
 	apply_autocmds(EVENT_QUICKFIXCMDPRE, au_name, NULL, FALSE, curbuf);
-#ifdef FEAT_MBYTE
     enc = (*curbuf->b_p_menc != NUL) ? curbuf->b_p_menc : p_menc;
-#endif
 #ifdef FEAT_BROWSE
     if (cmdmod.browse)
     {
@@ -7035,9 +7023,7 @@ hgr_get_ll(int *new_ll)
 hgr_search_file(
 	qf_info_T *qi,
 	char_u *fname,
-#ifdef FEAT_MBYTE
 	vimconv_T *p_vc,
-#endif
 	regmatch_T *p_regmatch)
 {
     FILE	*fd;
@@ -7051,7 +7037,7 @@ hgr_search_file(
     while (!vim_fgets(IObuff, IOSIZE, fd) && !got_int)
     {
 	char_u    *line = IObuff;
-#ifdef FEAT_MBYTE
+
 	// Convert a line if 'encoding' is not utf-8 and
 	// the line contains a non-ASCII character.
 	if (p_vc->vc_type != CONV_NONE
@@ -7061,7 +7047,6 @@ hgr_search_file(
 	    if (line == NULL)
 		line = IObuff;
 	}
-#endif
 
 	if (vim_regexec(p_regmatch, line, (colnr_T)0))
 	{
@@ -7089,17 +7074,13 @@ hgr_search_file(
 			) == FAIL)
 	    {
 		got_int = TRUE;
-#ifdef FEAT_MBYTE
 		if (line != IObuff)
 		    vim_free(line);
-#endif
 		break;
 	    }
 	}
-#ifdef FEAT_MBYTE
 	if (line != IObuff)
 	    vim_free(line);
-#endif
 	++lnum;
 	line_breakcheck();
     }
@@ -7114,10 +7095,8 @@ hgr_search_file(
 hgr_search_files_in_dir(
 	qf_info_T *qi,
 	char_u *dirname,
-	regmatch_T *p_regmatch
-#ifdef FEAT_MBYTE
-	, vimconv_T *p_vc
-#endif
+	regmatch_T *p_regmatch,
+	vimconv_T *p_vc
 #ifdef FEAT_MULTI_LANG
 	, char_u *lang
 #endif
@@ -7147,11 +7126,7 @@ hgr_search_files_in_dir(
 		continue;
 #endif
 
-	    hgr_search_file(qi, fnames[fi],
-#ifdef FEAT_MBYTE
-		    p_vc,
-#endif
-		    p_regmatch);
+	    hgr_search_file(qi, fnames[fi], p_vc, p_regmatch);
 	}
 	FreeWild(fcount, fnames);
     }
@@ -7168,7 +7143,6 @@ hgr_search_in_rtp(qf_info_T *qi, regmatc
 {
     char_u	*p;
 
-#ifdef FEAT_MBYTE
     vimconv_T	vc;
 
     // Help files are in utf-8 or latin1, convert lines when 'encoding'
@@ -7176,7 +7150,6 @@ hgr_search_in_rtp(qf_info_T *qi, regmatc
     vc.vc_type = CONV_NONE;
     if (!enc_utf8)
 	convert_setup(&vc, (char_u *)"utf-8", p_enc);
-#endif
 
     // Go through all the directories in 'runtimepath'
     p = p_rtp;
@@ -7184,20 +7157,15 @@ hgr_search_in_rtp(qf_info_T *qi, regmatc
     {
 	copy_option_part(&p, NameBuff, MAXPATHL, ",");
 
-	hgr_search_files_in_dir(qi, NameBuff, p_regmatch
-#ifdef FEAT_MBYTE
-		, &vc
-#endif
+	hgr_search_files_in_dir(qi, NameBuff, p_regmatch, &vc
 #ifdef FEAT_MULTI_LANG
 		, lang
 #endif
 		);
     }
 
-#ifdef FEAT_MBYTE
     if (vc.vc_type != CONV_NONE)
 	convert_setup(&vc, NULL, NULL);
-#endif
 }
 
 /*
--- a/src/regexp.c
+++ b/src/regexp.c
@@ -359,9 +359,7 @@ static int re_mult_next(char *what);
 
 static char_u e_missingbracket[] = N_("E769: Missing ] after %s[");
 static char_u e_reverse_range[] = N_("E944: Reverse range in character class");
-#ifdef FEAT_MBYTE
 static char_u e_large_class[] = N_("E945: Range too large in character class");
-#endif
 static char_u e_unmatchedpp[] = N_("E53: Unmatched %s%%(");
 static char_u e_unmatchedp[] = N_("E54: Unmatched %s(");
 static char_u e_unmatchedpar[] = N_("E55: Unmatched %s)");
@@ -561,27 +559,15 @@ init_class_tab(void)
     done = TRUE;
 }
 
-#ifdef FEAT_MBYTE
-# define ri_digit(c)	(c < 0x100 && (class_tab[c] & RI_DIGIT))
-# define ri_hex(c)	(c < 0x100 && (class_tab[c] & RI_HEX))
-# define ri_octal(c)	(c < 0x100 && (class_tab[c] & RI_OCTAL))
-# define ri_word(c)	(c < 0x100 && (class_tab[c] & RI_WORD))
-# define ri_head(c)	(c < 0x100 && (class_tab[c] & RI_HEAD))
-# define ri_alpha(c)	(c < 0x100 && (class_tab[c] & RI_ALPHA))
-# define ri_lower(c)	(c < 0x100 && (class_tab[c] & RI_LOWER))
-# define ri_upper(c)	(c < 0x100 && (class_tab[c] & RI_UPPER))
-# define ri_white(c)	(c < 0x100 && (class_tab[c] & RI_WHITE))
-#else
-# define ri_digit(c)	(class_tab[c] & RI_DIGIT)
-# define ri_hex(c)	(class_tab[c] & RI_HEX)
-# define ri_octal(c)	(class_tab[c] & RI_OCTAL)
-# define ri_word(c)	(class_tab[c] & RI_WORD)
-# define ri_head(c)	(class_tab[c] & RI_HEAD)
-# define ri_alpha(c)	(class_tab[c] & RI_ALPHA)
-# define ri_lower(c)	(class_tab[c] & RI_LOWER)
-# define ri_upper(c)	(class_tab[c] & RI_UPPER)
-# define ri_white(c)	(class_tab[c] & RI_WHITE)
-#endif
+#define ri_digit(c)	(c < 0x100 && (class_tab[c] & RI_DIGIT))
+#define ri_hex(c)	(c < 0x100 && (class_tab[c] & RI_HEX))
+#define ri_octal(c)	(c < 0x100 && (class_tab[c] & RI_OCTAL))
+#define ri_word(c)	(c < 0x100 && (class_tab[c] & RI_WORD))
+#define ri_head(c)	(c < 0x100 && (class_tab[c] & RI_HEAD))
+#define ri_alpha(c)	(c < 0x100 && (class_tab[c] & RI_ALPHA))
+#define ri_lower(c)	(c < 0x100 && (class_tab[c] & RI_LOWER))
+#define ri_upper(c)	(c < 0x100 && (class_tab[c] & RI_UPPER))
+#define ri_white(c)	(c < 0x100 && (class_tab[c] & RI_WHITE))
 
 /* flags for regflags */
 #define RF_ICASE    1	/* ignore case */
@@ -698,21 +684,13 @@ static char_u	*regconcat(int *flagp);
 static char_u	*regpiece(int *);
 static char_u	*regatom(int *);
 static char_u	*regnode(int);
-#ifdef FEAT_MBYTE
 static int	use_multibytecode(int c);
-#endif
 static int	prog_magic_wrong(void);
 static char_u	*regnext(char_u *);
 static void	regc(int b);
-#ifdef FEAT_MBYTE
 static void	regmbc(int c);
-# define REGMBC(x) regmbc(x);
-# define CASEMBC(x) case x:
-#else
-# define regmbc(c) regc(c)
-# define REGMBC(x)
-# define CASEMBC(x)
-#endif
+#define REGMBC(x) regmbc(x);
+#define CASEMBC(x) case x:
 static void	reginsert(int, char_u *);
 static void	reginsert_nr(int op, long val, char_u *opnd);
 static void	reginsert_limits(int, long, long, char_u *);
@@ -747,17 +725,13 @@ get_equi_class(char_u **pp)
 
     if (p[1] == '=')
     {
-#ifdef FEAT_MBYTE
 	if (has_mbyte)
 	    l = (*mb_ptr2len)(p + 2);
-#endif
 	if (p[l + 2] == '=' && p[l + 3] == ']')
 	{
-#ifdef FEAT_MBYTE
 	    if (has_mbyte)
 		c = mb_ptr2char(p + 2);
 	    else
-#endif
 		c = p[2];
 	    *pp += l + 4;
 	    return c;
@@ -798,10 +772,8 @@ char *EQUIVAL_CLASS_C[16] = {
     static void
 reg_equi_class(int c)
 {
-#ifdef FEAT_MBYTE
     if (enc_utf8 || STRCMP(p_enc, "latin1") == 0
 					 || STRCMP(p_enc, "iso-8859-15") == 0)
-#endif
     {
 #ifdef EBCDIC
 	int i;
@@ -1134,17 +1106,13 @@ get_coll_element(char_u **pp)
 
     if (p[0] != NUL && p[1] == '.')
     {
-#ifdef FEAT_MBYTE
 	if (has_mbyte)
 	    l = (*mb_ptr2len)(p + 2);
-#endif
 	if (p[l + 2] == '.' && p[l + 3] == ']')
 	{
-#ifdef FEAT_MBYTE
 	    if (has_mbyte)
 		c = mb_ptr2char(p + 2);
 	    else
-#endif
 		c = p[2];
 	    *pp += l + 4;
 	    return c;
@@ -1171,9 +1139,7 @@ get_cpo_flags(void)
     static char_u *
 skip_anyof(char_u *p)
 {
-#ifdef FEAT_MBYTE
     int		l;
-#endif
 
     if (*p == '^')	/* Complement of range. */
 	++p;
@@ -1181,11 +1147,9 @@ skip_anyof(char_u *p)
 	++p;
     while (*p != NUL && *p != ']')
     {
-#ifdef FEAT_MBYTE
 	if (has_mbyte && (l = (*mb_ptr2len)(p)) > 1)
 	    p += l;
 	else
-#endif
 	    if (*p == '-')
 	    {
 		++p;
@@ -1395,11 +1359,9 @@ bt_regcomp(char_u *expr, int re_flags)
 
 	if (OP(scan) == EXACTLY)
 	{
-#ifdef FEAT_MBYTE
 	    if (has_mbyte)
 		r->regstart = (*mb_ptr2char)(OPERAND(scan));
 	    else
-#endif
 		r->regstart = *OPERAND(scan);
 	}
 	else if ((OP(scan) == BOW
@@ -1409,11 +1371,9 @@ bt_regcomp(char_u *expr, int re_flags)
 		    || OP(scan) == MCLOSE + 0 || OP(scan) == NCLOSE)
 		 && OP(regnext(scan)) == EXACTLY)
 	{
-#ifdef FEAT_MBYTE
 	    if (has_mbyte)
 		r->regstart = (*mb_ptr2char)(OPERAND(regnext(scan)));
 	    else
-#endif
 		r->regstart = *OPERAND(regnext(scan));
 	}
 
@@ -1696,9 +1656,7 @@ regconcat(int *flagp)
 			    cont = FALSE;
 			    break;
 	    case Magic('Z'):
-#ifdef FEAT_MBYTE
 			    regflags |= RF_ICOMBINE;
-#endif
 			    skipchr_keepstart();
 			    break;
 	    case Magic('c'):
@@ -2008,7 +1966,7 @@ regatom(int *flagp)
 	p = vim_strchr(classchars, no_Magic(c));
 	if (p == NULL)
 	    EMSG_RET_NULL(_("E63: invalid use of \\_"));
-#ifdef FEAT_MBYTE
+
 	/* When '.' is followed by a composing char ignore the dot, so that
 	 * the composing char is matched here. */
 	if (enc_utf8 && c == Magic('.') && utf_iscomposing(peekchr()))
@@ -2016,7 +1974,6 @@ regatom(int *flagp)
 	    c = getchr();
 	    goto do_multibyte;
 	}
-#endif
 	ret = regnode(classcodes[p - classchars] + extra);
 	*flagp |= HASWIDTH | SIMPLE;
 	break;
@@ -2268,20 +2225,14 @@ regatom(int *flagp)
 				  EMSG2_RET_NULL(
 					_("E678: Invalid character after %s%%[dxouU]"),
 					reg_magic == MAGIC_ALL);
-#ifdef FEAT_MBYTE
 			      if (use_multibytecode(i))
 				  ret = regnode(MULTIBYTECODE);
 			      else
-#endif
 				  ret = regnode(EXACTLY);
 			      if (i == 0)
 				  regc(0x0a);
 			      else
-#ifdef FEAT_MBYTE
 				  regmbc(i);
-#else
-				  regc(i);
-#endif
 			      regc(NUL);
 			      *flagp |= HASWIDTH;
 			      break;
@@ -2403,11 +2354,9 @@ collection:
 				endc = get_coll_element(&regparse);
 			    if (endc == 0)
 			    {
-#ifdef FEAT_MBYTE
 				if (has_mbyte)
 				    endc = mb_ptr2char_adv(&regparse);
 				else
-#endif
 				    endc = *regparse++;
 			    }
 
@@ -2417,7 +2366,6 @@ collection:
 
 			    if (startc > endc)
 				EMSG_RET_NULL(_(e_reverse_range));
-#ifdef FEAT_MBYTE
 			    if (has_mbyte && ((*mb_char2len)(startc) > 1
 						 || (*mb_char2len)(endc) > 1))
 			    {
@@ -2428,7 +2376,6 @@ collection:
 				    regmbc(startc);
 			    }
 			    else
-#endif
 			    {
 #ifdef EBCDIC
 				int	alpha_only = FALSE;
@@ -2488,11 +2435,7 @@ collection:
 			    if (startc == 0)
 				regc(0x0a);
 			    else
-#ifdef FEAT_MBYTE
 				regmbc(startc);
-#else
-				regc(startc);
-#endif
 			}
 			else
 			{
@@ -2606,7 +2549,6 @@ collection:
 		    }
 		    else
 		    {
-#ifdef FEAT_MBYTE
 			if (has_mbyte)
 			{
 			    int	len;
@@ -2621,7 +2563,6 @@ collection:
 				regc(*regparse++);
 			}
 			else
-#endif
 			{
 			    startc = *regparse++;
 			    regc(startc);
@@ -2645,7 +2586,6 @@ collection:
 	{
 	    int		len;
 
-#ifdef FEAT_MBYTE
 	    /* A multi-byte character is handled as a separate atom if it's
 	     * before a multi and when it's a composing char. */
 	    if (use_multibytecode(c))
@@ -2656,7 +2596,6 @@ do_multibyte:
 		*flagp |= HASWIDTH | SIMPLE;
 		break;
 	    }
-#endif
 
 	    ret = regnode(EXACTLY);
 
@@ -2675,7 +2614,6 @@ do_multibyte:
 			    && !is_Magic(c))); ++len)
 	    {
 		c = no_Magic(c);
-#ifdef FEAT_MBYTE
 		if (has_mbyte)
 		{
 		    regmbc(c);
@@ -2695,7 +2633,6 @@ do_multibyte:
 		    }
 		}
 		else
-#endif
 		    regc(c);
 		c = getchr();
 	    }
@@ -2712,7 +2649,6 @@ do_multibyte:
     return ret;
 }
 
-#ifdef FEAT_MBYTE
 /*
  * Return TRUE if MULTIBYTECODE should be used instead of EXACTLY for
  * character "c".
@@ -2724,7 +2660,6 @@ use_multibytecode(int c)
 		     && (re_multi_type(peekchr()) != NOT_MULTI
 			     || (enc_utf8 && utf_iscomposing(c)));
 }
-#endif
 
 /*
  * Emit a node.
@@ -2759,7 +2694,6 @@ regc(int b)
 	*regcode++ = b;
 }
 
-#ifdef FEAT_MBYTE
 /*
  * Emit (if appropriate) a multi-byte character of code
  */
@@ -2773,7 +2707,6 @@ regmbc(int c)
     else
 	regcode += (*mb_char2bytes)(c, regcode);
 }
-#endif
 
 /*
  * Insert an operator in front of already-emitted operand
@@ -3139,21 +3072,17 @@ peekchr(void)
 		     * Next character can never be (made) magic?
 		     * Then backslashing it won't do anything.
 		     */
-#ifdef FEAT_MBYTE
 		    if (has_mbyte)
 			curchr = (*mb_ptr2char)(regparse + 1);
 		    else
-#endif
 			curchr = c;
 		}
 		break;
 	    }
 
-#ifdef FEAT_MBYTE
 	default:
 	    if (has_mbyte)
 		curchr = (*mb_ptr2char)(regparse);
-#endif
 	}
     }
 
@@ -3173,14 +3102,12 @@ skipchr(void)
 	prevchr_len = 0;
     if (regparse[prevchr_len] != NUL)
     {
-#ifdef FEAT_MBYTE
 	if (enc_utf8)
 	    /* exclude composing chars that mb_ptr2len does include */
 	    prevchr_len += utf_ptr2len(regparse + prevchr_len);
 	else if (has_mbyte)
 	    prevchr_len += (*mb_ptr2len)(regparse + prevchr_len);
 	else
-#endif
 	    ++prevchr_len;
     }
     regparse += prevchr_len;
@@ -3538,11 +3465,9 @@ typedef struct {
      * contains '\c' or '\C' the value is overruled. */
     int			reg_ic;
 
-#ifdef FEAT_MBYTE
     /* Similar to "reg_ic", but only for 'combining' characters.  Set with \Z
      * flag in the regexp.  Defaults to false, always. */
     int			reg_icombine;
-#endif
 
     /* Copy of "rmm_maxcol": maximum column to search for a match.  Zero when
      * there is no maximum. */
@@ -3714,9 +3639,7 @@ bt_regexec_nl(
     rex.reg_buf = curbuf;
     rex.reg_win = NULL;
     rex.reg_ic = rmp->rm_ic;
-#ifdef FEAT_MBYTE
     rex.reg_icombine = FALSE;
-#endif
     rex.reg_maxcol = 0;
 
     return bt_regexec_both(line, col, NULL, NULL);
@@ -3748,9 +3671,7 @@ bt_regexec_multi(
     rex.reg_maxline = rex.reg_buf->b_ml.ml_line_count - lnum;
     rex.reg_line_lbr = FALSE;
     rex.reg_ic = rmp->rmm_ic;
-#ifdef FEAT_MBYTE
     rex.reg_icombine = FALSE;
-#endif
     rex.reg_maxcol = rmp->rmm_maxcol;
 
     return bt_regexec_both(NULL, col, tm, timed_out);
@@ -3827,22 +3748,18 @@ bt_regexec_both(
     else if (prog->regflags & RF_NOICASE)
 	rex.reg_ic = FALSE;
 
-#ifdef FEAT_MBYTE
     /* If pattern contains "\Z" overrule value of rex.reg_icombine */
     if (prog->regflags & RF_ICOMBINE)
 	rex.reg_icombine = TRUE;
-#endif
 
     /* If there is a "must appear" string, look for it. */
     if (prog->regmust != NULL)
     {
 	int c;
 
-#ifdef FEAT_MBYTE
 	if (has_mbyte)
 	    c = (*mb_ptr2char)(prog->regmust);
 	else
-#endif
 	    c = *prog->regmust;
 	s = line + col;
 
@@ -3850,18 +3767,13 @@ bt_regexec_both(
 	 * This is used very often, esp. for ":global".  Use three versions of
 	 * the loop to avoid overhead of conditions.
 	 */
-	if (!rex.reg_ic
-#ifdef FEAT_MBYTE
-		&& !has_mbyte
-#endif
-		)
+	if (!rex.reg_ic && !has_mbyte)
 	    while ((s = vim_strbyte(s, c)) != NULL)
 	    {
 		if (cstrncmp(s, prog->regmust, &prog->regmlen) == 0)
 		    break;		/* Found it. */
 		++s;
 	    }
-#ifdef FEAT_MBYTE
 	else if (!rex.reg_ic || (!enc_utf8 && mb_char2len(c) > 1))
 	    while ((s = vim_strchr(s, c)) != NULL)
 	    {
@@ -3869,7 +3781,6 @@ bt_regexec_both(
 		    break;		/* Found it. */
 		MB_PTR_ADV(s);
 	    }
-#endif
 	else
 	    while ((s = cstrchr(s, c)) != NULL)
 	    {
@@ -3890,19 +3801,15 @@ bt_regexec_both(
     {
 	int	c;
 
-#ifdef FEAT_MBYTE
 	if (has_mbyte)
 	    c = (*mb_ptr2char)(rex.line + col);
 	else
-#endif
 	    c = rex.line[col];
 	if (prog->regstart == NUL
 		|| prog->regstart == c
-		|| (rex.reg_ic && ((
-#ifdef FEAT_MBYTE
-			(enc_utf8 && utf_fold(prog->regstart) == utf_fold(c)))
+		|| (rex.reg_ic
+		    && (((enc_utf8 && utf_fold(prog->regstart) == utf_fold(c)))
 			|| (c < 255 && prog->regstart < 255 &&
-#endif
 			    MB_TOLOWER(prog->regstart) == MB_TOLOWER(c)))))
 	    retval = regtry(prog, col, tm, timed_out);
 	else
@@ -3920,11 +3827,7 @@ bt_regexec_both(
 	    {
 		/* Skip until the char we know it must start with.
 		 * Used often, do some work to avoid call overhead. */
-		if (!rex.reg_ic
-#ifdef FEAT_MBYTE
-			    && !has_mbyte
-#endif
-			    )
+		if (!rex.reg_ic && !has_mbyte)
 		    s = vim_strbyte(rex.line + col, prog->regstart);
 		else
 		    s = cstrchr(rex.line + col, prog->regstart);
@@ -3955,11 +3858,9 @@ bt_regexec_both(
 	    }
 	    if (rex.line[col] == NUL)
 		break;
-#ifdef FEAT_MBYTE
 	    if (has_mbyte)
 		col += (*mb_ptr2len)(rex.line + col);
 	    else
-#endif
 		++col;
 #ifdef FEAT_RELTIME
 	    /* Check for timeout once in a twenty times to avoid overhead. */
@@ -4116,7 +4017,6 @@ regtry(
     return 1 + rex.lnum;
 }
 
-#ifdef FEAT_MBYTE
 /*
  * Get class of previous character.
  */
@@ -4125,10 +4025,9 @@ reg_prev_class(void)
 {
     if (rex.input > rex.line)
 	return mb_get_class_buf(rex.input - 1
-			 - (*mb_head_off)(rex.line, rex.input - 1), rex.reg_buf);
+		       - (*mb_head_off)(rex.line, rex.input - 1), rex.reg_buf);
     return -1;
 }
-#endif
 
 /*
  * Return TRUE if the current rex.input position matches the Visual area.
@@ -4339,11 +4238,9 @@ regmatch(
 	{
 	  if (WITH_NL(op))
 	      op -= ADD_NL;
-#ifdef FEAT_MBYTE
 	  if (has_mbyte)
 	      c = (*mb_ptr2char)(rex.input);
 	  else
-#endif
 	      c = *rex.input;
 	  switch (op)
 	  {
@@ -4431,7 +4328,6 @@ regmatch(
 	  case BOW:	/* \<word; rex.input points to w */
 	    if (c == NUL)	/* Can't match at end of line */
 		status = RA_NOMATCH;
-#ifdef FEAT_MBYTE
 	    else if (has_mbyte)
 	    {
 		int this_class;
@@ -4443,7 +4339,6 @@ regmatch(
 		else if (reg_prev_class() == this_class)
 		    status = RA_NOMATCH;  /* previous char is in same word */
 	    }
-#endif
 	    else
 	    {
 		if (!vim_iswordc_buf(c, rex.reg_buf) || (rex.input > rex.line
@@ -4455,7 +4350,6 @@ regmatch(
 	  case EOW:	/* word\>; rex.input points after d */
 	    if (rex.input == rex.line)    /* Can't match at start of line */
 		status = RA_NOMATCH;
-#ifdef FEAT_MBYTE
 	    else if (has_mbyte)
 	    {
 		int this_class, prev_class;
@@ -4467,7 +4361,6 @@ regmatch(
 			|| prev_class == 0 || prev_class == 1)
 		    status = RA_NOMATCH;
 	    }
-#endif
 	    else
 	    {
 		if (!vim_iswordc_buf(rex.input[-1], rex.reg_buf)
@@ -4676,11 +4569,9 @@ regmatch(
 		opnd = OPERAND(scan);
 		/* Inline the first byte, for speed. */
 		if (*opnd != *rex.input
-			&& (!rex.reg_ic || (
-#ifdef FEAT_MBYTE
-			    !enc_utf8 &&
-#endif
-			    MB_TOLOWER(*opnd) != MB_TOLOWER(*rex.input))))
+			&& (!rex.reg_ic
+			    || (!enc_utf8
+			      && MB_TOLOWER(*opnd) != MB_TOLOWER(*rex.input))))
 		    status = RA_NOMATCH;
 		else if (*opnd == NUL)
 		{
@@ -4689,11 +4580,7 @@ regmatch(
 		}
 		else
 		{
-		    if (opnd[1] == NUL
-#ifdef FEAT_MBYTE
-			    && !(enc_utf8 && rex.reg_ic)
-#endif
-			)
+		    if (opnd[1] == NUL && !(enc_utf8 && rex.reg_ic))
 		    {
 			len = 1;	/* matched a single byte above */
 		    }
@@ -4704,7 +4591,6 @@ regmatch(
 			if (cstrncmp(opnd, rex.input, &len) != 0)
 			    status = RA_NOMATCH;
 		    }
-#ifdef FEAT_MBYTE
 		    /* Check for following composing character, unless %C
 		     * follows (skips over all composing chars). */
 		    if (status != RA_NOMATCH
@@ -4718,7 +4604,6 @@ regmatch(
 			 * for voweled Hebrew texts. */
 			status = RA_NOMATCH;
 		    }
-#endif
 		    if (status != RA_NOMATCH)
 			rex.input += len;
 		}
@@ -4735,7 +4620,6 @@ regmatch(
 		ADVANCE_REGINPUT();
 	    break;
 
-#ifdef FEAT_MBYTE
 	  case MULTIBYTECODE:
 	    if (has_mbyte)
 	    {
@@ -4788,16 +4672,13 @@ regmatch(
 	    else
 		status = RA_NOMATCH;
 	    break;
-#endif
 	  case RE_COMPOSING:
-#ifdef FEAT_MBYTE
 	    if (enc_utf8)
 	    {
 		/* Skip composing characters. */
 		while (utf_iscomposing(utf_ptr2char(rex.input)))
 		    MB_CPTR_ADV(rex.input);
 	    }
-#endif
 	    break;
 
 	  case NOTHING:
@@ -5561,7 +5442,6 @@ regmatch(
 		    }
 		    else
 		    {
-#ifdef FEAT_MBYTE
 			if (has_mbyte)
 			{
 			    char_u *line =
@@ -5572,7 +5452,6 @@ regmatch(
 				    + rp->rs_un.regsave.rs_u.pos.col - 1) + 1;
 			}
 			else
-#endif
 			    --rp->rs_un.regsave.rs_u.pos.col;
 		    }
 		}
@@ -5952,9 +5831,8 @@ regrepeat(
 do_class:
 	while (count < maxcount)
 	{
-#ifdef FEAT_MBYTE
 	    int		l;
-#endif
+
 	    if (*scan == NUL)
 	    {
 		if (!REG_MULTI || !WITH_NL(OP(p)) || rex.lnum > rex.reg_maxline
@@ -5965,14 +5843,12 @@ do_class:
 		if (got_int)
 		    break;
 	    }
-#ifdef FEAT_MBYTE
 	    else if (has_mbyte && (l = (*mb_ptr2len)(scan)) > 1)
 	    {
 		if (testval != 0)
 		    break;
 		scan += l;
 	    }
-#endif
 	    else if ((class_tab[*scan] & mask) == testval)
 		++scan;
 	    else if (rex.reg_line_lbr && *scan == '\n' && WITH_NL(OP(p)))
@@ -6081,7 +5957,6 @@ do_class:
 	    break;
 	}
 
-#ifdef FEAT_MBYTE
       case MULTIBYTECODE:
 	{
 	    int		i, len, cf = 0;
@@ -6106,7 +5981,6 @@ do_class:
 	    }
 	}
 	break;
-#endif
 
       case ANYOF:
       case ANYOF + ADD_NL:
@@ -6117,9 +5991,8 @@ do_class:
       case ANYBUT + ADD_NL:
 	while (count < maxcount)
 	{
-#ifdef FEAT_MBYTE
 	    int len;
-#endif
+
 	    if (*scan == NUL)
 	    {
 		if (!REG_MULTI || !WITH_NL(OP(p)) || rex.lnum > rex.reg_maxline
@@ -6132,14 +6005,12 @@ do_class:
 	    }
 	    else if (rex.reg_line_lbr && *scan == '\n' && WITH_NL(OP(p)))
 		++scan;
-#ifdef FEAT_MBYTE
 	    else if (has_mbyte && (len = (*mb_ptr2len)(scan)) > 1)
 	    {
 		if ((cstrchr(opnd, (*mb_ptr2char)(scan)) == NULL) == testval)
 		    break;
 		scan += len;
 	    }
-#endif
 	    else
 	    {
 		if ((cstrchr(opnd, *scan) == NULL) == testval)
@@ -6955,11 +6826,9 @@ regprop(char_u *op)
 	sprintf(buf + STRLEN(buf), "BRACE_COMPLEX%d", OP(op) - BRACE_COMPLEX);
 	p = NULL;
 	break;
-#ifdef FEAT_MBYTE
       case MULTIBYTECODE:
 	p = "MULTIBYTECODE";
 	break;
-#endif
       case NEWL:
 	p = "NEWL";
 	break;
@@ -6989,7 +6858,6 @@ re_mult_next(char *what)
     return OK;
 }
 
-#ifdef FEAT_MBYTE
 typedef struct
 {
     int a, b, c;
@@ -7067,7 +6935,6 @@ mb_decompose(int c, int *c1, int *c2, in
 	*c2 = *c3 = 0;
     }
 }
-#endif
 
 /*
  * Compare two strings, ignore case if rex.reg_ic set.
@@ -7084,7 +6951,6 @@ cstrncmp(char_u *s1, char_u *s2, int *n)
     else
 	result = MB_STRNICMP(s1, s2, *n);
 
-#ifdef FEAT_MBYTE
     /* if it failed and it's utf8 and we want to combineignore: */
     if (result != 0 && enc_utf8 && rex.reg_icombine)
     {
@@ -7121,7 +6987,6 @@ cstrncmp(char_u *s1, char_u *s2, int *n)
 	if (result == 0)
 	    *n = (int)(str2 - s2);
     }
-#endif
 
     return result;
 }
@@ -7135,21 +7000,15 @@ cstrchr(char_u *s, int c)
     char_u	*p;
     int		cc;
 
-    if (!rex.reg_ic
-#ifdef FEAT_MBYTE
-	    || (!enc_utf8 && mb_char2len(c) > 1)
-#endif
-	    )
+    if (!rex.reg_ic || (!enc_utf8 && mb_char2len(c) > 1))
 	return vim_strchr(s, c);
 
     /* tolower() and toupper() can be slow, comparing twice should be a lot
      * faster (esp. when using MS Visual C++!).
      * For UTF-8 need to use folded case. */
-#ifdef FEAT_MBYTE
     if (enc_utf8 && c > 0x80)
 	cc = utf_fold(c);
     else
-#endif
 	 if (MB_ISUPPER(c))
 	cc = MB_TOLOWER(c);
     else if (MB_ISLOWER(c))
@@ -7157,7 +7016,6 @@ cstrchr(char_u *s, int c)
     else
 	return vim_strchr(s, c);
 
-#ifdef FEAT_MBYTE
     if (has_mbyte)
     {
 	for (p = s; *p != NUL; p += (*mb_ptr2len)(p))
@@ -7172,7 +7030,6 @@ cstrchr(char_u *s, int c)
 	}
     }
     else
-#endif
 	/* Faster version for when there are no multi-byte characters. */
 	for (p = s; *p != NUL; ++p)
 	    if (*p == c || *p == cc)
@@ -7285,10 +7142,8 @@ regtilde(char_u *source, int magic)
 	{
 	    if (*p == '\\' && p[1])		/* skip escaped characters */
 		++p;
-#ifdef FEAT_MBYTE
 	    if (has_mbyte)
 		p += (*mb_ptr2len)(p) - 1;
-#endif
 	}
     }
 
@@ -7682,10 +7537,8 @@ vim_regsub_both(
 				c = *src++;
 		}
 	    }
-#ifdef FEAT_MBYTE
 	    else if (has_mbyte)
 		c = mb_ptr2char(src - 1);
-#endif
 
 	    /* Write to buffer, if copy is set. */
 	    if (func_one != (fptr_T)NULL)
@@ -7697,7 +7550,6 @@ vim_regsub_both(
 	    else /* just copy */
 		cc = c;
 
-#ifdef FEAT_MBYTE
 	    if (has_mbyte)
 	    {
 		int totlen = mb_ptr2len(src - 1);
@@ -7721,9 +7573,7 @@ vim_regsub_both(
 		}
 		src += totlen - 1;
 	    }
-	    else
-#endif
-		if (copy)
+	    else if (copy)
 		    *dst = cc;
 	    dst++;
 	}
@@ -7799,11 +7649,9 @@ vim_regsub_both(
 			}
 			else
 			{
-#ifdef FEAT_MBYTE
 			    if (has_mbyte)
 				c = mb_ptr2char(s);
 			    else
-#endif
 				c = *s;
 
 			    if (func_one != (fptr_T)NULL)
@@ -7815,7 +7663,6 @@ vim_regsub_both(
 			    else /* just copy */
 				cc = c;
 
-#ifdef FEAT_MBYTE
 			    if (has_mbyte)
 			    {
 				int l;
@@ -7833,9 +7680,7 @@ vim_regsub_both(
 				    mb_char2bytes(cc, dst);
 				dst += mb_char2len(cc) - 1;
 			    }
-			    else
-#endif
-				if (copy)
+			    else if (copy)
 				    *dst = cc;
 			    dst++;
 			}
--- a/src/regexp_nfa.c
+++ b/src/regexp_nfa.c
@@ -487,11 +487,9 @@ nfa_get_match_text(nfa_state_T *start)
 	s = ret;
 	while (p->c > 0)
 	{
-#ifdef FEAT_MBYTE
 	    if (has_mbyte)
 		s += (*mb_char2bytes)(p->c, s);
 	    else
-#endif
 		*s++ = p->c;
 	    p = p->out;
 	}
@@ -687,16 +685,10 @@ nfa_recognize_char_class(char_u *start, 
 nfa_emit_equi_class(int c)
 {
 #define EMIT2(c)    EMIT(c); EMIT(NFA_CONCAT);
-#ifdef FEAT_MBYTE
-# define EMITMBC(c) EMIT(c); EMIT(NFA_CONCAT);
-#else
-# define EMITMBC(c)
-#endif
-
-#ifdef FEAT_MBYTE
+#define EMITMBC(c) EMIT(c); EMIT(NFA_CONCAT);
+
     if (enc_utf8 || STRCMP(p_enc, "latin1") == 0
 					 || STRCMP(p_enc, "iso-8859-15") == 0)
-#endif
     {
 #ifdef EBCDIC
 # define A_circumflex 0x62
@@ -1203,9 +1195,7 @@ nfa_regatom(void)
     int		got_coll_char;
     char_u	*p;
     char_u	*endp;
-#ifdef FEAT_MBYTE
     char_u	*old_regparse = regparse;
-#endif
     int		extra = 0;
     int		emit_range;
     int		negated;
@@ -1310,7 +1300,7 @@ nfa_regatom(void)
 		siemsg("INTERNAL: Unknown character class char: %d", c);
 		return FAIL;
 	    }
-#ifdef FEAT_MBYTE
+
 	    /* When '.' is followed by a composing char ignore the dot, so that
 	     * the composing char is matched here. */
 	    if (enc_utf8 && c == Magic('.') && utf_iscomposing(peekchr()))
@@ -1319,7 +1309,6 @@ nfa_regatom(void)
 		c = getchr();
 		goto nfa_do_multibyte;
 	    }
-#endif
 	    EMIT(nfa_classcodes[p - classchars]);
 	    if (extra == NFA_ADD_NL)
 	    {
@@ -1827,9 +1816,7 @@ collection:
 			    EMIT(NFA_RANGE);
 			    EMIT(NFA_CONCAT);
 			}
-			else
-#ifdef FEAT_MBYTE
-			     if (has_mbyte && ((*mb_char2len)(startc) > 1
+			else if (has_mbyte && ((*mb_char2len)(startc) > 1
 				    || (*mb_char2len)(endc) > 1))
 			{
 			    /* Emit the characters in the range.
@@ -1842,7 +1829,6 @@ collection:
 			    }
 			}
 			else
-#endif
 			{
 #ifdef EBCDIC
 			    int alpha_only = FALSE;
@@ -1929,7 +1915,6 @@ collection:
 
 	default:
 	    {
-#ifdef FEAT_MBYTE
 		int	plen;
 
 nfa_do_multibyte:
@@ -1961,7 +1946,6 @@ nfa_do_multibyte:
 		    regparse = old_regparse + plen;
 		}
 		else
-#endif
 		{
 		    c = no_Magic(c);
 		    EMIT(c);
@@ -2211,9 +2195,7 @@ nfa_regconcat(void)
 		break;
 
 	    case Magic('Z'):
-#ifdef FEAT_MBYTE
 		regflags |= RF_ICOMBINE;
-#endif
 		skipchr_keepstart();
 		break;
 	    case Magic('c'):
@@ -2996,13 +2978,11 @@ nfa_max_width(nfa_state_T *startstate, i
 	    case NFA_START_COLL:
 	    case NFA_START_NEG_COLL:
 		/* matches some character, including composing chars */
-#ifdef FEAT_MBYTE
 		if (enc_utf8)
 		    len += MB_MAXBYTES;
 		else if (has_mbyte)
 		    len += 2;
 		else
-#endif
 		    ++len;
 		if (state->c != NFA_ANY)
 		{
@@ -3048,11 +3028,9 @@ nfa_max_width(nfa_state_T *startstate, i
 	    case NFA_NUPPER_IC:
 	    case NFA_ANY_COMPOSING:
 		/* possibly non-ascii */
-#ifdef FEAT_MBYTE
 		if (has_mbyte)
 		    len += 3;
 		else
-#endif
 		    ++len;
 		break;
 
@@ -3501,7 +3479,6 @@ post2nfa(int *postfix, int *end, int nfa
 	    break;
 	  }
 
-#ifdef FEAT_MBYTE
 	case NFA_COMPOSING:	/* char with composing char */
 #if 0
 	    /* TODO */
@@ -3511,7 +3488,6 @@ post2nfa(int *postfix, int *end, int nfa
 	    }
 #endif
 	    /* FALLTHROUGH */
-#endif
 
 	case NFA_MOPEN:	/* \( \) Submatch */
 	case NFA_MOPEN1:
@@ -3558,9 +3534,7 @@ post2nfa(int *postfix, int *end, int nfa
 		case NFA_ZOPEN8: mclose = NFA_ZCLOSE8; break;
 		case NFA_ZOPEN9: mclose = NFA_ZCLOSE9; break;
 #endif
-#ifdef FEAT_MBYTE
 		case NFA_COMPOSING: mclose = NFA_END_COMPOSING; break;
-#endif
 		default:
 		    /* NFA_MOPEN, NFA_MOPEN1 .. NFA_MOPEN9 */
 		    mclose = *p + NSUBEXP;
@@ -3596,11 +3570,9 @@ post2nfa(int *postfix, int *end, int nfa
 		goto theend;
 	    patch(e.out, s1);
 
-#ifdef FEAT_MBYTE
 	    if (mopen == NFA_COMPOSING)
 		/* COMPOSING->out1 = END_COMPOSING */
 		patch(list1(&s->out1), s1);
-#endif
 
 	    PUSH(frag(s, list1(&s1->out)));
 	    break;
@@ -5119,10 +5091,8 @@ recursive_regmatch(
 	    if ((int)(rex.input - rex.line) >= state->val)
 	    {
 		rex.input -= state->val;
-#ifdef FEAT_MBYTE
 		if (has_mbyte)
 		    rex.input -= mb_head_off(rex.line, rex.input);
-#endif
 	    }
 	    else
 		rex.input = rex.line;
@@ -5381,11 +5351,7 @@ skip_to_start(int c, colnr_T *colp)
     char_u *s;
 
     /* Used often, do some work to avoid call overhead. */
-    if (!rex.reg_ic
-#ifdef FEAT_MBYTE
-		&& !has_mbyte
-#endif
-		)
+    if (!rex.reg_ic && !has_mbyte)
 	s = vim_strbyte(rex.line + *colp, c);
     else
 	s = cstrchr(rex.line + *colp, c);
@@ -5424,12 +5390,9 @@ find_match_text(colnr_T startcol, int re
 	    len2 += MB_CHAR2LEN(c2);
 	}
 	if (match
-#ifdef FEAT_MBYTE
 		/* check that no composing char follows */
 		&& !(enc_utf8
-			   && utf_iscomposing(PTR2CHAR(rex.line + col + len2)))
-#endif
-		)
+			  && utf_iscomposing(PTR2CHAR(rex.line + col + len2))))
 	{
 	    cleanup_subexpr();
 	    if (REG_MULTI)
@@ -5596,14 +5559,12 @@ nfa_regmatch(
 	int	curc;
 	int	clen;
 
-#ifdef FEAT_MBYTE
 	if (has_mbyte)
 	{
 	    curc = (*mb_ptr2char)(rex.input);
 	    clen = (*mb_ptr2len)(rex.input);
 	}
 	else
-#endif
 	{
 	    curc = *rex.input;
 	    clen = 1;
@@ -5708,12 +5669,11 @@ nfa_regmatch(
 	    {
 	    case NFA_MATCH:
 	      {
-#ifdef FEAT_MBYTE
 		/* If the match ends before a composing characters and
 		 * rex.reg_icombine is not set, that is not really a match. */
 		if (enc_utf8 && !rex.reg_icombine && utf_iscomposing(curc))
 		    break;
-#endif
+
 		nfa_match = TRUE;
 		copy_sub(&submatch->norm, &t->subs.norm);
 #ifdef FEAT_SYN_HL
@@ -6024,7 +5984,6 @@ nfa_regmatch(
 
 		if (curc == NUL)
 		    result = FALSE;
-#ifdef FEAT_MBYTE
 		else if (has_mbyte)
 		{
 		    int this_class;
@@ -6036,7 +5995,6 @@ nfa_regmatch(
 		    else if (reg_prev_class() == this_class)
 			result = FALSE;
 		}
-#endif
 		else if (!vim_iswordc_buf(curc, rex.reg_buf)
 			   || (rex.input > rex.line
 				&& vim_iswordc_buf(rex.input[-1], rex.reg_buf)))
@@ -6052,7 +6010,6 @@ nfa_regmatch(
 		result = TRUE;
 		if (rex.input == rex.line)
 		    result = FALSE;
-#ifdef FEAT_MBYTE
 		else if (has_mbyte)
 		{
 		    int this_class, prev_class;
@@ -6064,7 +6021,6 @@ nfa_regmatch(
 					|| prev_class == 0 || prev_class == 1)
 			result = FALSE;
 		}
-#endif
 		else if (!vim_iswordc_buf(rex.input[-1], rex.reg_buf)
 			|| (rex.input[0] != NUL
 					&& vim_iswordc_buf(curc, rex.reg_buf)))
@@ -6093,7 +6049,6 @@ nfa_regmatch(
 		}
 		break;
 
-#ifdef FEAT_MBYTE
 	    case NFA_COMPOSING:
 	    {
 		int	    mc = curc;
@@ -6169,7 +6124,6 @@ nfa_regmatch(
 		ADD_STATE_IF_MATCH(end);
 		break;
 	    }
-#endif
 
 	    case NFA_NEWL:
 		if (curc == NUL && !rex.reg_line_lbr && REG_MULTI
@@ -6274,13 +6228,11 @@ nfa_regmatch(
 	    case NFA_ANY_COMPOSING:
 		/* On a composing character skip over it.  Otherwise do
 		 * nothing.  Always matches. */
-#ifdef FEAT_MBYTE
 		if (enc_utf8 && utf_iscomposing(curc))
 		{
 		    add_off = clen;
 		}
 		else
-#endif
 		{
 		    add_here = TRUE;
 		    add_off = 0;
@@ -6562,10 +6514,7 @@ nfa_regmatch(
 		    /* Bail out quickly when there can't be a match, avoid the
 		     * overhead of win_linetabsize() on long lines. */
 		    if (op != 1 && col > t->state->val
-#ifdef FEAT_MBYTE
-			    * (has_mbyte ? MB_MAXBYTES : 1)
-#endif
-			    )
+			    * (has_mbyte ? MB_MAXBYTES : 1))
 			break;
 		    result = FALSE;
 		    if (op == 1 && col - 1 > t->state->val && col > 100)
@@ -6676,12 +6625,10 @@ nfa_regmatch(
 
 		if (!result && rex.reg_ic)
 		    result = MB_TOLOWER(c) == MB_TOLOWER(curc);
-#ifdef FEAT_MBYTE
 		/* If rex.reg_icombine is not set only skip over the character
 		 * itself.  When it is set skip over composing characters. */
 		if (result && enc_utf8 && !rex.reg_icombine)
 		    clen = utf_ptr2len(rex.input);
-#endif
 		ADD_STATE_IF_MATCH(t->state);
 		break;
 	      }
@@ -7104,11 +7051,9 @@ nfa_regexec_both(
     else if (prog->regflags & RF_NOICASE)
 	rex.reg_ic = FALSE;
 
-#ifdef FEAT_MBYTE
     /* If pattern contains "\Z" overrule value of rex.reg_icombine */
     if (prog->regflags & RF_ICOMBINE)
 	rex.reg_icombine = TRUE;
-#endif
 
     rex.line = line;
     rex.lnum = 0;    /* relative to line */
@@ -7149,11 +7094,7 @@ nfa_regexec_both(
 
 	/* If match_text is set it contains the full text that must match.
 	 * Nothing else to try. Doesn't handle combining chars well. */
-	if (prog->match_text != NULL
-#ifdef FEAT_MBYTE
-		    && !rex.reg_icombine
-#endif
-		)
+	if (prog->match_text != NULL && !rex.reg_icombine)
 	    return find_match_text(col, prog->regstart, prog->match_text);
     }
 
@@ -7334,9 +7275,7 @@ nfa_regexec_nl(
     rex.reg_buf = curbuf;
     rex.reg_win = NULL;
     rex.reg_ic = rmp->rm_ic;
-#ifdef FEAT_MBYTE
     rex.reg_icombine = FALSE;
-#endif
     rex.reg_maxcol = 0;
     return nfa_regexec_both(line, col, NULL, NULL);
 }
@@ -7385,9 +7324,7 @@ nfa_regexec_multi(
     rex.reg_maxline = rex.reg_buf->b_ml.ml_line_count - lnum;
     rex.reg_line_lbr = FALSE;
     rex.reg_ic = rmp->rmm_ic;
-#ifdef FEAT_MBYTE
     rex.reg_icombine = FALSE;
-#endif
     rex.reg_maxcol = rmp->rmm_maxcol;
 
     return nfa_regexec_both(NULL, col, tm, timed_out);
--- a/src/screen.c
+++ b/src/screen.c
@@ -144,9 +144,7 @@ static void next_search_hl(win_T *win, m
 static int next_search_hl_pos(match_T *shl, linenr_T lnum, posmatch_T *pos, colnr_T mincol);
 #endif
 static void screen_char(unsigned off, int row, int col);
-#ifdef FEAT_MBYTE
 static void screen_char_2(unsigned off, int row, int col);
-#endif
 static void screenclear2(void);
 static void lineclear(unsigned off, int width, int attr);
 static void lineinvalid(unsigned off, int width);
@@ -314,12 +312,10 @@ redraw_asap(int type)
     int		ret = 0;
     schar_T	*screenline;	/* copy from ScreenLines[] */
     sattr_T	*screenattr;	/* copy from ScreenAttrs[] */
-#ifdef FEAT_MBYTE
     int		i;
     u8char_T	*screenlineUC = NULL;	/* copy from ScreenLinesUC[] */
     u8char_T	*screenlineC[MAX_MCO];	/* copy from ScreenLinesC[][] */
     schar_T	*screenline2 = NULL;	/* copy from ScreenLines2[] */
-#endif
 
     redraw_later(type);
     if (msg_scrolled || (State != NORMAL && State != NORMAL_BUSY) || exiting)
@@ -333,7 +329,6 @@ redraw_asap(int type)
 			   (long_u)(rows * cols * sizeof(sattr_T)), FALSE);
     if (screenline == NULL || screenattr == NULL)
 	ret = 2;
-#ifdef FEAT_MBYTE
     if (enc_utf8)
     {
 	screenlineUC = (u8char_T *)lalloc(
@@ -355,7 +350,6 @@ redraw_asap(int type)
 	if (screenline2 == NULL)
 	    ret = 2;
     }
-#endif
 
     if (ret != 2)
     {
@@ -368,7 +362,6 @@ redraw_asap(int type)
 	    mch_memmove(screenattr + r * cols,
 			ScreenAttrs + LineOffset[cmdline_row + r],
 			(size_t)cols * sizeof(sattr_T));
-#ifdef FEAT_MBYTE
 	    if (enc_utf8)
 	    {
 		mch_memmove(screenlineUC + r * cols,
@@ -383,7 +376,6 @@ redraw_asap(int type)
 		mch_memmove(screenline2 + r * cols,
 			    ScreenLines2 + LineOffset[cmdline_row + r],
 			    (size_t)cols * sizeof(schar_T));
-#endif
 	}
 
 	update_screen(0);
@@ -402,7 +394,6 @@ redraw_asap(int type)
 		mch_memmove(ScreenAttrs + off,
 			    screenattr + r * cols,
 			    (size_t)cols * sizeof(sattr_T));
-#ifdef FEAT_MBYTE
 		if (enc_utf8)
 		{
 		    mch_memmove(ScreenLinesUC + off,
@@ -417,7 +408,6 @@ redraw_asap(int type)
 		    mch_memmove(ScreenLines2 + off,
 				screenline2 + r * cols,
 				(size_t)cols * sizeof(schar_T));
-#endif
 		screen_line(cmdline_row + r, 0, cols, cols, FALSE);
 	    }
 	    ret = 4;
@@ -426,7 +416,6 @@ redraw_asap(int type)
 
     vim_free(screenline);
     vim_free(screenattr);
-#ifdef FEAT_MBYTE
     if (enc_utf8)
     {
 	vim_free(screenlineUC);
@@ -435,7 +424,6 @@ redraw_asap(int type)
     }
     if (enc_dbcs == DBCS_JPNU)
 	vim_free(screenline2);
-#endif
 
     /* Show the intro message when appropriate. */
     maybe_intro_message();
@@ -830,9 +818,7 @@ update_screen(int type_arg)
 	     * uses that. */
 	    gui.col = gui_cursor_col;
 	    gui.row = gui_cursor_row;
-# ifdef FEAT_MBYTE
 	    gui.col = mb_fix_col(gui.col, gui.row);
-# endif
 	    gui_update_cursor(FALSE, FALSE);
 	    gui_may_flush();
 	    screen_cur_col = gui.col;
@@ -2154,7 +2140,6 @@ win_update(win_T *wp)
 	int i;
 
 	for (i = 0; i < Rows; ++i)
-# ifdef FEAT_MBYTE
 	    if (enc_utf8)
 		if ((*mb_off2cells)(LineOffset[i] + Columns - 2,
 					   LineOffset[i] + screen_Columns) > 1)
@@ -2162,7 +2147,6 @@ win_update(win_T *wp)
 		else
 		    screen_draw_rectangle(i, Columns - 1, 1, 1, FALSE);
 	    else
-# endif
 		screen_char(LineOffset[i] + Columns - 1, i, Columns - 1);
     }
 #endif
@@ -2454,7 +2438,6 @@ text_to_screenline(win_T *wp, char_u *te
 {
     int		off = (int)(current_ScreenLine - ScreenLines);
 
-#ifdef FEAT_MBYTE
     if (has_mbyte)
     {
 	int	cells;
@@ -2560,7 +2543,6 @@ text_to_screenline(win_T *wp, char_u *te
 	}
     }
     else
-#endif
     {
 	int len = (int)STRLEN(text);
 
@@ -2639,10 +2621,8 @@ fold_line(
     {
 	ScreenLines[off] = cmdwin_type;
 	ScreenAttrs[off] = HL_ATTR(HLF_AT);
-#ifdef FEAT_MBYTE
 	if (enc_utf8)
 	    ScreenLinesUC[off] = 0;
-#endif
 	++col;
     }
 #endif
@@ -2785,7 +2765,6 @@ fold_line(
 #endif
 	    )
     {
-#ifdef FEAT_MBYTE
 	if (enc_utf8)
 	{
 	    if (fill_fold >= 0x80)
@@ -2802,7 +2781,6 @@ fold_line(
 	    col++;
 	}
 	else
-#endif
 	    ScreenLines[off + col++] = fill_fold;
     }
 
@@ -2929,10 +2907,8 @@ copy_text_attr(
     int		i;
 
     mch_memmove(ScreenLines + off, buf, (size_t)len);
-# ifdef FEAT_MBYTE
     if (enc_utf8)
 	vim_memset(ScreenLinesUC + off, 0, sizeof(u8char_T) * (size_t)len);
-# endif
     for (i = 0; i < len; ++i)
 	ScreenAttrs[off + i] = attr;
 }
@@ -3126,13 +3102,11 @@ win_line(
     int		cur_checked_col = 0;	/* checked column for current line */
 #endif
     int		extra_check = 0;	// has extra highlighting
-#ifdef FEAT_MBYTE
     int		multi_attr = 0;		/* attributes desired by multibyte */
     int		mb_l = 1;		/* multi-byte byte length */
     int		mb_c = 0;		/* decoded multi-byte character */
     int		mb_utf8 = FALSE;	/* screen char is UTF-8 char */
     int		u8cc[MAX_MCO];		/* composing UTF-8 chars */
-#endif
 #ifdef FEAT_DIFF
     int		filler_lines;		/* nr of filler lines to be drawn */
     int		filler_todo;		/* nr of filler lines still to do + 1 */
@@ -3555,16 +3529,13 @@ win_line(
 	v = wp->w_leftcol;
     if (v > 0 && !number_only)
     {
-#ifdef FEAT_MBYTE
 	char_u	*prev_ptr = ptr;
-#endif
+
 	while (vcol < v && *ptr != NUL)
 	{
 	    c = win_lbr_chartabsize(wp, line, ptr, (colnr_T)vcol, NULL);
 	    vcol += c;
-#ifdef FEAT_MBYTE
 	    prev_ptr = ptr;
-#endif
 	    MB_PTR_ADV(ptr);
 	}
 
@@ -3592,18 +3563,10 @@ win_line(
 	if (vcol > v)
 	{
 	    vcol -= c;
-#ifdef FEAT_MBYTE
 	    ptr = prev_ptr;
-#else
-	    --ptr;
-#endif
 	    /* If the character fits on the screen, don't need to skip it.
 	     * Except for a TAB. */
-	    if ((
-#ifdef FEAT_MBYTE
-			(*mb_ptr2cells)(ptr) >= c ||
-#endif
-		       *ptr == TAB) && col == 0)
+	    if (( (*mb_ptr2cells)(ptr) >= c || *ptr == TAB) && col == 0)
 	       n_skip = v - vcol;
 	}
 
@@ -3734,11 +3697,9 @@ win_line(
 	    /* Highlight one character for an empty match. */
 	    if (shl->startcol == shl->endcol)
 	    {
-#ifdef FEAT_MBYTE
 		if (has_mbyte && line[shl->endcol] != NUL)
 		    shl->endcol += (*mb_ptr2len)(line + shl->endcol);
 		else
-#endif
 		    ++shl->endcol;
 	    }
 	    if ((long)shl->startcol < v)  /* match at leftcol */
@@ -4133,10 +4094,8 @@ win_line(
 	{
 	    /* handle Visual or match highlighting in this line */
 	    if (vcol == fromcol
-#ifdef FEAT_MBYTE
 		    || (has_mbyte && vcol + 1 == fromcol && n_extra == 0
 			&& (*mb_ptr2cells)(ptr) > 1)
-#endif
 		    || ((int)vcol_prev == fromcol_prev
 			&& vcol_prev < vcol	/* not at margin */
 			&& vcol < tocol))
@@ -4182,12 +4141,10 @@ win_line(
 				&& v >= (long)shl->startcol
 				&& v < (long)shl->endcol)
 			{
-#ifdef FEAT_MBYTE
 			    int tmp_col = v + MB_PTR2LEN(ptr);
 
 			    if (shl->endcol < tmp_col)
 				shl->endcol = tmp_col;
-#endif
 			    shl->attr_cur = shl->attr;
 #ifdef FEAT_CONCEAL
 			    if (cur != NULL && syn_name2id((char_u *)"Conceal")
@@ -4226,12 +4183,10 @@ win_line(
 				{
 				    /* highlight empty match, try again after
 				     * it */
-#ifdef FEAT_MBYTE
 				    if (has_mbyte)
 					shl->endcol += (*mb_ptr2len)(line
 							       + shl->endcol);
 				    else
-#endif
 					++shl->endcol;
 				}
 
@@ -4402,7 +4357,6 @@ win_line(
 	    if (c_extra != NUL || (n_extra == 1 && c_final != NUL))
 	    {
 		c = (n_extra == 1 && c_final != NUL) ? c_final : c_extra;
-#ifdef FEAT_MBYTE
 		mb_c = c;	/* doesn't handle non-utf-8 multi-byte! */
 		if (enc_utf8 && utf_char2len(c) > 1)
 		{
@@ -4412,12 +4366,10 @@ win_line(
 		}
 		else
 		    mb_utf8 = FALSE;
-#endif
 	    }
 	    else
 	    {
 		c = *p_extra;
-#ifdef FEAT_MBYTE
 		if (has_mbyte)
 		{
 		    mb_c = c;
@@ -4473,7 +4425,6 @@ win_line(
 			p_extra += mb_l - 1;
 		    }
 		}
-#endif
 		++p_extra;
 	    }
 	    --n_extra;
@@ -4493,7 +4444,6 @@ win_line(
 #ifdef FEAT_LINEBREAK
 	    c0 = *ptr;
 #endif
-#ifdef FEAT_MBYTE
 	    if (has_mbyte)
 	    {
 		mb_c = c;
@@ -4511,9 +4461,9 @@ win_line(
 			if (mb_c < 0x80)
 			{
 			    c = mb_c;
-# ifdef FEAT_LINEBREAK
+#ifdef FEAT_LINEBREAK
 			    c0 = mb_c;
-# endif
+#endif
 			}
 			mb_utf8 = TRUE;
 
@@ -4690,7 +4640,6 @@ win_line(
 		}
 
 	    }
-#endif
 	    ++ptr;
 
 	    if (extra_check)
@@ -4783,14 +4732,12 @@ win_line(
 			char_u	*prev_ptr, *p;
 			int	len;
 			hlf_T	spell_hlf = HLF_COUNT;
-# ifdef FEAT_MBYTE
 			if (has_mbyte)
 			{
 			    prev_ptr = ptr - mb_l;
 			    v -= mb_l - 1;
 			}
 			else
-# endif
 			    prev_ptr = ptr - 1;
 
 			/* Use nextline[] if possible, it has the start of the
@@ -4862,14 +4809,8 @@ win_line(
 		if (wp->w_p_lbr && c0 == c
 				  && VIM_ISBREAK(c) && !VIM_ISBREAK((int)*ptr))
 		{
-# ifdef FEAT_MBYTE
 		    int mb_off = has_mbyte ? (*mb_head_off)(line, ptr - 1) : 0;
-# endif
-		    char_u *p = ptr - (
-# ifdef FEAT_MBYTE
-				mb_off +
-# endif
-				1);
+		    char_u *p = ptr - (mb_off + 1);
 
 		    /* TODO: is passing p for start of the line OK? */
 		    n_extra = win_lbr_chartabsize(wp, line, p, (colnr_T)vcol,
@@ -4883,11 +4824,7 @@ win_line(
 				       - vcol % (int)wp->w_buffer->b_p_ts - 1;
 # endif
 
-# ifdef FEAT_MBYTE
 		    c_extra = mb_off > 0 ? MB_FILLER_CHAR : ' ';
-# else
-		    c_extra = ' ';
-# endif
 		    c_final = NUL;
 		    if (VIM_ISWHITE(c))
 		    {
@@ -4906,10 +4843,8 @@ win_line(
 		 */
 		if (wp->w_p_list
 			&& (((c == 160
-#ifdef FEAT_MBYTE
-			      || (mb_utf8 && (mb_c == 160 || mb_c == 0x202f))
-#endif
-			     ) && lcs_nbsp)
+			      || (mb_utf8 && (mb_c == 160 || mb_c == 0x202f)))
+				&& lcs_nbsp)
 			|| (c == ' ' && lcs_space && ptr - line <= trailcol)))
 		{
 		    c = (c == ' ') ? lcs_space : lcs_nbsp;
@@ -4919,7 +4854,6 @@ win_line(
 			extra_attr = HL_ATTR(HLF_8);
 			saved_attr2 = char_attr; /* save current attr */
 		    }
-#ifdef FEAT_MBYTE
 		    mb_c = c;
 		    if (enc_utf8 && utf_char2len(c) > 1)
 		    {
@@ -4929,7 +4863,6 @@ win_line(
 		    }
 		    else
 			mb_utf8 = FALSE;
-#endif
 		}
 
 		if (trailcol != MAXCOL && ptr > line + trailcol && c == ' ')
@@ -4941,7 +4874,6 @@ win_line(
 			extra_attr = HL_ATTR(HLF_8);
 			saved_attr2 = char_attr; /* save current attr */
 		    }
-#ifdef FEAT_MBYTE
 		    mb_c = c;
 		    if (enc_utf8 && utf_char2len(c) > 1)
 		    {
@@ -4951,7 +4883,6 @@ win_line(
 		    }
 		    else
 			mb_utf8 = FALSE;
-#endif
 		}
 	    }
 
@@ -5012,11 +4943,9 @@ win_line(
 			/* if n_extra > 0, it gives the number of chars, to
 			 * use for a tab, else we need to calculate the width
 			 * for a tab */
-#ifdef FEAT_MBYTE
 			len = (tab_len * mb_char2len(lcs_tab2));
 			if (n_extra > 0)
 			    len += n_extra - tab_len;
-#endif
 			c = lcs_tab1;
 			p = alloc((unsigned)(len + 1));
 			vim_memset(p, ' ', len);
@@ -5030,14 +4959,10 @@ win_line(
 				tab_len = i;
 				break;
 			    }
-#ifdef FEAT_MBYTE
 			    mb_char2bytes(lcs_tab2, p);
 			    p += mb_char2len(lcs_tab2);
 			    n_extra += mb_char2len(lcs_tab2)
 						 - (saved_nextra > 0 ? 1 : 0);
-#else
-			    p[i] = lcs_tab2;
-#endif
 			}
 			p_extra = p_extra_free;
 #ifdef FEAT_CONCEAL
@@ -5068,9 +4993,7 @@ win_line(
 			    tab_len += vc_saved;
 		    }
 #endif
-#ifdef FEAT_MBYTE
 		    mb_utf8 = FALSE;	/* don't draw as UTF-8 */
-#endif
 		    if (wp->w_p_list)
 		    {
 			c = (n_extra == 0 && lcs_tab3) ? lcs_tab3 : lcs_tab1;
@@ -5084,7 +5007,6 @@ win_line(
 			n_attr = tab_len + 1;
 			extra_attr = HL_ATTR(HLF_8);
 			saved_attr2 = char_attr; /* save current attr */
-#ifdef FEAT_MBYTE
 			mb_c = c;
 			if (enc_utf8 && utf_char2len(c) > 1)
 			{
@@ -5092,7 +5014,6 @@ win_line(
 			    u8cc[0] = 0;
 			    c = 0xc0;
 			}
-#endif
 		    }
 		    else
 		    {
@@ -5160,7 +5081,6 @@ win_line(
 			extra_attr = HL_ATTR(HLF_AT);
 			n_attr = 1;
 		    }
-#ifdef FEAT_MBYTE
 		    mb_c = c;
 		    if (enc_utf8 && utf_char2len(c) > 1)
 		    {
@@ -5170,7 +5090,6 @@ win_line(
 		    }
 		    else
 			mb_utf8 = FALSE;	/* don't draw as UTF-8 */
-#endif
 		}
 		else if (c != NUL)
 		{
@@ -5208,9 +5127,7 @@ win_line(
 			extra_attr = HL_ATTR(HLF_8);
 			saved_attr2 = char_attr; /* save current attr */
 		    }
-#ifdef FEAT_MBYTE
 		    mb_utf8 = FALSE;	/* don't draw as UTF-8 */
-#endif
 		}
 #ifdef FEAT_VIRTUALEDIT
 		else if (VIsual_active
@@ -5339,7 +5256,6 @@ win_line(
 		    is_concealing = TRUE;
 		    n_skip = 1;
 		}
-# ifdef FEAT_MBYTE
 		mb_c = c;
 		if (enc_utf8 && utf_char2len(c) > 1)
 		{
@@ -5349,7 +5265,6 @@ win_line(
 		}
 		else
 		    mb_utf8 = FALSE;	/* don't draw as UTF-8 */
-# endif
 	    }
 	    else
 	    {
@@ -5438,7 +5353,6 @@ win_line(
 	{
 	    c = lcs_prec;
 	    lcs_prec_todo = NUL;
-#ifdef FEAT_MBYTE
 	    if (has_mbyte && (*mb_char2cells)(mb_c) > 1)
 	    {
 		/* Double-width character being overwritten by the "precedes"
@@ -5458,7 +5372,6 @@ win_line(
 	    }
 	    else
 		mb_utf8 = FALSE;	/* don't draw as UTF-8 */
-#endif
 	    if (!attr_pri)
 	    {
 		saved_attr3 = char_attr; /* save current attr */
@@ -5554,10 +5467,8 @@ win_line(
 		{
 		    /* Add a blank character to highlight. */
 		    ScreenLines[off] = ' ';
-#ifdef FEAT_MBYTE
 		    if (enc_utf8)
 			ScreenLinesUC[off] = 0;
-#endif
 		}
 #ifdef FEAT_SEARCH_EXTRA
 		if (area_attr == 0)
@@ -5657,10 +5568,8 @@ win_line(
 		while (col < wp->w_width)
 		{
 		    ScreenLines[off] = ' ';
-#ifdef FEAT_MBYTE
 		    if (enc_utf8)
 			ScreenLinesUC[off] = 0;
-#endif
 		    ++col;
 		    if (draw_color_col)
 			draw_color_col = advance_color_col(VCOL_HLC,
@@ -5719,7 +5628,6 @@ win_line(
 	{
 	    c = lcs_ext;
 	    char_attr = HL_ATTR(HLF_AT);
-#ifdef FEAT_MBYTE
 	    mb_c = c;
 	    if (enc_utf8 && utf_char2len(c) > 1)
 	    {
@@ -5729,7 +5637,6 @@ win_line(
 	    }
 	    else
 		mb_utf8 = FALSE;
-#endif
 	}
 
 #ifdef FEAT_SYN_HL
@@ -5769,7 +5676,7 @@ win_line(
 	    /*
 	     * Store the character.
 	     */
-#if defined(FEAT_RIGHTLEFT) && defined(FEAT_MBYTE)
+#if defined(FEAT_RIGHTLEFT)
 	    if (has_mbyte && wp->w_p_rl && (*mb_char2cells)(mb_c) > 1)
 	    {
 		/* A double-wide character is: put first halve in left cell. */
@@ -5778,7 +5685,6 @@ win_line(
 	    }
 #endif
 	    ScreenLines[off] = c;
-#ifdef FEAT_MBYTE
 	    if (enc_dbcs == DBCS_JPNU)
 	    {
 		if ((mb_c & 0xff00) == 0x8e00)
@@ -5810,10 +5716,8 @@ win_line(
 		multi_attr = 0;
 	    }
 	    else
-#endif
 		ScreenAttrs[off] = char_attr;
 
-#ifdef FEAT_MBYTE
 	    if (has_mbyte && (*mb_char2cells)(mb_c) > 1)
 	    {
 		/* Need to fill two screen columns. */
@@ -5844,7 +5748,6 @@ win_line(
 		}
 #endif
 	    }
-#endif
 #ifdef FEAT_RIGHTLEFT
 	    if (wp->w_p_rl)
 	    {
@@ -5900,24 +5803,22 @@ win_line(
 		}
 
 
-# ifdef FEAT_MBYTE
 		if (has_mbyte && (*mb_char2cells)(mb_c) > 1)
 		{
 		    /* Need to fill two screen columns. */
-#  ifdef FEAT_RIGHTLEFT
+# ifdef FEAT_RIGHTLEFT
 		    if (wp->w_p_rl)
 		    {
 			--boguscols;
 			--col;
 		    }
 		    else
-#  endif
+# endif
 		    {
 			++boguscols;
 			++col;
 		    }
 		}
-# endif
 
 # ifdef FEAT_RIGHTLEFT
 		if (wp->w_p_rl)
@@ -6050,7 +5951,6 @@ win_line(
 #ifdef FEAT_GUI
 			 && !gui.in_use
 #endif
-#ifdef FEAT_MBYTE
 			 && !(has_mbyte
 			     && ((*mb_off2cells)(LineOffset[screen_row],
 				     LineOffset[screen_row] + screen_Columns)
@@ -6058,9 +5958,7 @@ win_line(
 				 || (*mb_off2cells)(LineOffset[screen_row - 1]
 							+ (int)Columns - 2,
 				     LineOffset[screen_row] + screen_Columns)
-									== 2))
-#endif
-		   )
+									== 2)))
 		{
 		    /* First make sure we are at the end of the screen line,
 		     * then output the same character again to let the
@@ -6071,14 +5969,12 @@ win_line(
 						      + (unsigned)Columns - 1,
 					  screen_row - 1, (int)(Columns - 1));
 
-#ifdef FEAT_MBYTE
 		    /* When there is a multi-byte character, just output a
 		     * space to keep it simple. */
 		    if (has_mbyte && MB_BYTE2LEN(ScreenLines[LineOffset[
 					screen_row - 1] + (Columns - 1)]) > 1)
 			out_char(' ');
 		    else
-#endif
 			out_char(ScreenLines[LineOffset[screen_row - 1]
 							    + (Columns - 1)]);
 		    /* force a redraw of the first char on the next line */
@@ -6140,7 +6036,6 @@ win_line(
     return row;
 }
 
-#ifdef FEAT_MBYTE
 /*
  * Return if the composing characters at "off_from" and "off_to" differ.
  * Only to be used when ScreenLinesUC[off_from] != 0.
@@ -6159,7 +6054,6 @@ comp_char_differs(int off_from, int off_
     }
     return FALSE;
 }
-#endif
 
 /*
  * Check whether the given character needs redrawing:
@@ -6174,8 +6068,6 @@ char_needs_redraw(int off_from, int off_
     if (cols > 0
 	    && ((ScreenLines[off_from] != ScreenLines[off_to]
 		    || ScreenAttrs[off_from] != ScreenAttrs[off_to])
-
-#ifdef FEAT_MBYTE
 		|| (enc_dbcs != 0
 		    && MB_BYTE2LEN(ScreenLines[off_from]) > 1
 		    && (enc_dbcs == DBCS_JPNU && ScreenLines[off_from] == 0x8e
@@ -6188,9 +6080,7 @@ char_needs_redraw(int off_from, int off_
 			    && comp_char_differs(off_from, off_to))
 			|| ((*mb_off2cells)(off_from, off_from + cols) > 1
 			    && ScreenLines[off_from + 1]
-						  != ScreenLines[off_to + 1])))
-#endif
-	       ))
+						!= ScreenLines[off_to + 1])))))
 	return TRUE;
     return FALSE;
 }
@@ -6227,10 +6117,8 @@ screen_line(
 {
     unsigned	    off_from;
     unsigned	    off_to;
-#ifdef FEAT_MBYTE
     unsigned	    max_off_from;
     unsigned	    max_off_to;
-#endif
     int		    col = 0;
     int		    hl;
     int		    force = FALSE;	/* force update rest of the line */
@@ -6240,14 +6128,10 @@ screen_line(
 #endif
 				;
     int		    redraw_next;	/* redraw_this for next character */
-#ifdef FEAT_MBYTE
     int		    clear_next = FALSE;
     int		    char_cells;		/* 1: normal char */
 					/* 2: occupies two display cells */
 # define CHAR_CELLS char_cells
-#else
-# define CHAR_CELLS 1
-#endif
 
     /* Check for illegal row and col, just in case. */
     if (row >= Rows)
@@ -6261,10 +6145,8 @@ screen_line(
 
     off_from = (unsigned)(current_ScreenLine - ScreenLines);
     off_to = LineOffset[row] + coloff;
-#ifdef FEAT_MBYTE
     max_off_from = off_from + screen_Columns;
     max_off_to = LineOffset[row] + screen_Columns;
-#endif
 
 #ifdef FEAT_RIGHTLEFT
     if (rlflag)
@@ -6274,10 +6156,7 @@ screen_line(
 	{
 	    while (col <= endcol && ScreenLines[off_to] == ' '
 		    && ScreenAttrs[off_to] == 0
-# ifdef FEAT_MBYTE
-				  && (!enc_utf8 || ScreenLinesUC[off_to] == 0)
-# endif
-						  )
+				  && (!enc_utf8 || ScreenLinesUC[off_to] == 0))
 	    {
 		++off_to;
 		++col;
@@ -6297,12 +6176,10 @@ screen_line(
 
     while (col < endcol)
     {
-#ifdef FEAT_MBYTE
 	if (has_mbyte && (col + 1 < endcol))
 	    char_cells = (*mb_off2cells)(off_from, max_off_from);
 	else
 	    char_cells = 1;
-#endif
 
 	redraw_this = redraw_next;
 	redraw_next = force || char_needs_redraw(off_from + CHAR_CELLS,
@@ -6367,7 +6244,6 @@ screen_line(
 		else
 		    screen_attr = 0;	    /* highlighting has stopped */
 	    }
-#ifdef FEAT_MBYTE
 	    if (enc_dbcs != 0)
 	    {
 		/* Check if overwriting a double-byte with a single-byte or
@@ -6410,10 +6286,8 @@ screen_line(
 			    && (*mb_off2cells)(off_to, max_off_to) == 1
 			    && (*mb_off2cells)(off_to + 1, max_off_to) > 1)))
 		clear_next = TRUE;
-#endif
 
 	    ScreenLines[off_to] = ScreenLines[off_from];
-#ifdef FEAT_MBYTE
 	    if (enc_utf8)
 	    {
 		ScreenLinesUC[off_to] = ScreenLinesUC[off_from];
@@ -6427,7 +6301,6 @@ screen_line(
 	    }
 	    if (char_cells == 2)
 		ScreenLines[off_to + 1] = ScreenLines[off_from + 1];
-#endif
 
 #if defined(FEAT_GUI) || defined(UNIX)
 	    /* The bold trick makes a single column of pixels appear in the
@@ -6454,7 +6327,7 @@ screen_line(
 	    }
 #endif
 	    ScreenAttrs[off_to] = ScreenAttrs[off_from];
-#ifdef FEAT_MBYTE
+
 	    /* For simplicity set the attributes of second half of a
 	     * double-wide character equal to the first half. */
 	    if (char_cells == 2)
@@ -6463,7 +6336,6 @@ screen_line(
 	    if (enc_dbcs != 0 && char_cells == 2)
 		screen_char_2(off_to, row, col + coloff);
 	    else
-#endif
 		screen_char(off_to, row, col + coloff);
 	}
 	else if (  p_wiv
@@ -6489,7 +6361,6 @@ screen_line(
 	col += CHAR_CELLS;
     }
 
-#ifdef FEAT_MBYTE
     if (clear_next)
     {
 	/* Clear the second half of a double-wide character of which the left
@@ -6499,7 +6370,6 @@ screen_line(
 	    ScreenLinesUC[off_to] = 0;
 	screen_char(off_to, row, col + coloff);
     }
-#endif
 
     if (clear_width > 0
 #ifdef FEAT_RIGHTLEFT
@@ -6514,10 +6384,7 @@ screen_line(
 	/* blank out the rest of the line */
 	while (col < clear_width && ScreenLines[off_to] == ' '
 						  && ScreenAttrs[off_to] == 0
-#ifdef FEAT_MBYTE
-				  && (!enc_utf8 || ScreenLinesUC[off_to] == 0)
-#endif
-						  )
+				  && (!enc_utf8 || ScreenLinesUC[off_to] == 0))
 	{
 	    ++off_to;
 	    ++col;
@@ -6538,7 +6405,7 @@ screen_line(
 		if (hl > HL_ALL || (hl & HL_BOLD))
 		{
 		    int prev_cells = 1;
-# ifdef FEAT_MBYTE
+
 		    if (enc_utf8)
 			/* for utf-8, ScreenLines[char_offset + 1] == 0 means
 			 * that its width is 2. */
@@ -6561,7 +6428,6 @@ screen_line(
 			screen_char_2(off_to - prev_cells, row,
 						   col + coloff - prev_cells);
 		    else
-# endif
 			screen_char(off_to - prev_cells, row,
 						   col + coloff - prev_cells);
 		}
@@ -6583,15 +6449,12 @@ screen_line(
 
 	    c = fillchar_vsep(&hl);
 	    if (ScreenLines[off_to] != (schar_T)c
-#ifdef FEAT_MBYTE
 		    || (enc_utf8 && (int)ScreenLinesUC[off_to]
 						       != (c >= 0x80 ? c : 0))
-#endif
 		    || ScreenAttrs[off_to] != hl)
 	    {
 		ScreenLines[off_to] = c;
 		ScreenAttrs[off_to] = hl;
-#ifdef FEAT_MBYTE
 		if (enc_utf8)
 		{
 		    if (c >= 0x80)
@@ -6602,7 +6465,6 @@ screen_line(
 		    else
 			ScreenLinesUC[off_to] = 0;
 		}
-#endif
 		screen_char(off_to, row, col + coloff);
 	    }
 	}
@@ -6808,18 +6670,14 @@ win_redr_status_matches(
 #ifdef FEAT_MENU
     int		emenu;
 #endif
-#if defined(FEAT_MBYTE) || defined(FEAT_MENU)
     int		l;
-#endif
 
     if (matches == NULL)	/* interrupted completion? */
 	return;
 
-#ifdef FEAT_MBYTE
     if (has_mbyte)
 	buf = alloc((unsigned)Columns * MB_MAXBYTES + 1);
     else
-#endif
 	buf = alloc((unsigned)Columns + 1);
     if (buf == NULL)
 	return;
@@ -6912,7 +6770,6 @@ win_redr_status_matches(
 	{
 	    s += skip_status_match_char(xp, s);
 	    clen += ptr2cells(s);
-#ifdef FEAT_MBYTE
 	    if (has_mbyte && (l = (*mb_ptr2len)(s)) > 1)
 	    {
 		STRNCPY(buf + len, s, l);
@@ -6920,7 +6777,6 @@ win_redr_status_matches(
 		len += l;
 	    }
 	    else
-#endif
 	    {
 		STRCPY(buf + len, transchar_byte(*s));
 		len += (int)STRLEN(buf + len);
@@ -7095,37 +6951,33 @@ win_redr_status(win_T *wp, int ignore_pu
 	    p = (char_u *)"<";		/* No room for file name! */
 	    len = 1;
 	}
-	else
-#ifdef FEAT_MBYTE
-	    if (has_mbyte)
-	    {
-		int	clen = 0, i;
-
-		/* Count total number of display cells. */
-		clen = mb_string2cells(p, -1);
-
-		/* Find first character that will fit.
-		 * Going from start to end is much faster for DBCS. */
-		for (i = 0; p[i] != NUL && clen >= this_ru_col - 1;
-					      i += (*mb_ptr2len)(p + i))
-		    clen -= (*mb_ptr2cells)(p + i);
-		len = clen;
-		if (i > 0)
-		{
-		    p = p + i - 1;
-		    *p = '<';
-		    ++len;
-		}
-
-	    }
-	    else
-#endif
-	    if (len > this_ru_col - 1)
-	    {
-		p += len - (this_ru_col - 1);
+	else if (has_mbyte)
+	{
+	    int	clen = 0, i;
+
+	    /* Count total number of display cells. */
+	    clen = mb_string2cells(p, -1);
+
+	    /* Find first character that will fit.
+	     * Going from start to end is much faster for DBCS. */
+	    for (i = 0; p[i] != NUL && clen >= this_ru_col - 1;
+		    i += (*mb_ptr2len)(p + i))
+		clen -= (*mb_ptr2cells)(p + i);
+	    len = clen;
+	    if (i > 0)
+	    {
+		p = p + i - 1;
 		*p = '<';
-		len = this_ru_col - 1;
-	    }
+		++len;
+	    }
+
+	}
+	else if (len > this_ru_col - 1)
+	{
+	    p += len - (this_ru_col - 1);
+	    *p = '<';
+	    len = this_ru_col - 1;
+	}
 
 	row = W_WINROW(wp) + wp->w_height;
 	screen_puts(p, row, wp->w_wincol, attr);
@@ -7397,11 +7249,7 @@ win_redr_custom(
     len = (int)STRLEN(buf);
     while (width < maxwidth && len < (int)sizeof(buf) - 1)
     {
-#ifdef FEAT_MBYTE
 	len += (*mb_char2bytes)(fillchar, buf + len);
-#else
-	buf[len++] = fillchar;
-#endif
 	++width;
     }
     buf[len] = NUL;
@@ -7470,11 +7318,9 @@ screen_putchar(int c, int row, int col, 
 {
     char_u	buf[MB_MAXBYTES + 1];
 
-#ifdef FEAT_MBYTE
     if (has_mbyte)
 	buf[(*mb_char2bytes)(c, buf)] = NUL;
     else
-#endif
     {
 	buf[0] = c;
 	buf[1] = NUL;
@@ -7499,7 +7345,6 @@ screen_getbytes(int row, int col, char_u
 	bytes[0] = ScreenLines[off];
 	bytes[1] = NUL;
 
-#ifdef FEAT_MBYTE
 	if (enc_utf8 && ScreenLinesUC[off] != 0)
 	    bytes[utfc_char2bytes(off, bytes)] = NUL;
 	else if (enc_dbcs == DBCS_JPNU && ScreenLines[off] == 0x8e)
@@ -7513,11 +7358,9 @@ screen_getbytes(int row, int col, char_u
 	    bytes[1] = ScreenLines[off + 1];
 	    bytes[2] = NUL;
 	}
-#endif
-    }
-}
-
-#ifdef FEAT_MBYTE
+    }
+}
+
 /*
  * Return TRUE if composing characters for screen posn "off" differs from
  * composing characters in "u8cc".
@@ -7537,7 +7380,6 @@ screen_comp_differs(int off, int *u8cc)
     }
     return FALSE;
 }
-#endif
 
 /*
  * Put string '*text' on the screen at position 'row' and 'col', with
@@ -7571,36 +7413,31 @@ screen_puts_len(
     char_u	*ptr = text;
     int		len = textlen;
     int		c;
-#ifdef FEAT_MBYTE
     unsigned	max_off;
     int		mbyte_blen = 1;
     int		mbyte_cells = 1;
     int		u8c = 0;
     int		u8cc[MAX_MCO];
     int		clear_next_cell = FALSE;
-# ifdef FEAT_ARABIC
+#ifdef FEAT_ARABIC
     int		prev_c = 0;		/* previous Arabic character */
     int		pc, nc, nc1;
     int		pcc[MAX_MCO];
-# endif
-#endif
-#if defined(FEAT_MBYTE) || defined(FEAT_GUI) || defined(UNIX)
+#endif
     int		force_redraw_this;
     int		force_redraw_next = FALSE;
-#endif
     int		need_redraw;
 
     if (ScreenLines == NULL || row >= screen_Rows)	/* safety check */
 	return;
     off = LineOffset[row] + col;
 
-#ifdef FEAT_MBYTE
     /* When drawing over the right halve of a double-wide char clear out the
      * left halve.  Only needed in a terminal. */
     if (has_mbyte && col > 0 && col < screen_Columns
-# ifdef FEAT_GUI
+#ifdef FEAT_GUI
 	    && !gui.in_use
-# endif
+#endif
 	    && mb_fix_col(col, row) != col)
     {
 	ScreenLines[off - 1] = ' ';
@@ -7615,17 +7452,13 @@ screen_puts_len(
 	/* force the cell at "col" to be redrawn */
 	force_redraw_next = TRUE;
     }
-#endif
-
-#ifdef FEAT_MBYTE
+
     max_off = LineOffset[row] + screen_Columns;
-#endif
     while (col < screen_Columns
 	    && (len < 0 || (int)(ptr - text) < len)
 	    && *ptr != NUL)
     {
 	c = *ptr;
-#ifdef FEAT_MBYTE
 	/* check if this is the first byte of a multibyte */
 	if (has_mbyte)
 	{
@@ -7645,7 +7478,7 @@ screen_puts_len(
 		else
 		    u8c = utfc_ptr2char(ptr, u8cc);
 		mbyte_cells = utf_char2cells(u8c);
-# ifdef UNICODE16
+#ifdef UNICODE16
 		/* Non-BMP character: display as ? or fullwidth ?. */
 		if (u8c >= 0x10000)
 		{
@@ -7653,8 +7486,8 @@ screen_puts_len(
 		    if (attr == 0)
 			attr = HL_ATTR(HLF_8);
 		}
-# endif
-# ifdef FEAT_ARABIC
+#endif
+#ifdef FEAT_ARABIC
 		if (p_arshape && !p_tbidi && ARABIC_CHAR(u8c))
 		{
 		    /* Do Arabic shaping. */
@@ -7676,7 +7509,7 @@ screen_puts_len(
 		}
 		else
 		    prev_c = u8c;
-# endif
+#endif
 		if (col + mbyte_cells > screen_Columns)
 		{
 		    /* Only 1 cell left, but character requires 2 cells:
@@ -7686,15 +7519,11 @@ screen_puts_len(
 		}
 	    }
 	}
-#endif
-
-#if defined(FEAT_MBYTE) || defined(FEAT_GUI) || defined(UNIX)
+
 	force_redraw_this = force_redraw_next;
 	force_redraw_next = FALSE;
-#endif
 
 	need_redraw = ScreenLines[off] != c
-#ifdef FEAT_MBYTE
 		|| (mbyte_cells == 2
 		    && ScreenLines[off + 1] != (enc_dbcs ? ptr[1] : 0))
 		|| (enc_dbcs == DBCS_JPNU
@@ -7705,15 +7534,10 @@ screen_puts_len(
 				(u8char_T)(c < 0x80 && u8cc[0] == 0 ? 0 : u8c)
 			|| (ScreenLinesUC[off] != 0
 					  && screen_comp_differs(off, u8cc))))
-#endif
 		|| ScreenAttrs[off] != attr
 		|| exmode_active;
 
-	if (need_redraw
-#if defined(FEAT_MBYTE) || defined(FEAT_GUI) || defined(UNIX)
-		|| force_redraw_this
-#endif
-		)
+	if (need_redraw || force_redraw_this)
 	{
 #if defined(FEAT_GUI) || defined(UNIX)
 	    /* The bold trick makes a single row of pixels appear in the next
@@ -7740,7 +7564,6 @@ screen_puts_len(
 		    force_redraw_next = TRUE;
 	    }
 #endif
-#ifdef FEAT_MBYTE
 	    /* When at the end of the text and overwriting a two-cell
 	     * character with a one-cell character, need to clear the next
 	     * cell.  Also when overwriting the left halve of a two-cell char
@@ -7765,10 +7588,8 @@ screen_puts_len(
 			    && (*mb_off2cells)(off, max_off) == 1
 			    && (*mb_off2cells)(off + 1, max_off) > 1)))
 		ScreenLines[off + mbyte_blen] = 0;
-#endif
 	    ScreenLines[off] = c;
 	    ScreenAttrs[off] = attr;
-#ifdef FEAT_MBYTE
 	    if (enc_utf8)
 	    {
 		if (c < 0x80 && u8cc[0] == 0)
@@ -7804,10 +7625,8 @@ screen_puts_len(
 		screen_char(off, row, col);
 	    }
 	    else
-#endif
 		screen_char(off, row, col);
 	}
-#ifdef FEAT_MBYTE
 	if (has_mbyte)
 	{
 	    off += mbyte_cells;
@@ -7821,7 +7640,6 @@ screen_puts_len(
 	    }
 	}
 	else
-#endif
 	{
 	    ++off;
 	    ++col;
@@ -7829,19 +7647,15 @@ screen_puts_len(
 	}
     }
 
-#if defined(FEAT_MBYTE) || defined(FEAT_GUI) || defined(UNIX)
     /* If we detected the next character needs to be redrawn, but the text
      * doesn't extend up to there, update the character here. */
     if (force_redraw_next && col < screen_Columns)
     {
-# ifdef FEAT_MBYTE
 	if (enc_dbcs != 0 && dbcs_off2cells(off, max_off) > 1)
 	    screen_char_2(off, row, col);
 	else
-# endif
 	    screen_char(off, row, col);
     }
-#endif
 }
 
 #ifdef FEAT_SEARCH_EXTRA
@@ -8063,11 +7877,9 @@ next_search_hl(
 		shl->lnum = 0;
 		break;
 	    }
-#ifdef FEAT_MBYTE
 	    if (has_mbyte)
 		matchcol += mb_ptr2len(ml);
 	    else
-#endif
 		++matchcol;
 	}
 	else
@@ -8515,7 +8327,6 @@ screen_char(unsigned off, int row, int c
     if (screen_attr != attr)
 	screen_start_highlight(attr);
 
-#ifdef FEAT_MBYTE
     if (enc_utf8 && ScreenLinesUC[off] != 0)
     {
 	char_u	    buf[MB_MAXBYTES + 1];
@@ -8523,9 +8334,9 @@ screen_char(unsigned off, int row, int c
 	if (utf_ambiguous_width(ScreenLinesUC[off]))
 	{
 	    if (*p_ambw == 'd'
-# ifdef FEAT_GUI
+#ifdef FEAT_GUI
 		    && !gui.in_use
-# endif
+#endif
 		    )
 	    {
 		/* Clear the two screen cells. If the character is actually
@@ -8545,24 +8356,17 @@ screen_char(unsigned off, int row, int c
 	out_str(buf);
     }
     else
-#endif
-    {
-#ifdef FEAT_MBYTE
+    {
 	out_flush_check();
-#endif
 	out_char(ScreenLines[off]);
-#ifdef FEAT_MBYTE
 	/* double-byte character in single-width cell */
 	if (enc_dbcs == DBCS_JPNU && ScreenLines[off] == 0x8e)
 	    out_char(ScreenLines2[off]);
-#endif
     }
 
     screen_cur_col++;
 }
 
-#ifdef FEAT_MBYTE
-
 /*
  * Used for enc_dbcs only: Put one double-wide character at ScreenLines["off"]
  * on the screen at position 'row' and 'col'.
@@ -8590,7 +8394,6 @@ screen_char_2(unsigned off, int row, int
     out_char(ScreenLines[off + 1]);
     ++screen_cur_col;
 }
-#endif
 
 /*
  * Draw a rectangle of the screen, inverted when "invert" is TRUE.
@@ -8606,9 +8409,7 @@ screen_draw_rectangle(
 {
     int		r, c;
     int		off;
-#ifdef FEAT_MBYTE
     int		max_off;
-#endif
 
     /* Can't use ScreenLines unless initialized */
     if (ScreenLines == NULL)
@@ -8619,25 +8420,19 @@ screen_draw_rectangle(
     for (r = row; r < row + height; ++r)
     {
 	off = LineOffset[r];
-#ifdef FEAT_MBYTE
 	max_off = off + screen_Columns;
-#endif
 	for (c = col; c < col + width; ++c)
 	{
-#ifdef FEAT_MBYTE
 	    if (enc_dbcs != 0 && dbcs_off2cells(off + c, max_off) > 1)
 	    {
 		screen_char_2(off + c, r, c);
 		++c;
 	    }
 	    else
-#endif
 	    {
 		screen_char(off + c, r, c);
-#ifdef FEAT_MBYTE
 		if (utf_off2cells(off + c, max_off) > 1)
 		    ++c;
-#endif
 	    }
 	}
     }
@@ -8675,10 +8470,8 @@ space_to_screenline(int off, int attr)
 {
     ScreenLines[off] = ' ';
     ScreenAttrs[off] = attr;
-# ifdef FEAT_MBYTE
     if (enc_utf8)
 	ScreenLinesUC[off] = 0;
-# endif
 }
 
 /*
@@ -8724,11 +8517,10 @@ screen_fill(
 	    !IS_CTERM);
     for (row = start_row; row < end_row; ++row)
     {
-#ifdef FEAT_MBYTE
 	if (has_mbyte
-# ifdef FEAT_GUI
+#ifdef FEAT_GUI
 		&& !gui.in_use
-# endif
+#endif
 	   )
 	{
 	    /* When drawing over the right halve of a double-wide char clear
@@ -8740,7 +8532,6 @@ screen_fill(
 	    if (end_col < screen_Columns && mb_fix_col(end_col, row) != end_col)
 		screen_puts_len((char_u *)" ", 1, row, end_col, 0);
 	}
-#endif
 	/*
 	 * Try to use delete-line termcap code, when no attributes or in a
 	 * "normal" terminal, where a bold/italic space is just a
@@ -8766,13 +8557,11 @@ screen_fill(
 	    end_off = LineOffset[row] + end_col;
 
 	    /* skip blanks (used often, keep it fast!) */
-#ifdef FEAT_MBYTE
 	    if (enc_utf8)
 		while (off < end_off && ScreenLines[off] == ' '
 			  && ScreenAttrs[off] == 0 && ScreenLinesUC[off] == 0)
 		    ++off;
 	    else
-#endif
 		while (off < end_off && ScreenLines[off] == ' '
 						     && ScreenAttrs[off] == 0)
 		    ++off;
@@ -8798,10 +8587,8 @@ screen_fill(
 	for (col = start_col; col < end_col; ++col)
 	{
 	    if (ScreenLines[off] != c
-#ifdef FEAT_MBYTE
 		    || (enc_utf8 && (int)ScreenLinesUC[off]
 						       != (c >= 0x80 ? c : 0))
-#endif
 		    || ScreenAttrs[off] != attr
 #if defined(FEAT_GUI) || defined(UNIX)
 		    || force_next
@@ -8834,7 +8621,6 @@ screen_fill(
 		}
 #endif
 		ScreenLines[off] = c;
-#ifdef FEAT_MBYTE
 		if (enc_utf8)
 		{
 		    if (c >= 0x80)
@@ -8845,7 +8631,6 @@ screen_fill(
 		    else
 			ScreenLinesUC[off] = 0;
 		}
-#endif
 		ScreenAttrs[off] = attr;
 		if (!did_delete || c != ' ')
 		    screen_char(off, row, col);
@@ -8925,12 +8710,10 @@ screenalloc(int doclear)
     int		    outofmem = FALSE;
     int		    len;
     schar_T	    *new_ScreenLines;
-#ifdef FEAT_MBYTE
     u8char_T	    *new_ScreenLinesUC = NULL;
     u8char_T	    *new_ScreenLinesC[MAX_MCO];
     schar_T	    *new_ScreenLines2 = NULL;
     int		    i;
-#endif
     sattr_T	    *new_ScreenAttrs;
     unsigned	    *new_LineOffset;
     char_u	    *new_LineWraps;
@@ -8949,12 +8732,9 @@ retry:
     if ((ScreenLines != NULL
 		&& Rows == screen_Rows
 		&& Columns == screen_Columns
-#ifdef FEAT_MBYTE
 		&& enc_utf8 == (ScreenLinesUC != NULL)
 		&& (enc_dbcs == DBCS_JPNU) == (ScreenLines2 != NULL)
-		&& p_mco == Screen_mco
-#endif
-		)
+		&& p_mco == Screen_mco)
 	    || Rows == 0
 	    || Columns == 0
 	    || (!full_screen && ScreenLines == NULL))
@@ -8997,7 +8777,6 @@ retry:
 
     new_ScreenLines = (schar_T *)lalloc((long_u)(
 			      (Rows + 1) * Columns * sizeof(schar_T)), FALSE);
-#ifdef FEAT_MBYTE
     vim_memset(new_ScreenLinesC, 0, sizeof(u8char_T *) * MAX_MCO);
     if (enc_utf8)
     {
@@ -9010,7 +8789,6 @@ retry:
     if (enc_dbcs == DBCS_JPNU)
 	new_ScreenLines2 = (schar_T *)lalloc((long_u)(
 			     (Rows + 1) * Columns * sizeof(schar_T)), FALSE);
-#endif
     new_ScreenAttrs = (sattr_T *)lalloc((long_u)(
 			      (Rows + 1) * Columns * sizeof(sattr_T)), FALSE);
     new_LineOffset = (unsigned *)lalloc((long_u)(
@@ -9031,16 +8809,12 @@ retry:
 	outofmem = TRUE;
 give_up:
 
-#ifdef FEAT_MBYTE
     for (i = 0; i < p_mco; ++i)
 	if (new_ScreenLinesC[i] == NULL)
 	    break;
-#endif
     if (new_ScreenLines == NULL
-#ifdef FEAT_MBYTE
 	    || (enc_utf8 && (new_ScreenLinesUC == NULL || i != p_mco))
 	    || (enc_dbcs == DBCS_JPNU && new_ScreenLines2 == NULL)
-#endif
 	    || new_ScreenAttrs == NULL
 	    || new_LineOffset == NULL
 	    || new_LineWraps == NULL
@@ -9057,12 +8831,10 @@ give_up:
 	    done_outofmem_msg = TRUE;
 	}
 	VIM_CLEAR(new_ScreenLines);
-#ifdef FEAT_MBYTE
 	VIM_CLEAR(new_ScreenLinesUC);
 	for (i = 0; i < p_mco; ++i)
 	    VIM_CLEAR(new_ScreenLinesC[i]);
 	VIM_CLEAR(new_ScreenLines2);
-#endif
 	VIM_CLEAR(new_ScreenAttrs);
 	VIM_CLEAR(new_LineOffset);
 	VIM_CLEAR(new_LineWraps);
@@ -9087,7 +8859,6 @@ give_up:
 	    {
 		(void)vim_memset(new_ScreenLines + new_row * Columns,
 				      ' ', (size_t)Columns * sizeof(schar_T));
-#ifdef FEAT_MBYTE
 		if (enc_utf8)
 		{
 		    (void)vim_memset(new_ScreenLinesUC + new_row * Columns,
@@ -9100,7 +8871,6 @@ give_up:
 		if (enc_dbcs == DBCS_JPNU)
 		    (void)vim_memset(new_ScreenLines2 + new_row * Columns,
 				       0, (size_t)Columns * sizeof(schar_T));
-#endif
 		(void)vim_memset(new_ScreenAttrs + new_row * Columns,
 					0, (size_t)Columns * sizeof(sattr_T));
 		old_row = new_row + (screen_Rows - Rows);
@@ -9110,16 +8880,13 @@ give_up:
 			len = screen_Columns;
 		    else
 			len = Columns;
-#ifdef FEAT_MBYTE
 		    /* When switching to utf-8 don't copy characters, they
 		     * may be invalid now.  Also when p_mco changes. */
 		    if (!(enc_utf8 && ScreenLinesUC == NULL)
 						       && p_mco == Screen_mco)
-#endif
 			mch_memmove(new_ScreenLines + new_LineOffset[new_row],
 				ScreenLines + LineOffset[old_row],
 				(size_t)len * sizeof(schar_T));
-#ifdef FEAT_MBYTE
 		    if (enc_utf8 && ScreenLinesUC != NULL
 						       && p_mco == Screen_mco)
 		    {
@@ -9136,7 +8903,6 @@ give_up:
 			mch_memmove(new_ScreenLines2 + new_LineOffset[new_row],
 				ScreenLines2 + LineOffset[old_row],
 				(size_t)len * sizeof(schar_T));
-#endif
 		    mch_memmove(new_ScreenAttrs + new_LineOffset[new_row],
 			    ScreenAttrs + LineOffset[old_row],
 			    (size_t)len * sizeof(sattr_T));
@@ -9150,13 +8916,11 @@ give_up:
     free_screenlines();
 
     ScreenLines = new_ScreenLines;
-#ifdef FEAT_MBYTE
     ScreenLinesUC = new_ScreenLinesUC;
     for (i = 0; i < p_mco; ++i)
 	ScreenLinesC[i] = new_ScreenLinesC[i];
     Screen_mco = p_mco;
     ScreenLines2 = new_ScreenLines2;
-#endif
     ScreenAttrs = new_ScreenAttrs;
     LineOffset = new_LineOffset;
     LineWraps = new_LineWraps;
@@ -9213,14 +8977,12 @@ give_up:
     void
 free_screenlines(void)
 {
-#ifdef FEAT_MBYTE
     int		i;
 
     vim_free(ScreenLinesUC);
     for (i = 0; i < Screen_mco; ++i)
 	vim_free(ScreenLinesC[i]);
     vim_free(ScreenLines2);
-#endif
     vim_free(ScreenLines);
     vim_free(ScreenAttrs);
     vim_free(LineOffset);
@@ -9303,11 +9065,9 @@ screenclear2(void)
 lineclear(unsigned off, int width, int attr)
 {
     (void)vim_memset(ScreenLines + off, ' ', (size_t)width * sizeof(schar_T));
-#ifdef FEAT_MBYTE
     if (enc_utf8)
 	(void)vim_memset(ScreenLinesUC + off, 0,
 					  (size_t)width * sizeof(u8char_T));
-#endif
     (void)vim_memset(ScreenAttrs + off, attr, (size_t)width * sizeof(sattr_T));
 }
 
@@ -9332,7 +9092,6 @@ linecopy(int to, int from, win_T *wp)
 
     mch_memmove(ScreenLines + off_to, ScreenLines + off_from,
 	    wp->w_width * sizeof(schar_T));
-#ifdef FEAT_MBYTE
     if (enc_utf8)
     {
 	int	i;
@@ -9346,7 +9105,6 @@ linecopy(int to, int from, win_T *wp)
     if (enc_dbcs == DBCS_JPNU)
 	mch_memmove(ScreenLines2 + off_to, ScreenLines2 + off_from,
 		wp->w_width * sizeof(schar_T));
-#endif
     mch_memmove(ScreenAttrs + off_to, ScreenAttrs + off_from,
 	    wp->w_width * sizeof(sattr_T));
 }
@@ -9533,7 +9291,6 @@ windgoto(int row, int col)
 		    if (i != 0)
 			cost = 999;	/* different attributes, don't do it */
 		}
-#ifdef FEAT_MBYTE
 		if (enc_utf8)
 		{
 		    /* Don't use an UTF-8 char for positioning, it's slow. */
@@ -9544,7 +9301,6 @@ windgoto(int row, int col)
 			    break;
 			}
 		}
-#endif
 	    }
 
 	    /*
@@ -9603,15 +9359,11 @@ windgoto(int row, int col)
 			{
 			    if (ScreenAttrs[off] != screen_attr)
 				screen_stop_highlight();
-#ifdef FEAT_MBYTE
 			    out_flush_check();
-#endif
 			    out_char(ScreenLines[off]);
-#ifdef FEAT_MBYTE
 			    if (enc_dbcs == DBCS_JPNU
 						  && ScreenLines[off] == 0x8e)
 				out_char(ScreenLines2[off]);
-#endif
 			    ++off;
 			}
 		    }
@@ -9660,13 +9412,10 @@ setcursor_mayforce(int force)
 #ifdef FEAT_RIGHTLEFT
 		/* With 'rightleft' set and the cursor on a double-wide
 		 * character, position it on the leftmost column. */
-		curwin->w_p_rl ? ((int)curwin->w_width - curwin->w_wcol - (
-# ifdef FEAT_MBYTE
-			(has_mbyte
+		curwin->w_p_rl ? ((int)curwin->w_width - curwin->w_wcol
+		    - ((has_mbyte
 			   && (*mb_ptr2cells)(ml_get_cursor()) == 2
-			   && vim_isprintc(gchar_cursor())) ? 2 :
-# endif
-			1)) :
+			   && vim_isprintc(gchar_cursor())) ? 2 : 1)) :
 #endif
 							    curwin->w_wcol));
     }
@@ -10808,16 +10557,13 @@ draw_tabline(void)
 		shorten_dir(NameBuff);
 		len = vim_strsize(NameBuff);
 		p = NameBuff;
-#ifdef FEAT_MBYTE
 		if (has_mbyte)
 		    while (len > room)
 		    {
 			len -= ptr2cells(p);
 			MB_PTR_ADV(p);
 		    }
-		else
-#endif
-		    if (len > room)
+		else if (len > room)
 		{
 		    p += len - room;
 		    len = room;
@@ -11210,18 +10956,15 @@ win_redr_ruler(win_T *wp, int always, in
 	    /* need at least 3 chars left for get_rel_pos() + NUL */
 	    while (this_ru_col + o < width && RULER_BUF_LEN > i + 4)
 	    {
-#ifdef FEAT_MBYTE
 		if (has_mbyte)
 		    i += (*mb_char2bytes)(fillchar, buffer + i);
 		else
-#endif
 		    buffer[i++] = fillchar;
 		++o;
 	    }
 	    get_rel_pos(wp, buffer + i, RULER_BUF_LEN - i);
 	}
 	/* Truncate at window boundary. */
-#ifdef FEAT_MBYTE
 	if (has_mbyte)
 	{
 	    o = 0;
@@ -11235,9 +10978,7 @@ win_redr_ruler(win_T *wp, int always, in
 		}
 	    }
 	}
-	else
-#endif
-	if (this_ru_col + (int)STRLEN(buffer) > width)
+	else if (this_ru_col + (int)STRLEN(buffer) > width)
 	    buffer[width - this_ru_col] = NUL;
 
 	screen_puts(buffer, row, this_ru_col + off, attr);
--- a/src/version.c
+++ b/src/version.c
@@ -792,6 +792,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    809,
+/**/
     808,
 /**/
     807,