Patch 8.1.0810
Problem:    Too many #ifdefs.
Solution:   Graduate FEAT_MBYTE, part 4.
Files:      src/getchar.c, src/search.c, src/sign.c, src/spell.c,
            src/spellfile.c, src/syntax.c, src/tag.c, src/term.c, src/ui.c,
            src/version.c, src/winclip.c, src/window.c, src/glbl_ime.cpp,
            src/ex_cmds.h, src/globals.h, src/gui.h, src/if_py_both.h,
            src/macros.h, src/option.h, src/os_mac.h, src/os_win32.h,
            src/proto.h, src/spell.h, src/structs.h, src/vim.h


*** ../vim-8.1.0809/src/getchar.c       2019-01-20 15:30:36.885328746 +0100
--- src/getchar.c       2019-01-24 16:51:24.391561224 +0100
***************
*** 291,304 ****
      static void
  add_char_buff(buffheader_T *buf, int c)
  {
- #ifdef FEAT_MBYTE
      char_u    bytes[MB_MAXBYTES + 1];
      int               len;
      int               i;
- #endif
      char_u    temp[4];
  
- #ifdef FEAT_MBYTE
      if (IS_SPECIAL(c))
        len = 1;
      else
--- 291,301 ----
***************
*** 307,313 ****
      {
        if (!IS_SPECIAL(c))
            c = bytes[i];
- #endif
  
        if (IS_SPECIAL(c) || c == K_SPECIAL || c == NUL)
        {
--- 304,309 ----
***************
*** 333,341 ****
            temp[1] = NUL;
        }
        add_buff(buf, temp, -1L);
- #ifdef FEAT_MBYTE
      }
- #endif
  }
  
  /* First read ahead buffer. Used for translated commands. */
--- 329,335 ----
***************
*** 596,607 ****
            break;
  
        /* Handle a special or multibyte character. */
- #ifdef FEAT_MBYTE
        if (has_mbyte)
            /* Handle composing chars separately. */
            c = mb_cptr2char_adv(&s);
        else
- #endif
            c = *s++;
        if (c < ' ' || c == DEL || (*s == NUL && (c == '0' || c == '^')))
            add_char_buff(&redobuff, Ctrl_V);
--- 590,599 ----
***************
*** 686,696 ****
        }
        else
        {
- #ifdef FEAT_MBYTE
            c = mb_ptr2char_adv(&s);
- #else
-           c = *s++;
- #endif
            if (c == CAR || c == NL || c == ESC)
                c = ' ';
            stuffcharReadbuff(c);
--- 678,684 ----
***************
*** 732,742 ****
      static buffblock_T        *bp;
      static char_u     *p;
      int                       c;
- #ifdef FEAT_MBYTE
      int                       n;
      char_u            buf[MB_MAXBYTES + 1];
      int                       i;
- #endif
  
      if (init)
      {
--- 720,728 ----
***************
*** 752,758 ****
      if ((c = *p) != NUL)
      {
        /* Reverse the conversion done by add_char_buff() */
- #ifdef FEAT_MBYTE
        /* For a multi-byte character get all the bytes and return the
         * converted character. */
        if (has_mbyte && (c != K_SPECIAL || p[1] == KS_SPECIAL))
--- 738,743 ----
***************
*** 760,766 ****
        else
            n = 1;
        for (i = 0; ; ++i)
- #endif
        {
            if (c == K_SPECIAL) /* special key or escaped K_SPECIAL */
            {
--- 745,750 ----
***************
*** 776,782 ****
                bp = bp->b_next;
                p = bp->b_str;
            }
- #ifdef FEAT_MBYTE
            buf[i] = c;
            if (i == n - 1)     /* last byte of a character */
            {
--- 760,765 ----
***************
*** 787,793 ****
            c = *p;
            if (c == NUL)       /* cannot happen? */
                break;
- #endif
        }
      }
  
--- 770,775 ----
***************
*** 1093,1103 ****
      void
  ins_char_typebuf(int c)
  {
- #ifdef FEAT_MBYTE
      char_u    buf[MB_MAXBYTES + 1];
- #else
-     char_u    buf[4];
- #endif
      if (IS_SPECIAL(c))
      {
        buf[0] = K_SPECIAL;
--- 1075,1081 ----
***************
*** 1106,1119 ****
        buf[3] = NUL;
      }
      else
-     {
- #ifdef FEAT_MBYTE
        buf[(*mb_char2bytes)(c, buf)] = NUL;
- #else
-       buf[0] = c;
-       buf[1] = NUL;
- #endif
-     }
      (void)ins_typebuf(buf, KeyNoremap, 0, !KeyTyped, cmd_silent);
  }
  
--- 1084,1090 ----
***************
*** 1579,1589 ****
  vgetc(void)
  {
      int               c, c2;
- #ifdef FEAT_MBYTE
      int               n;
      char_u    buf[MB_MAXBYTES + 1];
      int               i;
- #endif
  
  #ifdef FEAT_EVAL
      /* Do garbage collection when garbagecollect() was called previously and
--- 1550,1558 ----
***************
*** 1763,1769 ****
            case K_XRIGHT:      c = K_RIGHT; break;
        }
  
- #ifdef FEAT_MBYTE
        /* For a multi-byte character get all the bytes and return the
         * converted character.
         * Note: This will loop until enough bytes are received!
--- 1732,1737 ----
***************
*** 1794,1800 ****
            --no_mapping;
            c = (*mb_ptr2char)(buf);
        }
- #endif
  
        break;
        }
--- 1762,1767 ----
***************
*** 2212,2218 ****
                                        break;
                                }
  
- #ifdef FEAT_MBYTE
                                /* Don't allow mapping the first byte(s) of a
                                 * multi-byte char.  Happens when mapping
                                 * <M-a> and then changing 'encoding'. Beware
--- 2183,2188 ----
***************
*** 2225,2231 ****
                                          && MB_BYTE2LEN(c1) > MB_PTR2LEN(p2))
                                        mlen = 0;
                                }
- #endif
                                /*
                                 * Check an entry whether it matches.
                                 * - Full match: mlen == keylen
--- 2195,2200 ----
***************
*** 2685,2722 ****
                                        curwin->w_wcol = vcol;
                                    vcol += lbr_chartabsize(ptr, ptr + col,
                                                               (colnr_T)vcol);
- #ifdef FEAT_MBYTE
                                    if (has_mbyte)
                                        col += (*mb_ptr2len)(ptr + col);
                                    else
- #endif
                                        ++col;
                                }
                                curwin->w_wrow = curwin->w_cline_row
                                           + curwin->w_wcol / curwin->w_width;
                                curwin->w_wcol %= curwin->w_width;
                                curwin->w_wcol += curwin_col_off();
- #ifdef FEAT_MBYTE
                                col = 0;        /* no correction needed */
- #endif
                            }
                            else
                            {
                                --curwin->w_wcol;
- #ifdef FEAT_MBYTE
                                col = curwin->w_cursor.col - 1;
- #endif
                            }
                        }
                        else if (curwin->w_p_wrap && curwin->w_wrow)
                        {
                            --curwin->w_wrow;
                            curwin->w_wcol = curwin->w_width - 1;
- #ifdef FEAT_MBYTE
                            col = curwin->w_cursor.col - 1;
- #endif
                        }
- #ifdef FEAT_MBYTE
                        if (has_mbyte && col > 0 && curwin->w_wcol > 0)
                        {
                            /* Correct when the cursor is on the right halve
--- 2654,2682 ----
***************
*** 2726,2732 ****
                            if ((*mb_ptr2cells)(ptr + col) > 1)
                                --curwin->w_wcol;
                        }
- #endif
                    }
                    setcursor();
                    out_flush();
--- 2686,2691 ----
***************
*** 3434,3440 ****
             * Otherwise we won't be able to find the start of it in a
             * vi-compatible way.
             */
- #ifdef FEAT_MBYTE
            if (has_mbyte)
            {
                int     first, last;
--- 3394,3399 ----
***************
*** 3458,3466 ****
                    goto theend;
                }
            }
!           else
! #endif
!               if (vim_iswordc(keys[len - 1])) /* ends in keyword char */
                    for (n = 0; n < len - 2; ++n)
                        if (vim_iswordc(keys[n]) != vim_iswordc(keys[len - 2]))
                        {
--- 3417,3423 ----
                    goto theend;
                }
            }
!           else if (vim_iswordc(keys[len - 1]))  // ends in keyword char
                    for (n = 0; n < len - 2; ++n)
                        if (vim_iswordc(keys[n]) != vim_iswordc(keys[len - 2]))
                        {
***************
*** 4458,4466 ****
  #ifdef FEAT_LOCALMAP
      mapblock_T        *mp2;
  #endif
- #ifdef FEAT_MBYTE
      int               clen = 0;       /* length in characters */
- #endif
      int               is_id = TRUE;
      int               vim_abbr;
  
--- 4415,4421 ----
***************
*** 4480,4486 ****
      if (col == 0)                             /* cannot be an abbr. */
        return FALSE;
  
- #ifdef FEAT_MBYTE
      if (has_mbyte)
      {
        char_u *p;
--- 4435,4440 ----
***************
*** 4508,4514 ****
        scol = (int)(p - ptr);
      }
      else
- #endif
      {
        if (!vim_iswordc(ptr[col - 1]))
            vim_abbr = TRUE;                    /* Vim added abbr. */
--- 4462,4467 ----
***************
*** 4601,4607 ****
                {
                    if (c < ABBR_OFF && (c < ' ' || c > '~'))
                        tb[j++] = Ctrl_V;       /* special char needs CTRL-V */
- #ifdef FEAT_MBYTE
                    if (has_mbyte)
                    {
                        /* if ABBR_OFF has been added, remove it here */
--- 4554,4559 ----
***************
*** 4610,4616 ****
                        j += (*mb_char2bytes)(c, tb + j);
                    }
                    else
- #endif
                        tb[j++] = c;
                }
                tb[j] = NUL;
--- 4562,4567 ----
***************
*** 4637,4646 ****
  
            tb[0] = Ctrl_H;
            tb[1] = NUL;
- #ifdef FEAT_MBYTE
            if (has_mbyte)
                len = clen;     /* Delete characters instead of bytes */
- #endif
            while (len-- > 0)           /* delete the from string */
                (void)ins_typebuf(tb, 1, 0, TRUE, mp->m_silent);
            return TRUE;
--- 4588,4595 ----
***************
*** 4715,4727 ****
      /* Need a buffer to hold up to three times as much.  Four in case of an
       * illegal utf-8 byte:
       * 0xc0 -> 0xc3 0x80 -> 0xc3 K_SPECIAL KS_SPECIAL KE_FILLER */
!     res = alloc((unsigned)(STRLEN(p) *
! #ifdef FEAT_MBYTE
!                       4
! #else
!                       3
! #endif
!                           ) + 1);
      if (res != NULL)
      {
        d = res;
--- 4664,4670 ----
      /* Need a buffer to hold up to three times as much.  Four in case of an
       * illegal utf-8 byte:
       * 0xc0 -> 0xc3 0x80 -> 0xc3 K_SPECIAL KS_SPECIAL KE_FILLER */
!     res = alloc((unsigned)(STRLEN(p) * 4) + 1);
      if (res != NULL)
      {
        d = res;
***************
*** 5012,5018 ****
  
      for ( ; *str != NUL; ++str)
      {
- #ifdef FEAT_MBYTE
        char_u  *p;
  
        /* Check for a multi-byte character, which may contain escaped
--- 4955,4960 ----
***************
*** 5026,5032 ****
            --str;
            continue;
        }
- #endif
  
        c = *str;
        /*
--- 4968,4973 ----
*** ../vim-8.1.0809/src/search.c        2019-01-20 15:30:36.893328693 +0100
--- src/search.c        2019-01-24 16:41:51.655543691 +0100
***************
*** 85,94 ****
  static char_u lastc[2] = {NUL, NUL};  /* last character searched for */
  static int lastcdir = FORWARD;                /* last direction of character 
search */
  static int last_t_cmd = TRUE;         /* last search t_cmd */
- #ifdef FEAT_MBYTE
  static char_u lastc_bytes[MB_MAXBYTES + 1];
  static int    lastc_bytelen = 1;      /* >1 for multi-byte char */
- #endif
  
  /* copy of spats[], for keeping the search patterns while executing autocmds 
*/
  static struct spat  saved_spats[2];
--- 85,92 ----
***************
*** 248,254 ****
        rev_i = len;
        for (s_i = 0; s_i < len; ++s_i)
        {
- # ifdef FEAT_MBYTE
            if (has_mbyte)
            {
                int     mb_len;
--- 246,251 ----
***************
*** 259,265 ****
                s_i += mb_len - 1;
            }
            else
- # endif
                rev[--rev_i] = s[s_i];
  
        }
--- 256,261 ----
***************
*** 446,452 ****
  
      while (*p != NUL)
      {
- #ifdef FEAT_MBYTE
        int             l;
  
        if (has_mbyte && (l = (*mb_ptr2len)(p)) > 1)
--- 442,447 ----
***************
*** 455,463 ****
                return TRUE;
            p += l;
        }
!       else
! #endif
!            if (*p == '\\')
        {
            if (p[1] == '_' && p[2] != NUL)  /* skip "\_X" */
                p += 3;
--- 450,456 ----
                return TRUE;
            p += l;
        }
!       else if (*p == '\\')
        {
            if (p[1] == '_' && p[2] != NUL)  /* skip "\_X" */
                p += 3;
***************
*** 480,490 ****
      char_u *
  last_csearch(void)
  {
- #ifdef FEAT_MBYTE
      return lastc_bytes;
- #else
-     return lastc;
- #endif
  }
  
      int
--- 473,479 ----
***************
*** 503,515 ****
  set_last_csearch(int c, char_u *s UNUSED, int len UNUSED)
  {
      *lastc = c;
- #ifdef FEAT_MBYTE
      lastc_bytelen = len;
      if (len)
        memcpy(lastc_bytes, s, len);
      else
        vim_memset(lastc_bytes, 0, sizeof(lastc_bytes));
- #endif
  }
  #endif
  
--- 492,502 ----
***************
*** 687,693 ****
         * MAXCOL + 1 is zero. */
        if (pos->col == MAXCOL)
            start_char_len = 0;
- #ifdef FEAT_MBYTE
        /* Watch out for the "col" being MAXCOL - 2, used in a closed fold. */
        else if (has_mbyte
                    && pos->lnum >= 1 && pos->lnum <= buf->b_ml.ml_line_count
--- 674,679 ----
***************
*** 699,705 ****
            else
                start_char_len = (*mb_ptr2len)(ptr + pos->col);
        }
- #endif
        else
            start_char_len = 1;
        if (dir == FORWARD)
--- 685,690 ----
***************
*** 835,846 ****
                                if (matchcol == matchpos.col
                                                      && ptr[matchcol] != NUL)
                                {
- #ifdef FEAT_MBYTE
                                    if (has_mbyte)
                                        matchcol +=
                                          (*mb_ptr2len)(ptr + matchcol);
                                    else
- #endif
                                        ++matchcol;
                                }
                            }
--- 820,829 ----
***************
*** 849,860 ****
                                matchcol = matchpos.col;
                                if (ptr[matchcol] != NUL)
                                {
- #ifdef FEAT_MBYTE
                                    if (has_mbyte)
                                        matchcol += (*mb_ptr2len)(ptr
                                                                  + matchcol);
                                    else
- #endif
                                        ++matchcol;
                                }
                            }
--- 832,841 ----
***************
*** 946,957 ****
                                if (matchcol == matchpos.col
                                                      && ptr[matchcol] != NUL)
                                {
- #ifdef FEAT_MBYTE
                                    if (has_mbyte)
                                        matchcol +=
                                          (*mb_ptr2len)(ptr + matchcol);
                                    else
- #endif
                                        ++matchcol;
                                }
                            }
--- 927,936 ----
***************
*** 963,974 ****
                                matchcol = matchpos.col;
                                if (ptr[matchcol] != NUL)
                                {
- #ifdef FEAT_MBYTE
                                    if (has_mbyte)
                                        matchcol +=
                                          (*mb_ptr2len)(ptr + matchcol);
                                    else
- #endif
                                        ++matchcol;
                                }
                            }
--- 942,951 ----
***************
*** 1029,1042 ****
                        else
                        {
                            --pos->col;
- #ifdef FEAT_MBYTE
                            if (has_mbyte
                                    && pos->lnum <= buf->b_ml.ml_line_count)
                            {
                                ptr = ml_get_buf(buf, pos->lnum, FALSE);
                                pos->col -= (*mb_head_off)(ptr, ptr + pos->col);
                            }
- #endif
                        }
                        if (end_pos != NULL)
                        {
--- 1006,1017 ----
***************
*** 1410,1416 ****
            if (msgbuf != NULL)
            {
                msgbuf[0] = dirc;
- #ifdef FEAT_MBYTE
                if (enc_utf8 && utf_iscomposing(utf_ptr2char(p)))
                {
                    /* Use a space to draw the composing char on. */
--- 1385,1390 ----
***************
*** 1418,1424 ****
                    STRCPY(msgbuf + 2, p);
                }
                else
- #endif
                    STRCPY(msgbuf + 1, p);
                if (spats[0].off.line || spats[0].off.end || spats[0].off.off)
                {
--- 1392,1397 ----
***************
*** 1711,1717 ****
            *lastc = c;
            set_csearch_direction(dir);
            set_csearch_until(t_cmd);
- #ifdef FEAT_MBYTE
            lastc_bytelen = (*mb_char2bytes)(c, lastc_bytes);
            if (cap->ncharC1 != 0)
            {
--- 1684,1689 ----
***************
*** 1721,1736 ****
                    lastc_bytelen += (*mb_char2bytes)(cap->ncharC2,
                            lastc_bytes + lastc_bytelen);
            }
- #endif
        }
      }
      else              /* repeat previous search */
      {
!       if (*lastc == NUL
! #ifdef FEAT_MBYTE
!               && lastc_bytelen == 1
! #endif
!               )
            return FAIL;
        if (dir)        /* repeat in opposite direction */
            dir = -lastcdir;
--- 1693,1703 ----
                    lastc_bytelen += (*mb_char2bytes)(cap->ncharC2,
                            lastc_bytes + lastc_bytelen);
            }
        }
      }
      else              /* repeat previous search */
      {
!       if (*lastc == NUL && lastc_bytelen == 1)
            return FAIL;
        if (dir)        /* repeat in opposite direction */
            dir = -lastcdir;
***************
*** 1758,1764 ****
  
      while (count--)
      {
- #ifdef FEAT_MBYTE
        if (has_mbyte)
        {
            for (;;)
--- 1725,1730 ----
***************
*** 1787,1793 ****
            }
        }
        else
- #endif
        {
            for (;;)
            {
--- 1753,1758 ----
***************
*** 1804,1810 ****
      {
        /* backup to before the character (possibly double-byte) */
        col -= dir;
- #ifdef FEAT_MBYTE
        if (has_mbyte)
        {
            if (dir < 0)
--- 1769,1774 ----
***************
*** 1814,1820 ****
                /* To previous char, which may be multi-byte. */
                col -= (*mb_head_off)(p, p + col);
        }
- #endif
      }
      curwin->w_cursor.col = col;
  
--- 1778,1783 ----
***************
*** 1851,1860 ****
      int               *prevcol)
  {
      --col;
- #ifdef FEAT_MBYTE
      if (col > 0 && has_mbyte)
        col -= (*mb_head_off)(linep, linep + col);
- #endif
      if (prevcol)
        *prevcol = col;
      return (col >= 0 && linep[col] == ch) ? TRUE : FALSE;
--- 1814,1821 ----
***************
*** 2237,2246 ****
            else
            {
                --pos.col;
- #ifdef FEAT_MBYTE
                if (has_mbyte)
                    pos.col -= (*mb_head_off)(linep, linep + pos.col);
- #endif
            }
        }
        else                            /* forward search */
--- 2198,2205 ----
***************
*** 2278,2288 ****
            }
            else
            {
- #ifdef FEAT_MBYTE
                if (has_mbyte)
                    pos.col += (*mb_ptr2len)(linep + pos.col);
                else
- #endif
                    ++pos.col;
            }
        }
--- 2237,2245 ----
***************
*** 2934,2943 ****
        if ((curwin->w_cursor.col = (colnr_T)STRLEN(line)) != 0)
        {
            --curwin->w_cursor.col;
- #ifdef FEAT_MBYTE
            curwin->w_cursor.col -=
                             (*mb_head_off)(line, line + curwin->w_cursor.col);
- #endif
            *pincl = TRUE;
        }
      }
--- 2891,2898 ----
***************
*** 3029,3035 ****
  #endif
      if (c == ' ' || c == '\t' || c == NUL)
        return 0;
- #ifdef FEAT_MBYTE
      if (enc_dbcs != 0 && c > 0xFF)
      {
        /* If cls_bigword, report multi-byte chars as class 1. */
--- 2984,2989 ----
***************
*** 3046,3052 ****
            return 1;
        return c;
      }
- #endif
  
      /* If cls_bigword is TRUE, report all non-blanks as class 1. */
      if (cls_bigword)
--- 3000,3005 ----
***************
*** 3903,3909 ****
      int               lc = NUL;
      pos_T     pos;
  
- #ifdef FEAT_MBYTE
      if (enc_dbcs)
      {
        char_u  *lp = NULL;
--- 3856,3861 ----
***************
*** 3924,3930 ****
        }
      }
      else
- #endif
      {
        for (p = line + curwin->w_cursor.col; p > line; )
        {
--- 3876,3881 ----
***************
*** 4371,4381 ****
            ++col;
        else if (c == quotechar)
            break;
- #ifdef FEAT_MBYTE
        if (has_mbyte)
            col += (*mb_ptr2len)(line + col);
        else
- #endif
            ++col;
      }
      return col;
--- 4322,4330 ----
***************
*** 4399,4407 ****
      while (col_start > 0)
      {
        --col_start;
- #ifdef FEAT_MBYTE
        col_start -= (*mb_head_off)(line, line + col_start);
- #endif
        n = 0;
        if (escape != NULL)
            while (col_start - n > 0 && vim_strchr(escape,
--- 4348,4354 ----
*** ../vim-8.1.0809/src/sign.c  2019-01-19 17:43:03.425449092 +0100
--- src/sign.c  2019-01-24 16:42:16.007379451 +0100
***************
*** 820,826 ****
        }
  
      // Count cells and check for non-printable chars
- # ifdef FEAT_MBYTE
      if (has_mbyte)
      {
        cells = 0;
--- 820,825 ----
***************
*** 832,838 ****
        }
      }
      else
- # endif
      {
        for (s = text; s < endp; ++s)
            if (!vim_isprintc(*s))
--- 831,836 ----
*** ../vim-8.1.0809/src/spell.c 2019-01-19 17:43:03.429449066 +0100
--- src/spell.c 2019-01-24 16:46:46.505554025 +0100
***************
*** 224,235 ****
                                           affixID/condition */
      int               mi_prefcnt;             /* number of entries at 
mi_prefarridx */
      int               mi_prefixlen;           /* byte length of prefix */
- #ifdef FEAT_MBYTE
      int               mi_cprefixlen;          /* byte length of prefix in 
original
                                           case */
- #else
- # define mi_cprefixlen mi_prefixlen   /* it's the same value */
- #endif
  
      /* for when checking a compound word */
      int               mi_compoff;             /* start of following word 
offset */
--- 224,231 ----
***************
*** 249,257 ****
  
  
  static int spell_iswordp(char_u *p, win_T *wp);
- #ifdef FEAT_MBYTE
  static int spell_mb_isword_class(int cl, win_T *wp);
- #endif
  
  /*
   * For finding suggestions: At each node in the tree these states are tried:
--- 245,251 ----
***************
*** 295,306 ****
      char_u    ts_prefixdepth; /* stack depth for end of prefix or
                                 * PFD_PREFIXTREE or PFD_NOPREFIX */
      char_u    ts_flags;       /* TSF_ flags */
- #ifdef FEAT_MBYTE
      char_u    ts_tcharlen;    /* number of bytes in tword character */
      char_u    ts_tcharidx;    /* current byte index in tword character */
      char_u    ts_isdiff;      /* DIFF_ values */
      char_u    ts_fcharstart;  /* index in fword where badword char started */
- #endif
      char_u    ts_prewordlen;  /* length of word in "preword[]" */
      char_u    ts_splitoff;    /* index in "tword" after last split */
      char_u    ts_splitfidx;   /* "ts_fidx" at word split */
--- 289,298 ----
***************
*** 358,366 ****
  static void suggest_try_change(suginfo_T *su);
  static void suggest_trie_walk(suginfo_T *su, langp_T *lp, char_u *fword, int 
soundfold);
  static void go_deeper(trystate_T *stack, int depth, int score_add);
- #ifdef FEAT_MBYTE
  static int nofold_len(char_u *fword, int flen, char_u *word);
- #endif
  static void find_keepcap_word(slang_T *slang, char_u *fword, char_u *kword);
  static void score_comp_sal(suginfo_T *su);
  static void score_combine(suginfo_T *su);
--- 350,356 ----
***************
*** 380,394 ****
  static int cleanup_suggestions(garray_T *gap, int maxscore, int keep);
  static void spell_soundfold_sofo(slang_T *slang, char_u *inword, char_u *res);
  static void spell_soundfold_sal(slang_T *slang, char_u *inword, char_u *res);
- #ifdef FEAT_MBYTE
  static void spell_soundfold_wsal(slang_T *slang, char_u *inword, char_u *res);
- #endif
  static int soundalike_score(char_u *goodsound, char_u *badsound);
  static int spell_edit_score(slang_T *slang, char_u *badword, char_u 
*goodword);
  static int spell_edit_score_limit(slang_T *slang, char_u *badword, char_u 
*goodword, int limit);
- #ifdef FEAT_MBYTE
  static int spell_edit_score_limit_w(slang_T *slang, char_u *badword, char_u 
*goodword, int limit);
- #endif
  static void dump_word(slang_T *slang, char_u *word, char_u *pat, int *dir, 
int round, int flags, linenr_T lnum);
  static linenr_T dump_prefixes(slang_T *slang, char_u *word, char_u *pat, int 
*dir, int round, int flags, linenr_T startlnum);
  
--- 370,380 ----
***************
*** 565,574 ****
                    *capcol = (int)(regmatch.endp[0] - ptr);
            }
  
- #ifdef FEAT_MBYTE
            if (has_mbyte)
                return (*mb_ptr2len)(ptr);
- #endif
            return 1;
        }
        else if (mi.mi_end == ptr)
--- 551,558 ----
***************
*** 646,654 ****
      int               c;
      char_u    *ptr;
      idx_T     lo, hi, m;
- #ifdef FEAT_MBYTE
      char_u    *s;
- #endif
      char_u    *p;
      int               res = SP_BAD;
      slang_T   *slang = mip->mi_lp->lp_slang;
--- 630,636 ----
***************
*** 794,803 ****
        arridx = endidx[endidxcnt];
        wlen = endlen[endidxcnt];
  
- #ifdef FEAT_MBYTE
        if ((*mb_head_off)(ptr, ptr + wlen) > 0)
            continue;       /* not at first byte of character */
- #endif
        if (spell_iswordp(ptr + wlen, mip->mi_win))
        {
            if (slang->sl_compprog == NULL && !slang->sl_nobreak)
--- 776,783 ----
***************
*** 810,816 ****
         * has been found we try compound flags. */
        prefix_found = FALSE;
  
- #ifdef FEAT_MBYTE
        if (mode != FIND_KEEPWORD && has_mbyte)
        {
            /* Compute byte length in original word, length may change
--- 790,795 ----
***************
*** 824,830 ****
                wlen = (int)(p - mip->mi_word);
            }
        }
- #endif
  
        /* Check flags and region.  For FIND_PREFIX check the condition and
         * prefix ID.
--- 803,808 ----
***************
*** 896,902 ****
                if (((unsigned)flags >> 24) == 0
                             || wlen - mip->mi_compoff < slang->sl_compminlen)
                    continue;
- #ifdef FEAT_MBYTE
                /* For multi-byte chars check character length against
                 * COMPOUNDMIN. */
                if (has_mbyte
--- 874,879 ----
***************
*** 904,910 ****
                        && mb_charlen_len(mip->mi_word + mip->mi_compoff,
                                wlen - mip->mi_compoff) < slang->sl_compminlen)
                        continue;
- #endif
  
                /* Limit the number of compound words to COMPOUNDWORDMAX if no
                 * maximum for syllables is specified. */
--- 881,886 ----
***************
*** 938,944 ****
  
                    /* Need to check the caps type of the appended compound
                     * word. */
- #ifdef FEAT_MBYTE
                    if (has_mbyte && STRNCMP(ptr, mip->mi_word,
                                                        mip->mi_compoff) != 0)
                    {
--- 914,919 ----
***************
*** 948,954 ****
                            MB_PTR_ADV(p);
                    }
                    else
- #endif
                        p = mip->mi_word + mip->mi_compoff;
                    capflags = captype(p, mip->mi_word + wlen);
                    if (capflags == WF_KEEPCAP || (capflags == WF_ALLCAP
--- 923,928 ----
***************
*** 1020,1026 ****
  
                /* Find following word in case-folded tree. */
                mip->mi_compoff = endlen[endidxcnt];
- #ifdef FEAT_MBYTE
                if (has_mbyte && mode == FIND_KEEPWORD)
                {
                    /* Compute byte length in case-folded word from "wlen":
--- 994,999 ----
***************
*** 1035,1041 ****
                        mip->mi_compoff = (int)(p - mip->mi_fword);
                    }
                }
- #endif
  #if 0 /* Disabled, see below */
                c = mip->mi_compoff;
  #endif
--- 1008,1013 ----
***************
*** 1186,1200 ****
      static int
  can_compound(slang_T *slang, char_u *word, char_u *flags)
  {
- #ifdef FEAT_MBYTE
      char_u    uflags[MAXWLEN * 2];
      int               i;
- #endif
      char_u    *p;
  
      if (slang->sl_compprog == NULL)
        return FALSE;
- #ifdef FEAT_MBYTE
      if (enc_utf8)
      {
        /* Need to convert the single byte flags to utf8 characters. */
--- 1158,1169 ----
***************
*** 1205,1211 ****
        p = uflags;
      }
      else
- #endif
        p = flags;
      if (!vim_regexec_prog(&slang->sl_compprog, FALSE, p, 0))
        return FALSE;
--- 1174,1179 ----
***************
*** 1434,1440 ****
                /* Skip over the previously found word(s). */
                mip->mi_prefixlen += mip->mi_compoff;
  
- #ifdef FEAT_MBYTE
            if (has_mbyte)
            {
                /* Case-folded length may differ from original length. */
--- 1402,1407 ----
***************
*** 1443,1449 ****
            }
            else
                mip->mi_cprefixlen = mip->mi_prefixlen;
- #endif
            find_word(mip, FIND_PREFIX);
  
  
--- 1410,1415 ----
***************
*** 1912,1921 ****
  spell_enc(void)
  {
  
- #ifdef FEAT_MBYTE
      if (STRLEN(p_enc) < 60 && STRCMP(p_enc, "iso-8859-15") != 0)
        return p_enc;
- #endif
      return (char_u *)"latin1";
  }
  
--- 1878,1885 ----
***************
*** 2015,2025 ****
            vim_free(smp->sm_lead);
            /* Don't free sm_oneof and sm_rules, they point into sm_lead. */
            vim_free(smp->sm_to);
- #ifdef FEAT_MBYTE
            vim_free(smp->sm_lead_w);
            vim_free(smp->sm_oneof_w);
            vim_free(smp->sm_to_w);
- #endif
        }
      ga_clear(gap);
  
--- 1979,1987 ----
***************
*** 2046,2054 ****
      hash_clear_all(&lp->sl_wordcount, WC_KEY_OFF);
      hash_init(&lp->sl_wordcount);
  
- #ifdef FEAT_MBYTE
      hash_clear_all(&lp->sl_map_hash, 0);
- #endif
  
      /* Clear info from .sug file. */
      slang_clear_sug(lp);
--- 2008,2014 ----
***************
*** 2284,2296 ****
        else
        {
            /* No recognized syllable item, at least a syllable char then? */
- #ifdef FEAT_MBYTE
            c = mb_ptr2char(p);
            len = (*mb_ptr2len)(p);
- #else
-           c = *p;
-           len = 1;
- #endif
            if (vim_strchr(slang->sl_syllable, c) == NULL)
                skip = FALSE;       /* No, search for next syllable */
            else if (!skip)
--- 2244,2251 ----
***************
*** 2352,2360 ****
      if (spl_copy == NULL)
        goto theend;
  
- #ifdef FEAT_MBYTE
      wp->w_s->b_cjk = 0;
- #endif
  
      /* Loop over comma separated language names. */
      for (splp = spl_copy; *splp != NUL; )
--- 2307,2313 ----
***************
*** 2366,2374 ****
  
        if (STRCMP(lang, "cjk") == 0)
        {
- #ifdef FEAT_MBYTE
            wp->w_s->b_cjk = 1;
- #endif
            continue;
        }
  
--- 2319,2325 ----
***************
*** 2633,2641 ****
  clear_midword(win_T *wp)
  {
      vim_memset(wp->w_s->b_spell_ismw, 0, 256);
- #ifdef FEAT_MBYTE
      VIM_CLEAR(wp->w_s->b_spell_ismw_mb);
- #endif
  }
  
  /*
--- 2584,2590 ----
***************
*** 2651,2657 ****
        return;
  
      for (p = lp->sl_midword; *p != NUL; )
- #ifdef FEAT_MBYTE
        if (has_mbyte)
        {
            int     c, l, n;
--- 2600,2605 ----
***************
*** 2679,2685 ****
            p += l;
        }
        else
- #endif
            wp->w_s->b_spell_ismw[*p++] = TRUE;
  }
  
--- 2627,2632 ----
***************
*** 2725,2735 ****
      for (p = word; !spell_iswordp_nmw(p, curwin); MB_PTR_ADV(p))
        if (end == NULL ? *p == NUL : p >= end)
            return 0;       /* only non-word characters, illegal word */
- #ifdef FEAT_MBYTE
      if (has_mbyte)
        c = mb_ptr2char_adv(&p);
      else
- #endif
        c = *p++;
      firstcap = allcap = SPELL_ISUPPER(c);
  
--- 2672,2680 ----
***************
*** 2825,2831 ****
      }
  }
  
- #if defined(FEAT_MBYTE) || defined(EXITFREE) || defined(PROTO)
  /*
   * Free all languages.
   */
--- 2770,2775 ----
***************
*** 2851,2859 ****
      VIM_CLEAR(repl_to);
      VIM_CLEAR(repl_from);
  }
- #endif
  
- #if defined(FEAT_MBYTE) || defined(PROTO)
  /*
   * Clear all spelling tables and reload them.
   * Used after 'encoding' is set and when ":mkspell" was used.
--- 2795,2801 ----
***************
*** 2884,2890 ****
        }
      }
  }
- #endif
  
  /*
   * Opposite of offset2bytes().
--- 2826,2831 ----
***************
*** 3016,3022 ****
  
      did_set_spelltab = FALSE;
      clear_spell_chartab(&spelltab);
- #ifdef FEAT_MBYTE
      if (enc_dbcs)
      {
        /* DBCS: assume double-wide characters are word characters. */
--- 2957,2962 ----
***************
*** 3041,3047 ****
        }
      }
      else
- #endif
      {
        /* Rough guess: use locale-dependent library functions. */
        for (i = 128; i < 256; ++i)
--- 2981,2986 ----
***************
*** 3073,3079 ****
      char_u    *p,
      win_T     *wp)        /* buffer used */
  {
- #ifdef FEAT_MBYTE
      char_u    *s;
      int               l;
      int               c;
--- 3012,3017 ----
***************
*** 3102,3108 ****
            return spell_mb_isword_class(mb_get_class(s), wp);
        return spelltab.st_isw[c];
      }
- #endif
  
      return spelltab.st_isw[wp->w_s->b_spell_ismw[*p] ? p[1] : p[0]];
  }
--- 3040,3045 ----
***************
*** 3114,3120 ****
      int
  spell_iswordp_nmw(char_u *p, win_T *wp)
  {
- #ifdef FEAT_MBYTE
      int               c;
  
      if (has_mbyte)
--- 3051,3056 ----
***************
*** 3124,3134 ****
            return spell_mb_isword_class(mb_get_class(p), wp);
        return spelltab.st_isw[c];
      }
- #endif
      return spelltab.st_isw[*p];
  }
  
- #ifdef FEAT_MBYTE
  /*
   * Return TRUE if word class indicates a word character.
   * Only for characters above 255.
--- 3060,3068 ----
***************
*** 3171,3177 ****
      }
      return spelltab.st_isw[*s];
  }
- #endif
  
  /*
   * Case-fold "str[len]" into "buf[buflen]".  The result is NUL terminated.
--- 3105,3110 ----
***************
*** 3194,3200 ****
        return FAIL;            /* result will not fit */
      }
  
- #ifdef FEAT_MBYTE
      if (has_mbyte)
      {
        int     outi = 0;
--- 3127,3132 ----
***************
*** 3215,3221 ****
        buf[outi] = NUL;
      }
      else
- #endif
      {
        /* Be quick for non-multibyte encodings. */
        for (i = 0; i < len; ++i)
--- 3147,3152 ----
***************
*** 4072,4092 ****
      int               l;
  
      p = word;
- #ifdef FEAT_MBYTE
      if (has_mbyte)
        c = mb_cptr2char_adv(&p);
      else
- #endif
        c = *p++;
      if (upper)
        c = SPELL_TOUPPER(c);
      else
        c = SPELL_TOFOLD(c);
- #ifdef FEAT_MBYTE
      if (has_mbyte)
        l = mb_char2bytes(c, wcopy);
      else
- #endif
      {
        l = 1;
        wcopy[0] = c;
--- 4003,4019 ----
***************
*** 4108,4121 ****
      d = wcopy;
      for (s = word; *s != NUL; )
      {
- #ifdef FEAT_MBYTE
        if (has_mbyte)
            c = mb_cptr2char_adv(&s);
        else
- #endif
            c = *s++;
  
- #ifdef FEAT_MBYTE
        /* We only change 0xdf to SS when we are certain latin1 is used.  It
         * would cause weird errors in other 8-bit encodings. */
        if (enc_latin1like && c == 0xdf)
--- 4035,4045 ----
***************
*** 4126,4135 ****
            *d++ = c;
        }
        else
- #endif
            c = SPELL_TOUPPER(c);
  
- #ifdef FEAT_MBYTE
        if (has_mbyte)
        {
            if (d - wcopy >= MAXWLEN - MB_MAXBYTES)
--- 4050,4057 ----
***************
*** 4137,4143 ****
            d += mb_char2bytes(c, d);
        }
        else
- #endif
        {
            if (d - wcopy >= MAXWLEN - 1)
                break;
--- 4059,4064 ----
***************
*** 4434,4444 ****
                {
                    /* Set su->su_badflags to the caps type at this position.
                     * Use the caps type until here for the prefix itself. */
- #ifdef FEAT_MBYTE
                    if (has_mbyte)
                        n = nofold_len(fword, sp->ts_fidx, su->su_badptr);
                    else
- #endif
                        n = sp->ts_fidx;
                    flags = badword_captype(su->su_badptr, su->su_badptr + n);
                    su->su_badflags = badword_captype(su->su_badptr + n,
--- 4355,4363 ----
***************
*** 4568,4574 ****
                            || sp->ts_twordlen - sp->ts_splitoff
                                                       < slang->sl_compminlen)
                        break;
- #ifdef FEAT_MBYTE
                    /* For multi-byte chars check character length against
                     * COMPOUNDMIN. */
                    if (has_mbyte
--- 4487,4492 ----
***************
*** 4576,4582 ****
                            && mb_charlen(tword + sp->ts_splitoff)
                                                       < slang->sl_compminlen)
                        break;
- #endif
  
                    compflags[sp->ts_complen] = ((unsigned)flags >> 24);
                    compflags[sp->ts_complen + 1] = NUL;
--- 4494,4499 ----
***************
*** 4625,4636 ****
                 * allcap and it's only one char long use onecap. */
                c = su->su_badflags;
                if ((c & WF_ALLCAP)
! #ifdef FEAT_MBYTE
!                       && su->su_badlen == (*mb_ptr2len)(su->su_badptr)
! #else
!                       && su->su_badlen == 1
! #endif
!                       )
                    c = WF_ONECAP;
                c |= flags;
  
--- 4542,4548 ----
                 * allcap and it's only one char long use onecap. */
                c = su->su_badflags;
                if ((c & WF_ALLCAP)
!                       && su->su_badlen == (*mb_ptr2len)(su->su_badptr))
                    c = WF_ONECAP;
                c |= flags;
  
***************
*** 4752,4762 ****
             * Try word split and/or compounding.
             */
            if ((sp->ts_fidx >= sp->ts_fidxtry || fword_ends)
- #ifdef FEAT_MBYTE
                    /* Don't split halfway a character. */
!                   && (!has_mbyte || sp->ts_tcharlen == 0)
! #endif
!                   )
            {
                int     try_compound;
                int     try_split;
--- 4664,4671 ----
             * Try word split and/or compounding.
             */
            if ((sp->ts_fidx >= sp->ts_fidxtry || fword_ends)
                    /* Don't split halfway a character. */
!                   && (!has_mbyte || sp->ts_tcharlen == 0))
            {
                int     try_compound;
                int     try_split;
***************
*** 4789,4800 ****
                        && ((unsigned)flags >> 24) != 0
                        && sp->ts_twordlen - sp->ts_splitoff
                                                       >= slang->sl_compminlen
- #ifdef FEAT_MBYTE
                        && (!has_mbyte
                            || slang->sl_compminlen == 0
                            || mb_charlen(tword + sp->ts_splitoff)
                                                      >= slang->sl_compminlen)
- #endif
                        && (slang->sl_compsylmax < MAXWLEN
                            || sp->ts_complen + 1 - sp->ts_compsplit
                                                          < slang->sl_compmax)
--- 4698,4707 ----
***************
*** 4921,4931 ****
  
                        /* set su->su_badflags to the caps type at this
                         * position */
- #ifdef FEAT_MBYTE
                        if (has_mbyte)
                            n = nofold_len(fword, sp->ts_fidx, su->su_badptr);
                        else
- #endif
                            n = sp->ts_fidx;
                        su->su_badflags = badword_captype(su->su_badptr + n,
                                               su->su_badptr + su->su_badlen);
--- 4828,4836 ----
***************
*** 4963,4973 ****
        case STATE_ENDNUL:
            /* Past the NUL bytes in the node. */
            su->su_badflags = sp->ts_save_badflags;
!           if (fword[sp->ts_fidx] == NUL
! #ifdef FEAT_MBYTE
!                   && sp->ts_tcharlen == 0
! #endif
!              )
            {
                /* The badword ends, can't use STATE_PLAIN. */
                PROF_STORE(sp->ts_state)
--- 4868,4874 ----
        case STATE_ENDNUL:
            /* Past the NUL bytes in the node. */
            su->su_badflags = sp->ts_save_badflags;
!           if (fword[sp->ts_fidx] == NUL && sp->ts_tcharlen == 0)
            {
                /* The badword ends, can't use STATE_PLAIN. */
                PROF_STORE(sp->ts_state)
***************
*** 5005,5014 ****
                 * just deleted this byte, accepting it is always cheaper than
                 * delete + substitute. */
                if (c == fword[sp->ts_fidx]
! #ifdef FEAT_MBYTE
!                       || (sp->ts_tcharlen > 0 && sp->ts_isdiff != DIFF_NONE)
! #endif
!                       )
                    newscore = 0;
                else
                    newscore = SCORE_SUBST;
--- 4906,4912 ----
                 * just deleted this byte, accepting it is always cheaper than
                 * delete + substitute. */
                if (c == fword[sp->ts_fidx]
!                       || (sp->ts_tcharlen > 0 && sp->ts_isdiff != DIFF_NONE))
                    newscore = 0;
                else
                    newscore = SCORE_SUBST;
***************
*** 5034,5040 ****
                    ++sp->ts_fidx;
                    tword[sp->ts_twordlen++] = c;
                    sp->ts_arridx = idxs[arridx];
- #ifdef FEAT_MBYTE
                    if (newscore == SCORE_SUBST)
                        sp->ts_isdiff = DIFF_YES;
                    if (has_mbyte)
--- 4932,4937 ----
***************
*** 5122,5128 ****
                        }
                    }
                    else
- #endif
                    {
                        /* If we found a similar char adjust the score.
                         * We do this after calling go_deeper() because
--- 5019,5024 ----
***************
*** 5139,5145 ****
            break;
  
        case STATE_DEL:
- #ifdef FEAT_MBYTE
            /* When past the first byte of a multi-byte char don't try
             * delete/insert/swap a character. */
            if (has_mbyte && sp->ts_tcharlen > 0)
--- 5035,5040 ----
***************
*** 5148,5154 ****
                sp->ts_state = STATE_FINAL;
                break;
            }
- #endif
            /*
             * Try skipping one character in the bad word (delete it).
             */
--- 5043,5048 ----
***************
*** 5181,5187 ****
                 * score if the same character is following "nn" -> "n".  It's
                 * a bit illogical for soundfold tree but it does give better
                 * results. */
- #ifdef FEAT_MBYTE
                if (has_mbyte)
                {
                    c = mb_ptr2char(fword + sp->ts_fidx);
--- 5075,5080 ----
***************
*** 5192,5198 ****
                        stack[depth].ts_score -= SCORE_DEL - SCORE_DELDUP;
                }
                else
- #endif
                {
                    ++stack[depth].ts_fidx;
                    if (fword[sp->ts_fidx] == fword[sp->ts_fidx + 1])
--- 5085,5090 ----
***************
*** 5274,5280 ****
                sp = &stack[depth];
                tword[sp->ts_twordlen++] = c;
                sp->ts_arridx = idxs[n];
- #ifdef FEAT_MBYTE
                if (has_mbyte)
                {
                    fl = MB_BYTE2LEN(c);
--- 5166,5171 ----
***************
*** 5291,5297 ****
                else
                    fl = 1;
                if (fl == 1)
- #endif
                {
                    /* If the previous character was the same, thus doubling a
                     * character, give a bonus to the score.  Also for
--- 5182,5187 ----
***************
*** 5329,5335 ****
                break;
            }
  
- #ifdef FEAT_MBYTE
            if (has_mbyte)
            {
                n = MB_CPTR2LEN(p);
--- 5219,5224 ----
***************
*** 5342,5348 ****
                    c2 = mb_ptr2char(p + n);
            }
            else
- #endif
            {
                if (p[1] == NUL)
                    c2 = NUL;
--- 5231,5236 ----
***************
*** 5379,5385 ****
                PROF_STORE(sp->ts_state)
                sp->ts_state = STATE_UNSWAP;
                ++depth;
- #ifdef FEAT_MBYTE
                if (has_mbyte)
                {
                    fl = mb_char2len(c2);
--- 5267,5272 ----
***************
*** 5388,5394 ****
                    stack[depth].ts_fidxtry = sp->ts_fidx + n + fl;
                }
                else
- #endif
                {
                    p[0] = c2;
                    p[1] = c;
--- 5275,5280 ----
***************
*** 5406,5412 ****
        case STATE_UNSWAP:
            /* Undo the STATE_SWAP swap: "21" -> "12". */
            p = fword + sp->ts_fidx;
- #ifdef FEAT_MBYTE
            if (has_mbyte)
            {
                n = MB_PTR2LEN(p);
--- 5292,5297 ----
***************
*** 5415,5421 ****
                mb_char2bytes(c, p);
            }
            else
- #endif
            {
                c = *p;
                *p = p[1];
--- 5300,5305 ----
***************
*** 5427,5433 ****
            /* Swap two bytes, skipping one: "123" -> "321".  We change
             * "fword" here, it's changed back afterwards at STATE_UNSWAP3. */
            p = fword + sp->ts_fidx;
- #ifdef FEAT_MBYTE
            if (has_mbyte)
            {
                n = MB_CPTR2LEN(p);
--- 5311,5316 ----
***************
*** 5440,5446 ****
                    c3 = mb_ptr2char(p + n + fl);
            }
            else
- #endif
            {
                c = *p;
                c2 = p[1];
--- 5323,5328 ----
***************
*** 5473,5479 ****
                PROF_STORE(sp->ts_state)
                sp->ts_state = STATE_UNSWAP3;
                ++depth;
- #ifdef FEAT_MBYTE
                if (has_mbyte)
                {
                    tl = mb_char2len(c3);
--- 5355,5360 ----
***************
*** 5483,5489 ****
                    stack[depth].ts_fidxtry = sp->ts_fidx + n + fl + tl;
                }
                else
- #endif
                {
                    p[0] = p[2];
                    p[2] = c;
--- 5364,5369 ----
***************
*** 5500,5506 ****
        case STATE_UNSWAP3:
            /* Undo STATE_SWAP3: "321" -> "123" */
            p = fword + sp->ts_fidx;
- #ifdef FEAT_MBYTE
            if (has_mbyte)
            {
                n = MB_PTR2LEN(p);
--- 5380,5385 ----
***************
*** 5514,5520 ****
                p = p + tl;
            }
            else
- #endif
            {
                c = *p;
                *p = p[2];
--- 5393,5398 ----
***************
*** 5546,5552 ****
                sp->ts_state = STATE_UNROT3L;
                ++depth;
                p = fword + sp->ts_fidx;
- #ifdef FEAT_MBYTE
                if (has_mbyte)
                {
                    n = MB_CPTR2LEN(p);
--- 5424,5429 ----
***************
*** 5558,5564 ****
                    stack[depth].ts_fidxtry = sp->ts_fidx + n + fl;
                }
                else
- #endif
                {
                    c = *p;
                    *p = p[1];
--- 5435,5440 ----
***************
*** 5577,5583 ****
        case STATE_UNROT3L:
            /* Undo ROT3L: "231" -> "123" */
            p = fword + sp->ts_fidx;
- #ifdef FEAT_MBYTE
            if (has_mbyte)
            {
                n = MB_PTR2LEN(p);
--- 5453,5458 ----
***************
*** 5588,5594 ****
                mb_char2bytes(c, p);
            }
            else
- #endif
            {
                c = p[2];
                p[2] = p[1];
--- 5463,5468 ----
***************
*** 5611,5617 ****
                sp->ts_state = STATE_UNROT3R;
                ++depth;
                p = fword + sp->ts_fidx;
- #ifdef FEAT_MBYTE
                if (has_mbyte)
                {
                    n = MB_CPTR2LEN(p);
--- 5485,5490 ----
***************
*** 5623,5629 ****
                    stack[depth].ts_fidxtry = sp->ts_fidx + n + tl;
                }
                else
- #endif
                {
                    c = p[2];
                    p[2] = p[1];
--- 5496,5501 ----
***************
*** 5642,5648 ****
        case STATE_UNROT3R:
            /* Undo ROT3R: "312" -> "123" */
            p = fword + sp->ts_fidx;
- #ifdef FEAT_MBYTE
            if (has_mbyte)
            {
                c = mb_ptr2char(p);
--- 5514,5519 ----
***************
*** 5653,5659 ****
                mb_char2bytes(c, p + n);
            }
            else
- #endif
            {
                c = *p;
                *p = p[1];
--- 5524,5529 ----
***************
*** 5738,5746 ****
                    }
                    mch_memmove(p, ftp->ft_to, tl);
                    stack[depth].ts_fidxtry = sp->ts_fidx + tl;
- #ifdef FEAT_MBYTE
                    stack[depth].ts_tcharlen = 0;
- #endif
                    break;
                }
            }
--- 5608,5614 ----
***************
*** 5809,5815 ****
      stack[depth + 1].ts_flags = 0;
  }
  
- #ifdef FEAT_MBYTE
  /*
   * Case-folding may change the number of bytes: Count nr of chars in
   * fword[flen] and return the byte length of that many chars in "word".
--- 5677,5682 ----
***************
*** 5826,5832 ****
        --i;
      return (int)(p - word);
  }
- #endif
  
  /*
   * "fword" is a good word with case folded.  Find the matching keep-case
--- 5693,5698 ----
***************
*** 5905,5918 ****
             * round[depth] == 1: Try using the folded-case character.
             * round[depth] == 2: Try using the upper-case character.
             */
- #ifdef FEAT_MBYTE
            if (has_mbyte)
            {
                flen = MB_CPTR2LEN(fword + fwordidx[depth]);
                ulen = MB_CPTR2LEN(uword + uwordidx[depth]);
            }
            else
- #endif
                ulen = flen = 1;
            if (round[depth] == 1)
            {
--- 5771,5782 ----
***************
*** 6627,6633 ****
  similar_chars(slang_T *slang, int c1, int c2)
  {
      int               m1, m2;
- #ifdef FEAT_MBYTE
      char_u    buf[MB_MAXBYTES + 1];
      hashitem_T  *hi;
  
--- 6491,6496 ----
***************
*** 6641,6653 ****
            m1 = mb_ptr2char(hi->hi_key + STRLEN(hi->hi_key) + 1);
      }
      else
- #endif
        m1 = slang->sl_map_array[c1];
      if (m1 == 0)
        return FALSE;
  
  
- #ifdef FEAT_MBYTE
      if (c2 >= 256)
      {
        buf[mb_char2bytes(c2, buf)] = 0;
--- 6504,6514 ----
***************
*** 6658,6664 ****
            m2 = mb_ptr2char(hi->hi_key + STRLEN(hi->hi_key) + 1);
      }
      else
- #endif
        m2 = slang->sl_map_array[c2];
  
      return m1 == m2;
--- 6519,6524 ----
***************
*** 6700,6714 ****
            break;
        MB_PTR_BACK(goodword, pgood);
        MB_PTR_BACK(su->su_badptr, pbad);
- #ifdef FEAT_MBYTE
        if (has_mbyte)
        {
            if (mb_ptr2char(pgood) != mb_ptr2char(pbad))
                break;
        }
!       else
! #endif
!           if (*pgood != *pbad)
                break;
      }
  
--- 6560,6571 ----
            break;
        MB_PTR_BACK(goodword, pgood);
        MB_PTR_BACK(su->su_badptr, pbad);
        if (has_mbyte)
        {
            if (mb_ptr2char(pgood) != mb_ptr2char(pbad))
                break;
        }
!       else if (*pgood != *pbad)
                break;
      }
  
***************
*** 7028,7038 ****
            word = fword;
        }
  
- #ifdef FEAT_MBYTE
        if (has_mbyte)
            spell_soundfold_wsal(slang, word, res);
        else
- #endif
            spell_soundfold_sal(slang, word, res);
      }
  }
--- 6885,6893 ----
***************
*** 7048,7054 ****
      int               ri = 0;
      int               c;
  
- #ifdef FEAT_MBYTE
      if (has_mbyte)
      {
        int     prevc = 0;
--- 6903,6908 ----
***************
*** 7095,7101 ****
        }
      }
      else
- #endif
      {
        /* The sl_sal_first[] table contains the translation. */
        for (s = inword; (c = *s) != NUL; ++s)
--- 6949,6954 ----
***************
*** 7385,7391 ****
      res[reslen] = NUL;
  }
  
- #ifdef FEAT_MBYTE
  /*
   * Turn "inword" into its sound-a-like equivalent in "res[MAXWLEN]".
   * Multi-byte version of spell_soundfold().
--- 7238,7243 ----
***************
*** 7698,7704 ****
      }
      res[l] = NUL;
  }
- #endif
  
  /*
   * Compute a score for two sound-a-like words.
--- 7550,7555 ----
***************
*** 7953,7959 ****
      int               t;
      int               bc, gc;
      int               pbc, pgc;
- #ifdef FEAT_MBYTE
      char_u    *p;
      int               wbadword[MAXWLEN];
      int               wgoodword[MAXWLEN];
--- 7804,7809 ----
***************
*** 7970,7976 ****
        wgoodword[goodlen++] = 0;
      }
      else
- #endif
      {
        badlen = (int)STRLEN(badword) + 1;
        goodlen = (int)STRLEN(goodword) + 1;
--- 7820,7825 ----
***************
*** 7992,8005 ****
        CNT(i, 0) = CNT(i - 1, 0) + SCORE_DEL;
        for (j = 1; j <= goodlen; ++j)
        {
- #ifdef FEAT_MBYTE
            if (has_mbyte)
            {
                bc = wbadword[i - 1];
                gc = wgoodword[j - 1];
            }
            else
- #endif
            {
                bc = badword[i - 1];
                gc = goodword[j - 1];
--- 7841,7852 ----
***************
*** 8024,8037 ****
  
                if (i > 1 && j > 1)
                {
- #ifdef FEAT_MBYTE
                    if (has_mbyte)
                    {
                        pbc = wbadword[i - 2];
                        pgc = wgoodword[j - 2];
                    }
                    else
- #endif
                    {
                        pbc = badword[i - 2];
                        pgc = goodword[j - 2];
--- 7871,7882 ----
***************
*** 8090,8101 ****
      int                   minscore;
      int                   round;
  
- #ifdef FEAT_MBYTE
      /* Multi-byte characters require a bit more work, use a different function
       * to avoid testing "has_mbyte" quite often. */
      if (has_mbyte)
        return spell_edit_score_limit_w(slang, badword, goodword, limit);
- #endif
  
      /*
       * The idea is to go from start to end over the words.  So long as
--- 7935,7944 ----
***************
*** 8250,8256 ****
      return minscore;
  }
  
- #ifdef FEAT_MBYTE
  /*
   * Multi-byte version of spell_edit_score_limit().
   * Keep it in sync with the above!
--- 8093,8098 ----
***************
*** 8439,8445 ****
        return SCORE_MAXMAX;
      return minscore;
  }
- #endif
  
  /*
   * ":spellinfo"
--- 8281,8286 ----
***************
*** 8554,8566 ****
            n = captype(pat, NULL);
            if (n == WF_ONECAP)
                dumpflags |= DUMPFLAG_ONECAP;
!           else if (n == WF_ALLCAP
! #ifdef FEAT_MBYTE
!                   && (int)STRLEN(pat) > mb_ptr2len(pat)
! #else
!                   && (int)STRLEN(pat) > 1
! #endif
!                   )
                dumpflags |= DUMPFLAG_ALLCAP;
        }
      }
--- 8395,8401 ----
            n = captype(pat, NULL);
            if (n == WF_ONECAP)
                dumpflags |= DUMPFLAG_ONECAP;
!           else if (n == WF_ALLCAP && (int)STRLEN(pat) > mb_ptr2len(pat))
                dumpflags |= DUMPFLAG_ALLCAP;
        }
      }
*** ../vim-8.1.0809/src/spellfile.c     2019-01-19 17:43:03.429449066 +0100
--- src/spellfile.c     2019-01-24 16:49:05.504615445 +0100
***************
*** 306,314 ****
  static int read_compound(FILE *fd, slang_T *slang, int len);
  static int set_sofo(slang_T *lp, char_u *from, char_u *to);
  static void set_sal_first(slang_T *lp);
- #ifdef FEAT_MBYTE
  static int *mb_str2wide(char_u *s);
- #endif
  static int spell_read_tree(FILE *fd, char_u **bytsp, idx_T **idxsp, int 
prefixtree, int prefixcnt);
  static idx_T read_tree_node(FILE *fd, char_u *byts, idx_T *idxs, int maxidx, 
idx_T startidx, int prefixtree, int maxprefcondnr);
  static void set_spell_charflags(char_u *flags, int cnt, char_u *upp);
--- 306,312 ----
***************
*** 1062,1068 ****
            return ccnt;
        }
  
- #ifdef FEAT_MBYTE
        if (has_mbyte)
        {
            /* convert the multi-byte strings to wide char strings */
--- 1060,1065 ----
***************
*** 1088,1094 ****
                return SP_OTHERERROR;
            }
        }
- #endif
      }
  
      if (gap->ga_len > 0)
--- 1085,1090 ----
***************
*** 1104,1110 ****
        smp->sm_oneof = NULL;
        smp->sm_rules = p;
        smp->sm_to = NULL;
- #ifdef FEAT_MBYTE
        if (has_mbyte)
        {
            smp->sm_lead_w = mb_str2wide(smp->sm_lead);
--- 1100,1105 ----
***************
*** 1112,1118 ****
            smp->sm_oneof_w = NULL;
            smp->sm_to_w = NULL;
        }
- #endif
        ++gap->ga_len;
      }
  
--- 1107,1112 ----
***************
*** 1268,1277 ****
       * Inserting backslashes may double the length, "^\(\)$<Nul>" is 7 bytes.
       * Conversion to utf-8 may double the size. */
      c = todo * 2 + 7;
- #ifdef FEAT_MBYTE
      if (enc_utf8)
        c += todo * 2;
- #endif
      pat = alloc((unsigned)c);
      if (pat == NULL)
        return SP_OTHERERROR;
--- 1262,1269 ----
***************
*** 1367,1377 ****
        {
            if (c == '?' || c == '+' || c == '~')
                *pp++ = '\\';       /* "a?" becomes "a\?", "a+" becomes "a\+" */
- #ifdef FEAT_MBYTE
            if (enc_utf8)
                pp += mb_char2bytes(c, pp);
            else
- #endif
                *pp++ = c;
        }
      }
--- 1359,1367 ----
***************
*** 1401,1407 ****
  {
      int               i;
  
- #ifdef FEAT_MBYTE
      garray_T  *gap;
      char_u    *s;
      char_u    *p;
--- 1391,1396 ----
***************
*** 1468,1474 ****
        }
      }
      else
- #endif
      {
        /* mapping bytes to bytes is done in sl_sal_first[] */
        if (STRLEN(from) != STRLEN(to))
--- 1457,1462 ----
***************
*** 1500,1518 ****
      smp = (salitem_T *)gap->ga_data;
      for (i = 0; i < gap->ga_len; ++i)
      {
- #ifdef FEAT_MBYTE
        if (has_mbyte)
            /* Use the lowest byte of the first character.  For latin1 it's
             * the character, for other encodings it should differ for most
             * characters. */
            c = *smp[i].sm_lead_w & 0xff;
        else
- #endif
            c = *smp[i].sm_lead;
        if (sfirst[c] == -1)
        {
            sfirst[c] = i;
- #ifdef FEAT_MBYTE
            if (has_mbyte)
            {
                int             n;
--- 1488,1503 ----
***************
*** 1540,1551 ****
                        smp[i] = tsal;
                    }
            }
- #endif
        }
      }
  }
  
- #ifdef FEAT_MBYTE
  /*
   * Turn a multi-byte string into a wide character string.
   * Return it in allocated memory (NULL for out-of-memory)
--- 1525,1534 ----
***************
*** 1566,1572 ****
      }
      return res;
  }
- #endif
  
  /*
   * Read a tree from the .spl or .sug file.
--- 1549,1554 ----
***************
*** 1820,1830 ****
      char      ae_comppermit;  /* COMPOUNDPERMITFLAG found */
  };
  
! #ifdef FEAT_MBYTE
! # define AH_KEY_LEN 17                /* 2 x 8 bytes + NUL */
! #else
! # define AH_KEY_LEN 7         /* 6 digits + NUL */
! #endif
  
  /* Affix header from ".aff" file.  Used for af_pref and af_suff. */
  typedef struct affheader_S
--- 1802,1808 ----
      char      ae_comppermit;  /* COMPOUNDPERMITFLAG found */
  };
  
! #define AH_KEY_LEN 17         /* 2 x 8 bytes + NUL */
  
  /* Affix header from ".aff" file.  Used for af_pref and af_suff. */
  typedef struct affheader_S
***************
*** 2271,2277 ****
  
        /* Convert from "SET" to 'encoding' when needed. */
        vim_free(pc);
- #ifdef FEAT_MBYTE
        if (spin->si_conv.vc_type != CONV_NONE)
        {
            pc = string_convert(&spin->si_conv, rline, NULL);
--- 2249,2254 ----
***************
*** 2284,2290 ****
            line = pc;
        }
        else
- #endif
        {
            pc = NULL;
            line = rline;
--- 2261,2266 ----
***************
*** 2319,2325 ****
        {
            if (is_aff_rule(items, itemcnt, "SET", 2) && aff->af_enc == NULL)
            {
- #ifdef FEAT_MBYTE
                /* Setup for conversion from "ENC" to 'encoding'. */
                aff->af_enc = enc_canonize(items[1]);
                if (aff->af_enc != NULL && !spin->si_ascii
--- 2295,2300 ----
***************
*** 2328,2336 ****
                    smsg(_("Conversion in %s not supported: from %s to %s"),
                                               fname, aff->af_enc, p_enc);
                spin->si_conv.vc_fail = TRUE;
- #else
-                   smsg(_("Conversion in %s not supported"), fname);
- #endif
            }
            else if (is_aff_rule(items, itemcnt, "FLAG", 2)
                                              && aff->af_flagtype == AFT_CHAR)
--- 2303,2308 ----
***************
*** 2772,2784 ****
                         * be empty or start with the same letter. */
                        if (aff_entry->ae_chop != NULL
                                && aff_entry->ae_add != NULL
- #ifdef FEAT_MBYTE
                                && aff_entry->ae_chop[(*mb_ptr2len)(
!                                                  aff_entry->ae_chop)] == NUL
! #else
!                               && aff_entry->ae_chop[1] == NUL
! #endif
!                               )
                        {
                            int         c, c_up;
  
--- 2744,2751 ----
                         * be empty or start with the same letter. */
                        if (aff_entry->ae_chop != NULL
                                && aff_entry->ae_add != NULL
                                && aff_entry->ae_chop[(*mb_ptr2len)(
!                                                  aff_entry->ae_chop)] == NUL)
                        {
                            int         c, c_up;
  
***************
*** 2803,2809 ****
                                    if (aff_entry->ae_cond != NULL)
                                    {
                                        char_u  buf[MAXLINELEN];
! #ifdef FEAT_MBYTE
                                        if (has_mbyte)
                                        {
                                            onecap_copy(items[4], buf, TRUE);
--- 2770,2776 ----
                                    if (aff_entry->ae_cond != NULL)
                                    {
                                        char_u  buf[MAXLINELEN];
! 
                                        if (has_mbyte)
                                        {
                                            onecap_copy(items[4], buf, TRUE);
***************
*** 2811,2817 ****
                                                                   spin, buf);
                                        }
                                        else
- #endif
                                            *aff_entry->ae_cond = c_up;
                                        if (aff_entry->ae_cond != NULL)
                                        {
--- 2778,2783 ----
***************
*** 2947,2957 ****
                    /* Check that every character appears only once. */
                    for (p = items[1]; *p != NUL; )
                    {
- #ifdef FEAT_MBYTE
                        c = mb_ptr2char_adv(&p);
- #else
-                       c = *p++;
- #endif
                        if ((spin->si_map.ga_len > 0
                                    && vim_strchr(spin->si_map.ga_data, c)
                                                                      != NULL)
--- 2913,2919 ----
***************
*** 3034,3044 ****
         * Don't write one for utf-8 either, we use utf_*() and
         * mb_get_class(), the list of chars in the file will be incomplete.
         */
!       if (!spin->si_ascii
! #ifdef FEAT_MBYTE
!               && !enc_utf8
! #endif
!               )
        {
            if (fol == NULL || low == NULL || upp == NULL)
                smsg(_("Missing FOL/LOW/UPP line in %s"), fname);
--- 2996,3002 ----
         * Don't write one for utf-8 either, we use utf_*() and
         * mb_get_class(), the list of chars in the file will be incomplete.
         */
!       if (!spin->si_ascii && !enc_utf8)
        {
            if (fol == NULL || low == NULL || upp == NULL)
                smsg(_("Missing FOL/LOW/UPP line in %s"), fname);
***************
*** 3243,3263 ****
      }
      else
      {
- #ifdef FEAT_MBYTE
        res = mb_ptr2char_adv(pp);
- #else
-       res = *(*pp)++;
- #endif
        if (flagtype == AFT_LONG || (flagtype == AFT_CAPLONG
                                                 && res >= 'A' && res <= 'Z'))
        {
            if (**pp == NUL)
                return 0;
- #ifdef FEAT_MBYTE
            res = mb_ptr2char_adv(pp) + (res << 16);
- #else
-           res = *(*pp)++ + (res << 16);
- #endif
        }
      }
      return res;
--- 3201,3213 ----
***************
*** 3381,3398 ****
        case AFT_LONG:
            for (p = afflist; *p != NUL; )
            {
- #ifdef FEAT_MBYTE
                n = mb_ptr2char_adv(&p);
- #else
-               n = *p++;
- #endif
                if ((flagtype == AFT_LONG || (n >= 'A' && n <= 'Z'))
                                                                 && *p != NUL)
- #ifdef FEAT_MBYTE
                    n = mb_ptr2char_adv(&p) + (n << 16);
- #else
-                   n = *p++ + (n << 16);
- #endif
                if (n == flag)
                    return TRUE;
            }
--- 3331,3340 ----
***************
*** 3589,3595 ****
            continue;   /* empty line */
        line[l] = NUL;
  
- #ifdef FEAT_MBYTE
        /* Convert from "SET" to 'encoding' when needed. */
        if (spin->si_conv.vc_type != CONV_NONE)
        {
--- 3531,3536 ----
***************
*** 3603,3609 ****
            w = pc;
        }
        else
- #endif
        {
            pc = NULL;
            w = line;
--- 3544,3549 ----
***************
*** 3930,3936 ****
                            if (ae->ae_chop != NULL)
                            {
                                /* Skip chop string. */
- #ifdef FEAT_MBYTE
                                if (has_mbyte)
                                {
                                    i = mb_charlen(ae->ae_chop);
--- 3870,3875 ----
***************
*** 3938,3944 ****
                                        MB_PTR_ADV(p);
                                }
                                else
- #endif
                                    p += STRLEN(ae->ae_chop);
                            }
                            STRCAT(newword, p);
--- 3877,3882 ----
***************
*** 4162,4168 ****
  
        /* Convert from "/encoding={encoding}" to 'encoding' when needed. */
        vim_free(pc);
- #ifdef FEAT_MBYTE
        if (spin->si_conv.vc_type != CONV_NONE)
        {
            pc = string_convert(&spin->si_conv, rline, NULL);
--- 4100,4105 ----
***************
*** 4175,4181 ****
            line = pc;
        }
        else
- #endif
        {
            pc = NULL;
            line = rline;
--- 4112,4117 ----
***************
*** 4194,4200 ****
                                                       fname, lnum, line - 1);
                else
                {
- #ifdef FEAT_MBYTE
                    char_u      *enc;
  
                    /* Setup for conversion to 'encoding'. */
--- 4130,4135 ----
***************
*** 4207,4215 ****
                                                          fname, line, p_enc);
                    vim_free(enc);
                    spin->si_conv.vc_fail = TRUE;
- #else
-                   smsg(_("Conversion in %s not supported"), fname);
- #endif
                }
                continue;
            }
--- 4142,4147 ----
***************
*** 4981,4991 ****
        l = 0;
        for (i = 128; i < 256; ++i)
        {
- #ifdef FEAT_MBYTE
            if (has_mbyte)
                l += mb_char2bytes(spelltab.st_fold[i], folchars + l);
            else
- #endif
                folchars[l++] = spelltab.st_fold[i];
        }
        put_bytes(fd, (long_u)(1 + 128 + 2 + l), 4);    /* <sectionlen> */
--- 4913,4921 ----
***************
*** 6112,6121 ****
                    error = TRUE;
            }
  
- #ifdef FEAT_MBYTE
            /* Free any conversion stuff. */
            convert_setup(&spin.si_conv, NULL, NULL);
- #endif
        }
  
        if (spin.si_compflags != NULL && spin.si_nobreak)
--- 6042,6049 ----
***************
*** 6488,6502 ****
            emsg(_(e_affform));
            return FAIL;
        }
- #ifdef FEAT_MBYTE
        f = mb_ptr2char_adv(&pf);
        l = mb_ptr2char_adv(&pl);
        u = mb_ptr2char_adv(&pu);
! #else
!       f = *pf++;
!       l = *pl++;
!       u = *pu++;
! #endif
        /* Every character that appears is a word character. */
        if (f < 256)
            new_st.st_isw[f] = TRUE;
--- 6416,6425 ----
            emsg(_(e_affform));
            return FAIL;
        }
        f = mb_ptr2char_adv(&pf);
        l = mb_ptr2char_adv(&pl);
        u = mb_ptr2char_adv(&pu);
! 
        /* Every character that appears is a word character. */
        if (f < 256)
            new_st.st_isw[f] = TRUE;
***************
*** 6570,6580 ****
  
        if (*p != NUL)
        {
- #ifdef FEAT_MBYTE
            c = mb_ptr2char_adv(&p);
- #else
-           c = *p++;
- #endif
            new_st.st_fold[i + 128] = c;
            if (i + 128 != c && new_st.st_isu[i + 128] && c < 256)
                new_st.st_upper[c] = i + 128;
--- 6493,6499 ----
***************
*** 6675,6683 ****
      /* Init the array and hash tables empty. */
      for (i = 0; i < 256; ++i)
        lp->sl_map_array[i] = 0;
- #ifdef FEAT_MBYTE
      hash_init(&lp->sl_map_hash);
- #endif
  
      /*
       * The similar characters are stored separated with slashes:
--- 6594,6600 ----
***************
*** 6686,6696 ****
       */
      for (p = map; *p != NUL; )
      {
- #ifdef FEAT_MBYTE
        c = mb_cptr2char_adv(&p);
- #else
-       c = *p++;
- #endif
        if (c == '/')
            headc = 0;
        else
--- 6603,6609 ----
***************
*** 6698,6704 ****
            if (headc == 0)
                 headc = c;
  
- #ifdef FEAT_MBYTE
            /* Characters above 255 don't fit in sl_map_array[], put them in
             * the hash table.  Each entry is the char, a NUL the headchar and
             * a NUL. */
--- 6611,6616 ----
***************
*** 6730,6736 ****
                }
            }
            else
- #endif
                lp->sl_map_array[c] = headc;
        }
      }
--- 6642,6647 ----
*** ../vim-8.1.0809/src/syntax.c        2019-01-20 15:30:36.893328693 +0100
--- src/syntax.c        2019-01-24 16:51:52.891322038 +0100
***************
*** 1974,1985 ****
              if (vim_iswordp_buf(line + current_col, syn_buf)
                      && (current_col == 0
                          || !vim_iswordp_buf(line + current_col - 1
- #ifdef FEAT_MBYTE
                              - (has_mbyte
                                  ? (*mb_head_off)(line, line + current_col - 1)
!                                 : 0)
! #endif
!                              , syn_buf)))
              {
                syn_id = check_keyword_id(line, (int)current_col,
                                         &endcol, &flags, &next_list, cur_si,
--- 1974,1982 ----
              if (vim_iswordp_buf(line + current_col, syn_buf)
                      && (current_col == 0
                          || !vim_iswordp_buf(line + current_col - 1
                              - (has_mbyte
                                  ? (*mb_head_off)(line, line + current_col - 1)
!                                 : 0) , syn_buf)))
              {
                syn_id = check_keyword_id(line, (int)current_col,
                                         &endcol, &flags, &next_list, cur_si,
***************
*** 3355,3365 ****
      kwlen = 0;
      do
      {
- #ifdef FEAT_MBYTE
        if (has_mbyte)
            kwlen += (*mb_ptr2len)(kwp + kwlen);
        else
- #endif
            ++kwlen;
      }
      while (vim_iswordp_buf(kwp + kwlen, syn_buf));
--- 3352,3360 ----
***************
*** 4668,4684 ****
        }
        else if (flagtab[fidx].argtype == 11 && arg[5] == '=')
        {
- #ifdef FEAT_MBYTE
            /* cchar=? */
            if (has_mbyte)
            {
! # ifdef FEAT_CONCEAL
                *conceal_char = mb_ptr2char(arg + 6);
! # endif
                arg += mb_ptr2len(arg + 6) - 1;
            }
            else
- #endif
            {
  #ifdef FEAT_CONCEAL
                *conceal_char = arg[6];
--- 4663,4677 ----
        }
        else if (flagtab[fidx].argtype == 11 && arg[5] == '=')
        {
            /* cchar=? */
            if (has_mbyte)
            {
! #ifdef FEAT_CONCEAL
                *conceal_char = mb_ptr2char(arg + 6);
! #endif
                arg += mb_ptr2len(arg + 6) - 1;
            }
            else
            {
  #ifdef FEAT_CONCEAL
                *conceal_char = arg[6];
***************
*** 4948,4954 ****
                            kw = p + 1;         /* skip over the "]" */
                            break;
                        }
- #ifdef FEAT_MBYTE
                        if (has_mbyte)
                        {
                            int l = (*mb_ptr2len)(p + 1);
--- 4941,4946 ----
***************
*** 4957,4963 ****
                            p += l;
                        }
                        else
- #endif
                        {
                            p[0] = p[1];
                            ++p;
--- 4949,4954 ----
*** ../vim-8.1.0809/src/tag.c   2019-01-19 17:43:03.429449066 +0100
--- src/tag.c   2019-01-24 16:52:13.291152187 +0100
***************
*** 1349,1357 ****
  #endif
  
      pat_T     orgpat;                 /* holds unconverted pattern info */
- #ifdef FEAT_MBYTE
      vimconv_T vimconv;
- #endif
  
  #ifdef FEAT_TAG_BINS
      int               findall = (mincount == MAXCOL || mincount == TAG_MANY);
--- 1349,1355 ----
***************
*** 1387,1395 ****
  
      help_save = curbuf->b_help;
      orgpat.pat = pat;
- #ifdef FEAT_MBYTE
      vimconv.vc_type = CONV_NONE;
- #endif
  
      /*
       * Allocate memory for the buffers that are used
--- 1385,1391 ----
***************
*** 1725,1731 ****
            }
  line_read_in:
  
- #ifdef FEAT_MBYTE
            if (vimconv.vc_type != CONV_NONE)
            {
                char_u  *conv_line;
--- 1721,1726 ----
***************
*** 1752,1758 ****
                    }
                }
            }
- #endif
  
  
  #ifdef FEAT_EMACS_TAGS
--- 1747,1752 ----
***************
*** 1846,1852 ****
                    if (STRNCMP(lbuf, "!_TAG_FILE_SORTED\t", 18) == 0)
                        tag_file_sorted = lbuf[18];
  #endif
- #ifdef FEAT_MBYTE
                    if (STRNCMP(lbuf, "!_TAG_FILE_ENCODING\t", 20) == 0)
                    {
                        /* Prepare to convert every line from the specified
--- 1840,1845 ----
***************
*** 1856,1862 ****
                        *p = NUL;
                        convert_setup(&vimconv, lbuf + 20, p_enc);
                    }
- #endif
  
                    /* Read the next line.  Unrecognized flags are ignored. */
                    continue;
--- 1849,1854 ----
***************
*** 2472,2481 ****
            vim_free(incstack[incstack_idx].etag_fname);
        }
  #endif
- #ifdef FEAT_MBYTE
        if (vimconv.vc_type != CONV_NONE)
            convert_setup(&vimconv, NULL, NULL);
- #endif
  
  #ifdef FEAT_TAG_BINS
        tag_file_sorted = NUL;
--- 2464,2471 ----
*** ../vim-8.1.0809/src/term.c  2019-01-20 15:30:36.893328693 +0100
--- src/term.c  2019-01-24 16:53:05.898719068 +0100
***************
*** 2585,2591 ****
  }
  
  
- #if defined(FEAT_MBYTE) || defined(PROTO)
  /*
   * Sometimes a byte out of a multi-byte character is written with out_char().
   * To avoid flushing half of the character, call this function first.
--- 2585,2590 ----
***************
*** 2596,2602 ****
      if (enc_dbcs != 0 && out_pos >= OUT_SIZE - MB_MAXBYTES)
        out_flush();
  }
- #endif
  
  #ifdef FEAT_GUI
  /*
--- 2595,2600 ----
***************
*** 3620,3626 ****
      }
  }
  
- # if defined(FEAT_MBYTE) || defined(PROTO)
  /*
   * Check how the terminal treats ambiguous character width (UAX #11).
   * First, we move the cursor to (1, 0) and print a test ambiguous character
--- 3618,3623 ----
***************
*** 3666,3672 ****
         (void)vpeekc_nomap();
      }
  }
- # endif
  
  /*
   * Similar to requesting the version string: Request the terminal background
--- 3663,3668 ----
***************
*** 4606,4614 ****
            {
                int col = 0;
                int semicols = 0;
- #ifdef FEAT_MBYTE
                int row_char = NUL;
- #endif
  
                extra = 0;
                for (i = 2 + (tp[0] != CSI); i < len
--- 4602,4608 ----
***************
*** 4617,4625 ****
                    if (tp[i] == ';' && ++semicols == 1)
                    {
                        extra = i + 1;
- #ifdef FEAT_MBYTE
                        row_char = tp[i - 1];
- #endif
                    }
                if (i == len)
                {
--- 4611,4617 ----
***************
*** 4629,4635 ****
                if (extra > 0)
                    col = atoi((char *)tp + extra);
  
- #ifdef FEAT_MBYTE
                /* Eat it when it has 2 arguments and ends in 'R'. Also when
                 * u7_status is not "sent", it may be from a previous Vim that
                 * just exited.  But not for <S-F3>, it sends something
--- 4621,4626 ----
***************
*** 4672,4681 ****
                    set_vim_var_string(VV_TERMU7RESP, tp, slen);
  # endif
                }
-               else
- #endif
                /* eat it when at least one digit and ending in 'c' */
!               if (*T_CRV != NUL && i > 2 + (tp[0] != CSI) && tp[i] == 'c')
                {
                    int version = col;
  
--- 4663,4671 ----
                    set_vim_var_string(VV_TERMU7RESP, tp, slen);
  # endif
                }
                /* eat it when at least one digit and ending in 'c' */
!               else if (*T_CRV != NUL && i > 2 + (tp[0] != CSI)
!                                                              && tp[i] == 'c')
                {
                    int version = col;
  
***************
*** 5973,5983 ****
        if (key_name[0] == KS_KEY)
        {
            /* from ":set <M-b>=xx" */
- #ifdef FEAT_MBYTE
            if (has_mbyte)
                new_slen += (*mb_char2bytes)(key_name[1], string + new_slen);
            else
- #endif
                string[new_slen++] = key_name[1];
        }
        else if (new_slen == 0 && key_name[0] == KS_EXTRA
--- 5963,5971 ----
***************
*** 6257,6266 ****
            }
        }
  
- #ifdef FEAT_MBYTE
        /* skip multibyte char correctly */
        for (i = (*mb_ptr2len)(src); i > 0; --i)
- #endif
        {
            /*
             * If the character is K_SPECIAL, replace it with K_SPECIAL
--- 6245,6252 ----
*** ../vim-8.1.0809/src/ui.c    2019-01-20 15:30:36.897328669 +0100
--- src/ui.c    2019-01-24 16:56:27.013117974 +0100
***************
*** 40,46 ****
      /* Don't output anything in silent mode ("ex -s") unless 'verbose' set */
      if (!(silent_mode && p_verbose == 0))
      {
! #if defined(FEAT_MBYTE) && !defined(WIN3264)
        char_u  *tofree = NULL;
  
        if (output_conv.vc_type != CONV_NONE)
--- 40,46 ----
      /* Don't output anything in silent mode ("ex -s") unless 'verbose' set */
      if (!(silent_mode && p_verbose == 0))
      {
! #if !defined(WIN3264)
        char_u  *tofree = NULL;
  
        if (output_conv.vc_type != CONV_NONE)
***************
*** 54,63 ****
  
        mch_write(s, len);
  
! #if defined(FEAT_MBYTE) && !defined(WIN3264)
        if (output_conv.vc_type != CONV_NONE)
            vim_free(tofree);
! #endif
      }
  #endif
  }
--- 54,63 ----
  
        mch_write(s, len);
  
! # if !defined(WIN3264)
        if (output_conv.vc_type != CONV_NONE)
            vim_free(tofree);
! # endif
      }
  #endif
  }
***************
*** 516,525 ****
        {
            start = VIsual;
            end = curwin->w_cursor;
- #ifdef FEAT_MBYTE
            if (has_mbyte)
                end.col += (*mb_ptr2len)(ml_get_cursor()) - 1;
- #endif
        }
        else
        {
--- 516,523 ----
***************
*** 821,829 ****
  
      row = check_row(row);
      col = check_col(col);
- #ifdef FEAT_MBYTE
      col = mb_fix_col(col, row);
- #endif
  
      cb->start.lnum  = row;
      cb->start.col   = col;
--- 819,825 ----
***************
*** 927,935 ****
  
      row = check_row(row);
      col = check_col(col);
- #ifdef FEAT_MBYTE
      col = mb_fix_col(col, row);
- #endif
  
      if (col == (int)cb->prev.col && row == cb->prev.lnum && !repeated_click)
        return;
--- 923,929 ----
***************
*** 995,1015 ****
                            cb->origin_start_col, row, (int)Columns);
                else
                {
- #ifdef FEAT_MBYTE
                    if (has_mbyte && mb_lefthalve(row, col))
                        slen = 2;
- #endif
                    clip_update_modeless_selection(cb, cb->origin_row,
                            cb->origin_start_col, row, col + slen);
                }
            }
            else
            {
- #ifdef FEAT_MBYTE
                if (has_mbyte
                        && mb_lefthalve(cb->origin_row, cb->origin_start_col))
                    slen = 2;
- #endif
                if (col >= (int)cb->word_end_col)
                    clip_update_modeless_selection(cb, row, cb->word_end_col,
                            cb->origin_row, cb->origin_start_col + slen);
--- 989,1005 ----
***************
*** 1243,1251 ****
      int               line_end_col;
      int               add_newline_flag = FALSE;
      int               len;
- #ifdef FEAT_MBYTE
      char_u    *p;
- #endif
      int               row1 = clip_star.start.lnum;
      int               col1 = clip_star.start.col;
      int               row2 = clip_star.end.lnum;
--- 1233,1239 ----
***************
*** 1267,1289 ****
      {
        row = col1; col1 = col2; col2 = row;
      }
- #ifdef FEAT_MBYTE
      /* correct starting point for being on right halve of double-wide char */
      p = ScreenLines + LineOffset[row1];
      if (enc_dbcs != 0)
        col1 -= (*mb_head_off)(p, p + col1);
      else if (enc_utf8 && p[col1] == 0)
        --col1;
- #endif
  
      /* Create a temporary buffer for storing the text */
      len = (row2 - row1 + 1) * Columns + 1;
- #ifdef FEAT_MBYTE
      if (enc_dbcs != 0)
        len *= 2;       /* max. 2 bytes per display cell */
      else if (enc_utf8)
        len *= MB_MAXBYTES;
- #endif
      buffer = lalloc((long_u)len, TRUE);
      if (buffer == NULL)           /* out of memory */
        return;
--- 1255,1273 ----
***************
*** 1322,1328 ****
  
        if (row < screen_Rows && end_col <= screen_Columns)
        {
- #ifdef FEAT_MBYTE
            if (enc_dbcs != 0)
            {
                int     i;
--- 1306,1311 ----
***************
*** 1373,1379 ****
                }
            }
            else
- #endif
            {
                STRNCPY(bufp, ScreenLines + LineOffset[row] + start_col,
                                                         end_col - start_col);
--- 1356,1361 ----
***************
*** 1421,1471 ****
      int               start_class;
      int               temp_col;
      char_u    *p;
- #ifdef FEAT_MBYTE
      int               mboff;
- #endif
  
      if (row >= screen_Rows || col >= screen_Columns || ScreenLines == NULL)
        return;
  
      p = ScreenLines + LineOffset[row];
- #ifdef FEAT_MBYTE
      /* Correct for starting in the right halve of a double-wide char */
      if (enc_dbcs != 0)
        col -= dbcs_screen_head_off(p, p + col);
      else if (enc_utf8 && p[col] == 0)
        --col;
- #endif
      start_class = CHAR_CLASS(p[col]);
  
      temp_col = col;
      for ( ; temp_col > 0; temp_col--)
- #ifdef FEAT_MBYTE
        if (enc_dbcs != 0
                   && (mboff = dbcs_screen_head_off(p, p + temp_col - 1)) > 0)
            temp_col -= mboff;
!       else
! #endif
!       if (CHAR_CLASS(p[temp_col - 1]) != start_class
! #ifdef FEAT_MBYTE
!               && !(enc_utf8 && p[temp_col - 1] == 0)
! #endif
!               )
            break;
      cb->word_start_col = temp_col;
  
      temp_col = col;
      for ( ; temp_col < screen_Columns; temp_col++)
- #ifdef FEAT_MBYTE
        if (enc_dbcs != 0 && dbcs_ptr2cells(p + temp_col) == 2)
            ++temp_col;
!       else
! #endif
!       if (CHAR_CLASS(p[temp_col]) != start_class
! #ifdef FEAT_MBYTE
!               && !(enc_utf8 && p[temp_col] == 0)
! #endif
!               )
            break;
      cb->word_end_col = temp_col;
  }
--- 1403,1437 ----
      int               start_class;
      int               temp_col;
      char_u    *p;
      int               mboff;
  
      if (row >= screen_Rows || col >= screen_Columns || ScreenLines == NULL)
        return;
  
      p = ScreenLines + LineOffset[row];
      /* Correct for starting in the right halve of a double-wide char */
      if (enc_dbcs != 0)
        col -= dbcs_screen_head_off(p, p + col);
      else if (enc_utf8 && p[col] == 0)
        --col;
      start_class = CHAR_CLASS(p[col]);
  
      temp_col = col;
      for ( ; temp_col > 0; temp_col--)
        if (enc_dbcs != 0
                   && (mboff = dbcs_screen_head_off(p, p + temp_col - 1)) > 0)
            temp_col -= mboff;
!       else if (CHAR_CLASS(p[temp_col - 1]) != start_class
!               && !(enc_utf8 && p[temp_col - 1] == 0))
            break;
      cb->word_start_col = temp_col;
  
      temp_col = col;
      for ( ; temp_col < screen_Columns; temp_col++)
        if (enc_dbcs != 0 && dbcs_ptr2cells(p + temp_col) == 2)
            ++temp_col;
!       else if (CHAR_CLASS(p[temp_col]) != start_class
!               && !(enc_utf8 && p[temp_col] == 0))
            break;
      cb->word_end_col = temp_col;
  }
***************
*** 1820,1830 ****
      int               len;
      int               try;
      static int        did_read_something = FALSE;
- # ifdef FEAT_MBYTE
      static char_u *rest = NULL;           /* unconverted rest of previous 
read */
      static int        restlen = 0;
      int               unconverted;
- # endif
  #endif
  
  #ifdef FEAT_GUI
--- 1786,1794 ----
***************
*** 1860,1866 ****
      inbufcount = 0;
  # else
  
- #  ifdef FEAT_MBYTE
      if (rest != NULL)
      {
        /* Use remainder of previous call, starts with an invalid character
--- 1824,1829 ----
***************
*** 1881,1896 ****
      }
      else
        unconverted = 0;
- #  endif
  
      len = 0;  /* to avoid gcc warning */
      for (try = 0; try < 100; ++try)
      {
        size_t readlen = (size_t)((INBUFLEN - inbufcount)
! #  ifdef FEAT_MBYTE
!                           / input_conv.vc_factor
! #  endif
!                           );
  #  ifdef VMS
        len = vms_read((char *)inbuf + inbufcount, readlen);
  #  else
--- 1844,1855 ----
      }
      else
        unconverted = 0;
  
      len = 0;  /* to avoid gcc warning */
      for (try = 0; try < 100; ++try)
      {
        size_t readlen = (size_t)((INBUFLEN - inbufcount)
!                           / input_conv.vc_factor);
  #  ifdef VMS
        len = vms_read((char *)inbuf + inbufcount, readlen);
  #  else
***************
*** 1936,1942 ****
      }
      else
      {
- # ifdef FEAT_MBYTE
        /*
         * May perform conversion on the input characters.
         * Include the unconverted rest of the previous call.
--- 1895,1900 ----
***************
*** 1952,1958 ****
                                     len + unconverted, INBUFLEN - inbufcount,
                                       rest == NULL ? &rest : NULL, &restlen);
        }
- # endif
        while (len-- > 0)
        {
            /*
--- 1910,1915 ----
***************
*** 2014,2021 ****
  }
  #endif
  
- #if defined(FEAT_CLIPBOARD) || defined(FEAT_GUI) || defined(FEAT_RIGHTLEFT) \
-       || defined(FEAT_MBYTE) || defined(PROTO)
  /*
   * Check bounds for column number
   */
--- 1971,1976 ----
***************
*** 2041,2047 ****
        return (int)screen_Rows - 1;
      return row;
  }
- #endif
  
  /*
   * Stuff for the X clipboard.  Shared between VMS and Unix.
--- 1996,2001 ----
***************
*** 2066,2075 ****
  }
  
  static Atom   vim_atom;       /* Vim's own special selection format */
- #ifdef FEAT_MBYTE
  static Atom   vimenc_atom;    /* Vim's extended selection format */
  static Atom   utf8_atom;
- #endif
  static Atom   compound_text_atom;
  static Atom   text_atom;
  static Atom   targets_atom;
--- 2020,2027 ----
***************
*** 2079,2088 ****
  x11_setup_atoms(Display *dpy)
  {
      vim_atom         = XInternAtom(dpy, VIM_ATOM_NAME,   False);
- #ifdef FEAT_MBYTE
      vimenc_atom              = XInternAtom(dpy, VIMENC_ATOM_NAME,False);
      utf8_atom        = XInternAtom(dpy, "UTF8_STRING",   False);
- #endif
      compound_text_atom = XInternAtom(dpy, "COMPOUND_TEXT", False);
      text_atom        = XInternAtom(dpy, "TEXT",          False);
      targets_atom       = XInternAtom(dpy, "TARGETS",     False);
--- 2031,2038 ----
***************
*** 2170,2178 ****
      char_u    *p;
      char      **text_list = NULL;
      VimClipboard      *cbd;
- #ifdef FEAT_MBYTE
      char_u    *tmpbuf = NULL;
- #endif
  
      if (*sel_atom == clip_plus.sel_atom)
        cbd = &clip_plus;
--- 2120,2126 ----
***************
*** 2193,2199 ****
        len--;
      }
  
- #ifdef FEAT_MBYTE
      else if (*type == vimenc_atom)
      {
        char_u          *enc;
--- 2141,2146 ----
***************
*** 2221,2237 ****
            convert_setup(&conv, NULL, NULL);
        }
      }
- #endif
  
      else if (*type == compound_text_atom
- #ifdef FEAT_MBYTE
            || *type == utf8_atom
! #endif
!           || (
! #ifdef FEAT_MBYTE
!               enc_dbcs != 0 &&
! #endif
!               *type == text_atom))
      {
        XTextProperty   text_prop;
        int             n_text = 0;
--- 2168,2177 ----
            convert_setup(&conv, NULL, NULL);
        }
      }
  
      else if (*type == compound_text_atom
            || *type == utf8_atom
!           || (enc_dbcs != 0 && *type == text_atom))
      {
        XTextProperty   text_prop;
        int             n_text = 0;
***************
*** 2241,2247 ****
        text_prop.encoding = *type;
        text_prop.format = *format;
        text_prop.nitems = len;
! #if defined(FEAT_MBYTE) && defined(X_HAVE_UTF8_STRING)
        if (*type == utf8_atom)
            status = Xutf8TextPropertyToTextList(X_DISPLAY, &text_prop,
                                                         &text_list, &n_text);
--- 2181,2187 ----
        text_prop.encoding = *type;
        text_prop.format = *format;
        text_prop.nitems = len;
! #if defined(X_HAVE_UTF8_STRING)
        if (*type == utf8_atom)
            status = Xutf8TextPropertyToTextList(X_DISPLAY, &text_prop,
                                                         &text_list, &n_text);
***************
*** 2261,2269 ****
  
      if (text_list != NULL)
        XFreeStringList(text_list);
- #ifdef FEAT_MBYTE
      vim_free(tmpbuf);
- #endif
      XtFree((char *)value);
      *(int *)success = TRUE;
  }
--- 2201,2207 ----
***************
*** 2281,2308 ****
      time_t    start_time;
      int               timed_out = FALSE;
  
!     for (i =
! #ifdef FEAT_MBYTE
!           0
! #else
!           1
! #endif
!           ; i < 6; i++)
      {
        switch (i)
        {
- #ifdef FEAT_MBYTE
            case 0:  type = vimenc_atom;        break;
- #endif
            case 1:  type = vim_atom;           break;
- #ifdef FEAT_MBYTE
            case 2:  type = utf8_atom;          break;
- #endif
            case 3:  type = compound_text_atom; break;
            case 4:  type = text_atom;          break;
            default: type = XA_STRING;
        }
- #ifdef FEAT_MBYTE
        if (type == utf8_atom
  # if defined(X_HAVE_UTF8_STRING)
                && !enc_utf8
--- 2219,2235 ----
      time_t    start_time;
      int               timed_out = FALSE;
  
!     for (i = 0; i < 6; i++)
      {
        switch (i)
        {
            case 0:  type = vimenc_atom;        break;
            case 1:  type = vim_atom;           break;
            case 2:  type = utf8_atom;          break;
            case 3:  type = compound_text_atom; break;
            case 4:  type = text_atom;          break;
            default: type = XA_STRING;
        }
        if (type == utf8_atom
  # if defined(X_HAVE_UTF8_STRING)
                && !enc_utf8
***************
*** 2311,2317 ****
            /* Only request utf-8 when 'encoding' is utf8 and
             * Xutf8TextPropertyToTextList is available. */
            continue;
- #endif
        success = MAYBE;
        XtGetSelectionValue(myShell, cbd->sel_atom, type,
            clip_x11_request_selection_cb, (XtPointer)&success, CurrentTime);
--- 2238,2243 ----
***************
*** 2406,2419 ****
        *value = (XtPointer)array;
        i = 0;
        array[i++] = targets_atom;
- #ifdef FEAT_MBYTE
        array[i++] = vimenc_atom;
- #endif
        array[i++] = vim_atom;
- #ifdef FEAT_MBYTE
        if (enc_utf8)
            array[i++] = utf8_atom;
- #endif
        array[i++] = XA_STRING;
        array[i++] = text_atom;
        array[i++] = compound_text_atom;
--- 2332,2341 ----
***************
*** 2427,2436 ****
      }
  
      if (       *target != XA_STRING
- #ifdef FEAT_MBYTE
            && *target != vimenc_atom
            && (*target != utf8_atom || !enc_utf8)
- #endif
            && *target != vim_atom
            && *target != text_atom
            && *target != compound_text_atom)
--- 2349,2356 ----
***************
*** 2445,2455 ****
      if (*target == vim_atom)
        (*length)++;
  
- #ifdef FEAT_MBYTE
      /* Our own format with encoding: motion 'encoding' NUL text */
      if (*target == vimenc_atom)
        *length += STRLEN(p_enc) + 2;
- #endif
  
      if (save_length < *length || save_length / 2 >= *length)
        *value = XtRealloc((char *)save_result, (Cardinal)*length + 1);
--- 2365,2373 ----
***************
*** 2463,2473 ****
      save_result = (char_u *)*value;
      save_length = *length;
  
!     if (*target == XA_STRING
! #ifdef FEAT_MBYTE
!           || (*target == utf8_atom && enc_utf8)
! #endif
!           )
      {
        mch_memmove(save_result, string, (size_t)(*length));
        *type = *target;
--- 2381,2387 ----
      save_result = (char_u *)*value;
      save_length = *length;
  
!     if (*target == XA_STRING || (*target == utf8_atom && enc_utf8))
      {
        mch_memmove(save_result, string, (size_t)(*length));
        *type = *target;
***************
*** 2495,2501 ****
        save_result = (char_u *)*value;
        save_length = *length;
      }
- #ifdef FEAT_MBYTE
      else if (*target == vimenc_atom)
      {
        int l = STRLEN(p_enc);
--- 2409,2414 ----
***************
*** 2505,2511 ****
        mch_memmove(save_result + l + 2, string, (size_t)(*length - l - 2));
        *type = vimenc_atom;
      }
- #endif
      else
      {
        save_result[0] = motion_type;
--- 2418,2423 ----
***************
*** 2599,2605 ****
  
      if (nbytes > 0)
      {
- #ifdef FEAT_MBYTE
        int  done = FALSE;
  
        /* CUT_BUFFER0 is supposed to be always latin1.  Convert to 'enc' when
--- 2511,2516 ----
***************
*** 2625,2631 ****
            }
        }
        if (!done)  /* use the text without conversion */
- #endif
            clip_yank_selection(MCHAR, buffer, (long)nbytes, cbd);
        XFree((void *)buffer);
        if (p_verbose > 0)
--- 2536,2541 ----
*** ../vim-8.1.0809/src/version.c       2019-01-24 16:38:58.280712420 +0100
--- src/version.c       2019-01-24 17:17:24.875973757 +0100
***************
*** 459,469 ****
        "+multi_byte_ime",
  # endif
  #else
- # ifdef FEAT_MBYTE
        "+multi_byte",
- # else
-       "-multi_byte",
- # endif
  #endif
  #ifdef FEAT_MULTI_LANG
        "+multi_lang",
--- 459,465 ----
***************
*** 3052,3065 ****
        for (l = 0; p[l] != NUL
                         && (l == 0 || (p[l] != '<' && p[l - 1] != '>')); ++l)
        {
- #ifdef FEAT_MBYTE
            if (has_mbyte)
            {
                clen += ptr2cells(p + l);
                l += (*mb_ptr2len)(p + l) - 1;
            }
            else
- #endif
                clen += byte2cells(p[l]);
        }
        screen_puts_len(p, l, row, col, *p == '<' ? HL_ATTR(HLF_8) : attr);
--- 3050,3061 ----
*** ../vim-8.1.0809/src/winclip.c       2017-02-01 13:42:34.000000000 +0100
--- src/winclip.c       2019-01-24 17:00:00.143491565 +0100
***************
*** 44,50 ****
  typedef int UINT;
  #endif
  
- #if defined(FEAT_MBYTE) || defined(PROTO)
  /*
   * Convert an UTF-8 string to UTF-16.
   * "instr[inlen]" is the input.  "inlen" is in bytes.
--- 44,49 ----
***************
*** 179,185 ****
      }
  }
  
- #endif /* FEAT_MBYTE */
  
  #ifdef FEAT_CLIPBOARD
  /*
--- 178,183 ----
***************
*** 301,312 ****
      VimClipType_t     metadata = { -1, -1, -1, -1 };
      HGLOBAL           hMem = NULL;
      char_u            *str = NULL;
! #if defined(FEAT_MBYTE) && defined(WIN3264)
      char_u            *to_free = NULL;
  #endif
- #ifdef FEAT_MBYTE
      HGLOBAL           rawh = NULL;
- #endif
      int                       str_size = 0;
      int                       maxlen;
      size_t            n;
--- 299,308 ----
      VimClipType_t     metadata = { -1, -1, -1, -1 };
      HGLOBAL           hMem = NULL;
      char_u            *str = NULL;
! #if defined(WIN3264)
      char_u            *to_free = NULL;
  #endif
      HGLOBAL           rawh = NULL;
      int                       str_size = 0;
      int                       maxlen;
      size_t            n;
***************
*** 339,345 ****
        }
      }
  
- #ifdef FEAT_MBYTE
      /* Check for Vim's raw clipboard format first.  This is used without
       * conversion, but only if 'encoding' matches. */
      if (IsClipboardFormatAvailable(cbd->format_raw)
--- 335,340 ----
***************
*** 366,444 ****
      }
      if (str == NULL)
      {
! #endif
! 
! #if defined(FEAT_MBYTE) && defined(WIN3264)
!     /* Try to get the clipboard in Unicode if it's not an empty string. */
!     if (IsClipboardFormatAvailable(CF_UNICODETEXT) && metadata.ucslen != 0)
!     {
!       HGLOBAL hMemW;
! 
!       if ((hMemW = GetClipboardData(CF_UNICODETEXT)) != NULL)
!       {
!           WCHAR *hMemWstr = (WCHAR *)GlobalLock(hMemW);
! 
!           /* Use the length of our metadata if possible, but limit it to the
!            * GlobalSize() for safety. */
!           maxlen = (int)(GlobalSize(hMemW) / sizeof(WCHAR));
!           if (metadata.ucslen >= 0)
!           {
!               if (metadata.ucslen > maxlen)
!                   str_size = maxlen;
                else
!                   str_size = metadata.ucslen;
!           }
!           else
!           {
!               for (str_size = 0; str_size < maxlen; ++str_size)
!                   if (hMemWstr[str_size] == NUL)
!                       break;
            }
-           to_free = str = utf16_to_enc((short_u *)hMemWstr, &str_size);
-           GlobalUnlock(hMemW);
        }
!     }
!     else
  #endif
!     /* Get the clipboard in the Active codepage. */
!     if (IsClipboardFormatAvailable(CF_TEXT))
!     {
!       if ((hMem = GetClipboardData(CF_TEXT)) != NULL)
        {
!           str = (char_u *)GlobalLock(hMem);
! 
!           /* The length is either what our metadata says or the strlen().
!            * But limit it to the GlobalSize() for safety. */
!           maxlen = (int)GlobalSize(hMem);
!           if (metadata.txtlen >= 0)
!           {
!               if (metadata.txtlen > maxlen)
!                   str_size = maxlen;
!               else
!                   str_size = metadata.txtlen;
!           }
!           else
            {
!               for (str_size = 0; str_size < maxlen; ++str_size)
!                   if (str[str_size] == NUL)
!                       break;
!           }
  
! # if defined(FEAT_MBYTE) && defined(WIN3264)
!           /* The text is in the active codepage.  Convert to 'encoding',
!            * going through UTF-16. */
!           acp_to_enc(str, str_size, &to_free, &maxlen);
!           if (to_free != NULL)
!           {
!               str_size = maxlen;
!               str = to_free;
            }
- # endif
        }
      }
- #ifdef FEAT_MBYTE
-     }
- #endif
  
      if (str != NULL && *str != NUL)
      {
--- 361,435 ----
      }
      if (str == NULL)
      {
! #if defined(WIN3264)
!       /* Try to get the clipboard in Unicode if it's not an empty string. */
!       if (IsClipboardFormatAvailable(CF_UNICODETEXT) && metadata.ucslen != 0)
!       {
!           HGLOBAL hMemW;
! 
!           if ((hMemW = GetClipboardData(CF_UNICODETEXT)) != NULL)
!           {
!               WCHAR *hMemWstr = (WCHAR *)GlobalLock(hMemW);
! 
!               /* Use the length of our metadata if possible, but limit it to
!                * the GlobalSize() for safety. */
!               maxlen = (int)(GlobalSize(hMemW) / sizeof(WCHAR));
!               if (metadata.ucslen >= 0)
!               {
!                   if (metadata.ucslen > maxlen)
!                       str_size = maxlen;
!                   else
!                       str_size = metadata.ucslen;
!               }
                else
!               {
!                   for (str_size = 0; str_size < maxlen; ++str_size)
!                       if (hMemWstr[str_size] == NUL)
!                           break;
!               }
!               to_free = str = utf16_to_enc((short_u *)hMemWstr, &str_size);
!               GlobalUnlock(hMemW);
            }
        }
!       else
  #endif
!           /* Get the clipboard in the Active codepage. */
!           if (IsClipboardFormatAvailable(CF_TEXT))
        {
!           if ((hMem = GetClipboardData(CF_TEXT)) != NULL)
            {
!               str = (char_u *)GlobalLock(hMem);
  
!               /* The length is either what our metadata says or the strlen().
!                * But limit it to the GlobalSize() for safety. */
!               maxlen = (int)GlobalSize(hMem);
!               if (metadata.txtlen >= 0)
!               {
!                   if (metadata.txtlen > maxlen)
!                       str_size = maxlen;
!                   else
!                       str_size = metadata.txtlen;
!               }
!               else
!               {
!                   for (str_size = 0; str_size < maxlen; ++str_size)
!                       if (str[str_size] == NUL)
!                           break;
!               }
! 
! #if defined(WIN3264)
!               /* The text is in the active codepage.  Convert to
!                * 'encoding', going through UTF-16. */
!               acp_to_enc(str, str_size, &to_free, &maxlen);
!               if (to_free != NULL)
!               {
!                   str_size = maxlen;
!                   str = to_free;
!               }
! #endif
            }
        }
      }
  
      if (str != NULL && *str != NUL)
      {
***************
*** 460,471 ****
      /* unlock the global object */
      if (hMem != NULL)
        GlobalUnlock(hMem);
- #ifdef FEAT_MBYTE
      if (rawh != NULL)
        GlobalUnlock(rawh);
- #endif
      CloseClipboard();
! #if defined(FEAT_MBYTE) && defined(WIN3264)
      vim_free(to_free);
  #endif
  }
--- 451,460 ----
      /* unlock the global object */
      if (hMem != NULL)
        GlobalUnlock(hMem);
      if (rawh != NULL)
        GlobalUnlock(rawh);
      CloseClipboard();
! #if defined(WIN3264)
      vim_free(to_free);
  #endif
  }
***************
*** 482,488 ****
      HGLOBAL           hMemRaw = NULL;
      HGLOBAL           hMem = NULL;
      HGLOBAL           hMemVim = NULL;
! # if defined(FEAT_MBYTE) && defined(WIN3264)
      HGLOBAL           hMemW = NULL;
  # endif
  
--- 471,477 ----
      HGLOBAL           hMemRaw = NULL;
      HGLOBAL           hMem = NULL;
      HGLOBAL           hMemVim = NULL;
! # if defined(WIN3264)
      HGLOBAL           hMemW = NULL;
  # endif
  
***************
*** 499,505 ****
      metadata.ucslen = 0;
      metadata.rawlen = 0;
  
- #ifdef FEAT_MBYTE
      /* Always set the raw bytes: 'encoding', NUL and the text.  This is used
       * when copy/paste from/to Vim with the same 'encoding', so that illegal
       * bytes can also be copied and no conversion is needed. */
--- 488,493 ----
***************
*** 519,527 ****
        else
            metadata.rawlen = 0;
      }
- #endif
  
! # if defined(FEAT_MBYTE) && defined(WIN3264)
      {
        WCHAR           *out;
        int             len = metadata.txtlen;
--- 507,514 ----
        else
            metadata.rawlen = 0;
      }
  
! # if defined(WIN3264)
      {
        WCHAR           *out;
        int             len = metadata.txtlen;
***************
*** 603,609 ****
        {
            SetClipboardData(cbd->format, hMemVim);
            hMemVim = 0;
! # if defined(FEAT_MBYTE) && defined(WIN3264)
            if (hMemW != NULL)
            {
                if (SetClipboardData(CF_UNICODETEXT, hMemW) != NULL)
--- 590,596 ----
        {
            SetClipboardData(cbd->format, hMemVim);
            hMemVim = 0;
! # if defined(WIN3264)
            if (hMemW != NULL)
            {
                if (SetClipboardData(CF_UNICODETEXT, hMemW) != NULL)
***************
*** 624,630 ****
        GlobalFree(hMemRaw);
      if (hMem)
        GlobalFree(hMem);
! # if defined(FEAT_MBYTE) && defined(WIN3264)
      if (hMemW)
        GlobalFree(hMemW);
  # endif
--- 611,617 ----
        GlobalFree(hMemRaw);
      if (hMem)
        GlobalFree(hMem);
! # if defined(WIN3264)
      if (hMemW)
        GlobalFree(hMemW);
  # endif
***************
*** 634,640 ****
  
  #endif /* FEAT_CLIPBOARD */
  
- #if defined(FEAT_MBYTE) || defined(PROTO)
  /*
   * Note: the following two functions are only guaranteed to work when using
   * valid MS-Windows codepages or when iconv() is available.
--- 621,626 ----
***************
*** 759,767 ****
  
      return enc_str;
  }
- #endif /* FEAT_MBYTE */
  
! #if (defined(FEAT_MBYTE) && defined(WIN3264)) || defined(PROTO)
  /*
   * Convert from the active codepage to 'encoding'.
   * Input is "str[str_size]".
--- 745,752 ----
  
      return enc_str;
  }
  
! #if defined(WIN3264) || defined(PROTO)
  /*
   * Convert from the active codepage to 'encoding'.
   * Input is "str[str_size]".
*** ../vim-8.1.0809/src/window.c        2019-01-19 17:43:03.433449041 +0100
--- src/window.c        2019-01-24 17:00:20.827336604 +0100
***************
*** 6180,6191 ****
       */
      while (ptr > line)
      {
- #ifdef FEAT_MBYTE
        if (has_mbyte && (len = (*mb_head_off)(line, ptr - 1)) > 0)
            ptr -= len + 1;
!       else
! #endif
!       if (vim_isfilec(ptr[-1])
                || ((options & FNAME_HYP) && path_is_url(ptr - 1)))
            --ptr;
        else
--- 6180,6188 ----
       */
      while (ptr > line)
      {
        if (has_mbyte && (len = (*mb_head_off)(line, ptr - 1)) > 0)
            ptr -= len + 1;
!       else if (vim_isfilec(ptr[-1])
                || ((options & FNAME_HYP) && path_is_url(ptr - 1)))
            --ptr;
        else
***************
*** 6214,6224 ****
        if (ptr[len] == '\\')
            /* Skip over the "\" in "\ ". */
            ++len;
- #ifdef FEAT_MBYTE
        if (has_mbyte)
            len += (*mb_ptr2len)(ptr + len);
        else
- #endif
            ++len;
      }
  
--- 6211,6219 ----
***************
*** 6829,6835 ****
      m->match.regprog = regprog;
      m->match.rmm_ic = FALSE;
      m->match.rmm_maxcol = 0;
! # if defined(FEAT_CONCEAL) && defined(FEAT_MBYTE)
      m->conceal_char = 0;
      if (conceal_char != NULL)
        m->conceal_char = (*mb_ptr2char)(conceal_char);
--- 6824,6830 ----
      m->match.regprog = regprog;
      m->match.rmm_ic = FALSE;
      m->match.rmm_maxcol = 0;
! # if defined(FEAT_CONCEAL)
      m->conceal_char = 0;
      if (conceal_char != NULL)
        m->conceal_char = (*mb_ptr2char)(conceal_char);
*** ../vim-8.1.0809/src/glbl_ime.cpp    2016-08-29 22:42:20.000000000 +0200
--- src/glbl_ime.cpp    2019-01-24 17:00:38.099207536 +0100
***************
*** 134,140 ****
      if (pIApp == NULL || pIApp->OnDefWindowProc(hWnd, Msg,
                                            wParam, lParam, &lResult) != S_OK)
      {
! #if defined(WIN3264) && defined(FEAT_MBYTE)
        if (wide_WindowProc)
            lResult = DefWindowProcW(hWnd, Msg, wParam, lParam);
        else
--- 134,140 ----
      if (pIApp == NULL || pIApp->OnDefWindowProc(hWnd, Msg,
                                            wParam, lParam, &lResult) != S_OK)
      {
! #if defined(WIN3264)
        if (wide_WindowProc)
            lResult = DefWindowProcW(hWnd, Msg, wParam, lParam);
        else
*** ../vim-8.1.0809/src/ex_cmds.h       2019-01-17 15:43:21.757878392 +0100
--- src/ex_cmds.h       2019-01-24 17:01:04.547010454 +0100
***************
*** 1789,1798 ****
      int               force_bin;      /* 0, FORCE_BIN or FORCE_NOBIN */
      int               read_edit;      /* ++edit argument */
      int               force_ff;       /* ++ff= argument (first char of 
argument) */
- #ifdef FEAT_MBYTE
      int               force_enc;      /* ++enc= argument (index in cmd[]) */
      int               bad_char;       /* BAD_KEEP, BAD_DROP or replacement 
byte */
- #endif
  #ifdef FEAT_USR_CMDS
      int               useridx;        /* user command index */
  #endif
--- 1789,1796 ----
*** ../vim-8.1.0809/src/globals.h       2019-01-22 22:20:13.374961397 +0100
--- src/globals.h       2019-01-24 17:01:59.414603615 +0100
***************
*** 44,50 ****
  EXTERN unsigned       *LineOffset INIT(= NULL);
  EXTERN char_u *LineWraps INIT(= NULL);        /* line wraps to next line */
  
- #ifdef FEAT_MBYTE
  /*
   * When using Unicode characters (in UTF-8 encoding) the character in
   * ScreenLinesUC[] contains the Unicode for the character at this position, or
--- 44,49 ----
***************
*** 61,67 ****
  /* Only used for euc-jp: Second byte of a character that starts with 0x8e.
   * These are single-width. */
  EXTERN schar_T        *ScreenLines2 INIT(= NULL);
- #endif
  
  /*
   * Indexes for tab page line:
--- 60,65 ----
***************
*** 798,838 ****
  EXTERN JMP_BUF x_jump_env;
  #endif
  
- #if defined(FEAT_MBYTE) || defined(FEAT_POSTSCRIPT)
  /*
   * These flags are set based upon 'fileencoding'.
   * Note that "enc_utf8" is also set for "unicode", because the characters are
   * internally stored as UTF-8 (to avoid trouble with NUL bytes).
   */
! # define DBCS_JPN     932     /* japan */
! # define DBCS_JPNU    9932    /* euc-jp */
! # define DBCS_KOR     949     /* korea */
! # define DBCS_KORU    9949    /* euc-kr */
! # define DBCS_CHS     936     /* chinese */
! # define DBCS_CHSU    9936    /* euc-cn */
! # define DBCS_CHT     950     /* taiwan */
! # define DBCS_CHTU    9950    /* euc-tw */
! # define DBCS_2BYTE   1       /* 2byte- */
! # define DBCS_DEBUG   -1
! #endif
  
- #ifdef FEAT_MBYTE
  EXTERN int    enc_dbcs INIT(= 0);             /* One of DBCS_xxx values if
                                                   DBCS encoding */
  EXTERN int    enc_unicode INIT(= 0);  /* 2: UCS-2 or UTF-16, 4: UCS-4 */
  EXTERN int    enc_utf8 INIT(= FALSE);         /* UTF-8 encoded Unicode */
  EXTERN int    enc_latin1like INIT(= TRUE);    /* 'encoding' is latin1 comp. */
! # if defined(WIN3264) || defined(FEAT_CYGWIN_WIN32_CLIPBOARD)
  /* Codepage nr of 'encoding'.  Negative means it's not been set yet, zero
   * means 'encoding' is not a valid codepage. */
  EXTERN int    enc_codepage INIT(= -1);
  EXTERN int    enc_latin9 INIT(= FALSE);       /* 'encoding' is latin9 */
! # endif
  EXTERN int    has_mbyte INIT(= 0);            /* any multi-byte encoding */
  
! # if defined(WIN3264) && defined(FEAT_MBYTE)
  EXTERN int    wide_WindowProc INIT(= FALSE);  /* use wide WindowProc() */
! # endif
  
  /*
   * To speed up BYTELEN() we fill a table with the byte lengths whenever
--- 796,833 ----
  EXTERN JMP_BUF x_jump_env;
  #endif
  
  /*
   * These flags are set based upon 'fileencoding'.
   * Note that "enc_utf8" is also set for "unicode", because the characters are
   * internally stored as UTF-8 (to avoid trouble with NUL bytes).
   */
! #define DBCS_JPN      932     /* japan */
! #define DBCS_JPNU     9932    /* euc-jp */
! #define DBCS_KOR      949     /* korea */
! #define DBCS_KORU     9949    /* euc-kr */
! #define DBCS_CHS      936     /* chinese */
! #define DBCS_CHSU     9936    /* euc-cn */
! #define DBCS_CHT      950     /* taiwan */
! #define DBCS_CHTU     9950    /* euc-tw */
! #define DBCS_2BYTE    1       /* 2byte- */
! #define DBCS_DEBUG    -1
  
  EXTERN int    enc_dbcs INIT(= 0);             /* One of DBCS_xxx values if
                                                   DBCS encoding */
  EXTERN int    enc_unicode INIT(= 0);  /* 2: UCS-2 or UTF-16, 4: UCS-4 */
  EXTERN int    enc_utf8 INIT(= FALSE);         /* UTF-8 encoded Unicode */
  EXTERN int    enc_latin1like INIT(= TRUE);    /* 'encoding' is latin1 comp. */
! #if defined(WIN3264) || defined(FEAT_CYGWIN_WIN32_CLIPBOARD)
  /* Codepage nr of 'encoding'.  Negative means it's not been set yet, zero
   * means 'encoding' is not a valid codepage. */
  EXTERN int    enc_codepage INIT(= -1);
  EXTERN int    enc_latin9 INIT(= FALSE);       /* 'encoding' is latin9 */
! #endif
  EXTERN int    has_mbyte INIT(= 0);            /* any multi-byte encoding */
  
! #if defined(WIN3264)
  EXTERN int    wide_WindowProc INIT(= FALSE);  /* use wide WindowProc() */
! #endif
  
  /*
   * To speed up BYTELEN() we fill a table with the byte lengths whenever
***************
*** 875,881 ****
  EXTERN int* (*iconv_errno) (void);
  # endif
  
- #endif /* FEAT_MBYTE */
  
  #ifdef FEAT_XIM
  # ifdef FEAT_GUI_GTK
--- 870,875 ----
*** ../vim-8.1.0809/src/gui.h   2018-07-29 17:35:19.493750319 +0200
--- src/gui.h   2019-01-24 17:02:15.106487731 +0100
***************
*** 303,315 ****
      GuiFont   menu_font;          /* menu item font */
  # endif
  #endif
- #ifdef FEAT_MBYTE
      GuiFont   wide_font;          /* Normal 'guifontwide' font */
! # ifndef FEAT_GUI_GTK
      GuiFont   wide_bold_font;     /* Bold 'guifontwide' font */
      GuiFont   wide_ital_font;     /* Italic 'guifontwide' font */
      GuiFont   wide_boldital_font; /* Bold-Italic 'guifontwide' font */
- # endif
  #endif
  #ifdef FEAT_XFONTSET
      GuiFontset        fontset;            /* set of fonts for multi-byte 
chars */
--- 303,313 ----
      GuiFont   menu_font;          /* menu item font */
  # endif
  #endif
      GuiFont   wide_font;          /* Normal 'guifontwide' font */
! #ifndef FEAT_GUI_GTK
      GuiFont   wide_bold_font;     /* Bold 'guifontwide' font */
      GuiFont   wide_ital_font;     /* Italic 'guifontwide' font */
      GuiFont   wide_boldital_font; /* Bold-Italic 'guifontwide' font */
  #endif
  #ifdef FEAT_XFONTSET
      GuiFontset        fontset;            /* set of fonts for multi-byte 
chars */
*** ../vim-8.1.0809/src/if_py_both.h    2019-01-19 17:43:03.417449145 +0100
--- src/if_py_both.h    2019-01-24 17:02:32.870356782 +0100
***************
*** 24,34 ****
  typedef int Py_ssize_t;  /* Python 2.4 and earlier don't have this type. */
  #endif
  
! #ifdef FEAT_MBYTE
! # define ENC_OPT ((char *)p_enc)
! #else
! # define ENC_OPT "latin1"
! #endif
  #define DOPY_FUNC "_vim_pydo"
  
  static const char *vim_special_path = "_vim_path_";
--- 24,30 ----
  typedef int Py_ssize_t;  /* Python 2.4 and earlier don't have this type. */
  #endif
  
! #define ENC_OPT ((char *)p_enc)
  #define DOPY_FUNC "_vim_pydo"
  
  static const char *vim_special_path = "_vim_path_";
***************
*** 985,995 ****
      if (!(str = StringToChars(string, &todecref)))
        return NULL;
  
- #ifdef FEAT_MBYTE
      len = mb_string2cells(str, (int)STRLEN(str));
- #else
-     len = STRLEN(str);
- #endif
  
      Py_XDECREF(todecref);
  
--- 981,987 ----
*** ../vim-8.1.0809/src/macros.h        2018-11-16 16:21:01.633310065 +0100
--- src/macros.h        2019-01-24 17:03:20.958003503 +0100
***************
*** 96,112 ****
   * MB_ISLOWER() and MB_ISUPPER() are to be used on multi-byte characters.  But
   * don't use them for negative values!
   */
! #ifdef FEAT_MBYTE
! # define MB_ISLOWER(c)        vim_islower(c)
! # define MB_ISUPPER(c)        vim_isupper(c)
! # define MB_TOLOWER(c)        vim_tolower(c)
! # define MB_TOUPPER(c)        vim_toupper(c)
! #else
! # define MB_ISLOWER(c)        islower(c)
! # define MB_ISUPPER(c)        isupper(c)
! # define MB_TOLOWER(c)        TOLOWER_LOC(c)
! # define MB_TOUPPER(c)        TOUPPER_LOC(c)
! #endif
  
  /* Use our own isdigit() replacement, because on MS-Windows isdigit() returns
   * non-zero for superscript 1.  Also avoids that isdigit() crashes for numbers
--- 96,105 ----
   * MB_ISLOWER() and MB_ISUPPER() are to be used on multi-byte characters.  But
   * don't use them for negative values!
   */
! #define MB_ISLOWER(c) vim_islower(c)
! #define MB_ISUPPER(c) vim_isupper(c)
! #define MB_TOLOWER(c) vim_tolower(c)
! #define MB_TOUPPER(c) vim_toupper(c)
  
  /* Use our own isdigit() replacement, because on MS-Windows isdigit() returns
   * non-zero for superscript 1.  Also avoids that isdigit() crashes for numbers
***************
*** 139,146 ****
   * a mapping and the langnoremap option was set.
   * The do-while is just to ignore a ';' after the macro.
   */
! # ifdef FEAT_MBYTE
! #  define LANGMAP_ADJUST(c, condition) \
      do { \
        if (*p_langmap \
                && (condition) \
--- 132,138 ----
   * a mapping and the langnoremap option was set.
   * The do-while is just to ignore a ';' after the macro.
   */
! # define LANGMAP_ADJUST(c, condition) \
      do { \
        if (*p_langmap \
                && (condition) \
***************
*** 154,170 ****
                c = langmap_adjust_mb(c); \
        } \
      } while (0)
- # else
- #  define LANGMAP_ADJUST(c, condition) \
-     do { \
-       if (*p_langmap \
-               && (condition) \
-               && (p_lrm || (!p_lrm && KeyTyped)) \
-               && !KeyStuffed \
-               && (c) >= 0 && (c) < 256) \
-           c = langmap_mapchar[c]; \
-     } while (0)
- # endif
  #else
  # define LANGMAP_ADJUST(c, condition) /* nop */
  #endif
--- 146,151 ----
***************
*** 256,288 ****
   * MB_COPY_CHAR(f, t): copy one char from "f" to "t" and advance the pointers.
   * PTR2CHAR(): get character from pointer.
   */
- #ifdef FEAT_MBYTE
  /* Get the length of the character p points to, including composing chars */
! # define MB_PTR2LEN(p)            (has_mbyte ? (*mb_ptr2len)(p) : 1)
  /* Advance multi-byte pointer, skip over composing chars. */
! # define MB_PTR_ADV(p)            p += has_mbyte ? (*mb_ptr2len)(p) : 1
  /* Advance multi-byte pointer, do not skip over composing chars. */
! # define MB_CPTR_ADV(p)           p += enc_utf8 ? utf_ptr2len(p) : has_mbyte 
? (*mb_ptr2len)(p) : 1
  /* Backup multi-byte pointer. Only use with "p" > "s" ! */
! # define MB_PTR_BACK(s, p)  p -= has_mbyte ? ((*mb_head_off)(s, p - 1) + 1) : 
1
  /* get length of multi-byte char, not including composing chars */
! # define MB_CPTR2LEN(p)           (enc_utf8 ? utf_ptr2len(p) : 
(*mb_ptr2len)(p))
  
! # define MB_COPY_CHAR(f, t) if (has_mbyte) mb_copy_char(&f, &t); else *t++ = 
*f++
! # define MB_CHARLEN(p)            (has_mbyte ? mb_charlen(p) : (int)STRLEN(p))
! # define MB_CHAR2LEN(c)           (has_mbyte ? mb_char2len(c) : 1)
! # define PTR2CHAR(p)      (has_mbyte ? mb_ptr2char(p) : (int)*(p))
! #else
! # define MB_PTR2LEN(p)                1
! # define MB_CPTR2LEN(p)               1
! # define MB_PTR_ADV(p)                ++p
! # define MB_CPTR_ADV(p)               ++p
! # define MB_PTR_BACK(s, p)    --p
! # define MB_COPY_CHAR(f, t)   *t++ = *f++
! # define MB_CHARLEN(p)                STRLEN(p)
! # define MB_CHAR2LEN(c)               1
! # define PTR2CHAR(p)          ((int)*(p))
! #endif
  
  #ifdef FEAT_AUTOCHDIR
  # define DO_AUTOCHDIR do { if (p_acd) do_autochdir(); } while (0)
--- 237,257 ----
   * MB_COPY_CHAR(f, t): copy one char from "f" to "t" and advance the pointers.
   * PTR2CHAR(): get character from pointer.
   */
  /* Get the length of the character p points to, including composing chars */
! #define MB_PTR2LEN(p)     (has_mbyte ? (*mb_ptr2len)(p) : 1)
  /* Advance multi-byte pointer, skip over composing chars. */
! #define MB_PTR_ADV(p)     p += has_mbyte ? (*mb_ptr2len)(p) : 1
  /* Advance multi-byte pointer, do not skip over composing chars. */
! #define MB_CPTR_ADV(p)            p += enc_utf8 ? utf_ptr2len(p) : has_mbyte 
? (*mb_ptr2len)(p) : 1
  /* Backup multi-byte pointer. Only use with "p" > "s" ! */
! #define MB_PTR_BACK(s, p)  p -= has_mbyte ? ((*mb_head_off)(s, p - 1) + 1) : 1
  /* get length of multi-byte char, not including composing chars */
! #define MB_CPTR2LEN(p)            (enc_utf8 ? utf_ptr2len(p) : 
(*mb_ptr2len)(p))
  
! #define MB_COPY_CHAR(f, t) if (has_mbyte) mb_copy_char(&f, &t); else *t++ = 
*f++
! #define MB_CHARLEN(p)     (has_mbyte ? mb_charlen(p) : (int)STRLEN(p))
! #define MB_CHAR2LEN(c)            (has_mbyte ? mb_char2len(c) : 1)
! #define PTR2CHAR(p)       (has_mbyte ? mb_ptr2char(p) : (int)*(p))
  
  #ifdef FEAT_AUTOCHDIR
  # define DO_AUTOCHDIR do { if (p_acd) do_autochdir(); } while (0)
*** ../vim-8.1.0809/src/option.h        2019-01-11 22:15:00.519123428 +0100
--- src/option.h        2019-01-24 17:04:23.493546503 +0100
***************
*** 69,81 ****
  #endif
  
  
- #ifdef FEAT_MBYTE
  /* Possible values for 'encoding' */
! # define ENC_UCSBOM   "ucs-bom"       /* check for BOM at start of file */
  
  /* default value for 'encoding' */
! # define ENC_DFLT     "latin1"
! #endif
  
  /* end-of-line style */
  #define EOL_UNKNOWN   -1      /* not defined yet */
--- 69,79 ----
  #endif
  
  
  /* Possible values for 'encoding' */
! #define ENC_UCSBOM    "ucs-bom"       /* check for BOM at start of file */
  
  /* default value for 'encoding' */
! #define ENC_DFLT      "latin1"
  
  /* end-of-line style */
  #define EOL_UNKNOWN   -1      /* not defined yet */
***************
*** 315,324 ****
  #ifdef FEAT_AUTOCHDIR
  EXTERN int    p_acd;          /* 'autochdir' */
  #endif
- #ifdef FEAT_MBYTE
  EXTERN char_u *p_ambw;        /* 'ambiwidth' */
  EXTERN char_u *p_emoji;       /* 'emoji' */
- #endif
  #if defined(FEAT_GUI) && defined(MACOS_X)
  EXTERN int    *p_antialias;   /* 'antialias' */
  #endif
--- 313,320 ----
***************
*** 395,415 ****
  #ifdef FEAT_LINEBREAK
  EXTERN char_u *p_breakat;     /* 'breakat' */
  #endif
- #ifdef FEAT_MBYTE
  EXTERN char_u *p_cmp;         /* 'casemap' */
  EXTERN unsigned       cmp_flags;
! # ifdef IN_OPTION_C
  static char *(p_cmp_values[]) = {"internal", "keepascii", NULL};
- # endif
- # define CMP_INTERNAL         0x001
- # define CMP_KEEPASCII                0x002
  #endif
! #ifdef FEAT_MBYTE
  EXTERN char_u *p_enc;         /* 'encoding' */
  EXTERN int    p_deco;         /* 'delcombine' */
! # ifdef FEAT_EVAL
  EXTERN char_u *p_ccv;         /* 'charconvert' */
- # endif
  #endif
  #ifdef FEAT_CMDWIN
  EXTERN char_u *p_cedit;       /* 'cedit' */
--- 391,407 ----
  #ifdef FEAT_LINEBREAK
  EXTERN char_u *p_breakat;     /* 'breakat' */
  #endif
  EXTERN char_u *p_cmp;         /* 'casemap' */
  EXTERN unsigned       cmp_flags;
! #ifdef IN_OPTION_C
  static char *(p_cmp_values[]) = {"internal", "keepascii", NULL};
  #endif
! #define CMP_INTERNAL          0x001
! #define CMP_KEEPASCII         0x002
  EXTERN char_u *p_enc;         /* 'encoding' */
  EXTERN int    p_deco;         /* 'delcombine' */
! #ifdef FEAT_EVAL
  EXTERN char_u *p_ccv;         /* 'charconvert' */
  #endif
  #ifdef FEAT_CMDWIN
  EXTERN char_u *p_cedit;       /* 'cedit' */
***************
*** 482,490 ****
  EXTERN char_u *p_ei;          /* 'eventignore' */
  EXTERN int    p_ek;           /* 'esckeys' */
  EXTERN int    p_exrc;         /* 'exrc' */
- #ifdef FEAT_MBYTE
  EXTERN char_u *p_fencs;       /* 'fileencodings' */
- #endif
  EXTERN char_u *p_ffs;         /* 'fileformats' */
  EXTERN long   p_fic;          /* 'fileignorecase' */
  #ifdef FEAT_FOLDING
--- 474,480 ----
***************
*** 519,528 ****
  # ifdef FEAT_POSTSCRIPT
  EXTERN char_u *p_penc;        /* 'printencoding' */
  EXTERN char_u *p_pexpr;       /* 'printexpr' */
- #   ifdef FEAT_MBYTE
  EXTERN char_u *p_pmfn;        /* 'printmbfont' */
  EXTERN char_u *p_pmcs;        /* 'printmbcharset' */
- #   endif
  # endif
  EXTERN char_u *p_pfn;         /* 'printfont' */
  EXTERN char_u *p_popt;        /* 'printoptions' */
--- 509,516 ----
***************
*** 534,542 ****
  # ifdef FEAT_XFONTSET
  EXTERN char_u *p_guifontset;  /* 'guifontset' */
  # endif
- # ifdef FEAT_MBYTE
  EXTERN char_u *p_guifontwide; /* 'guifontwide' */
- # endif
  EXTERN int    p_guipty;       /* 'guipty' */
  #endif
  #if defined(FEAT_GUI_GTK) || defined(FEAT_GUI_X11)
--- 522,528 ----
***************
*** 586,599 ****
  #define IM_OVER_THE_SPOT      1L
  EXTERN long   p_imst;         /* 'imstyle' */
  #endif
! #if defined(FEAT_EVAL) && defined(FEAT_MBYTE)
  EXTERN char_u *p_imaf;        /* 'imactivatefunc' */
  EXTERN char_u *p_imsf;        /* 'imstatusfunc' */
  #endif
- #ifdef FEAT_MBYTE
  EXTERN int    p_imcmdline;    /* 'imcmdline' */
  EXTERN int    p_imdisable;    /* 'imdisable' */
- #endif
  EXTERN int    p_is;           /* 'incsearch' */
  EXTERN int    p_im;           /* 'insertmode' */
  EXTERN char_u *p_isf;         /* 'isfname' */
--- 572,583 ----
  #define IM_OVER_THE_SPOT      1L
  EXTERN long   p_imst;         /* 'imstyle' */
  #endif
! #if defined(FEAT_EVAL)
  EXTERN char_u *p_imaf;        /* 'imactivatefunc' */
  EXTERN char_u *p_imsf;        /* 'imstatusfunc' */
  #endif
  EXTERN int    p_imcmdline;    /* 'imcmdline' */
  EXTERN int    p_imdisable;    /* 'imdisable' */
  EXTERN int    p_is;           /* 'incsearch' */
  EXTERN int    p_im;           /* 'insertmode' */
  EXTERN char_u *p_isf;         /* 'isfname' */
***************
*** 629,637 ****
  EXTERN int    p_macatsui;     /* 'macatsui' */
  #endif
  EXTERN int    p_magic;        /* 'magic' */
- #ifdef FEAT_MBYTE
  EXTERN char_u *p_menc;        /* 'makeencoding' */
- #endif
  #ifdef FEAT_QUICKFIX
  EXTERN char_u *p_mef;         /* 'makeef' */
  EXTERN char_u *p_mp;          /* 'makeprg' */
--- 613,619 ----
***************
*** 644,652 ****
  EXTERN int      p_cc_cols[256]; /* array for 'colorcolumn' columns */
  #endif
  EXTERN long   p_mat;          /* 'matchtime' */
- #ifdef FEAT_MBYTE
  EXTERN long   p_mco;          /* 'maxcombine' */
- #endif
  #ifdef FEAT_EVAL
  EXTERN long   p_mfd;          /* 'maxfuncdepth' */
  #endif
--- 626,632 ----
***************
*** 850,858 ****
  #ifdef FEAT_ARABIC
  EXTERN int    p_tbidi;        /* 'termbidi' */
  #endif
- #ifdef FEAT_MBYTE
  EXTERN char_u *p_tenc;        /* 'termencoding' */
- #endif
  #ifdef FEAT_TERMGUICOLORS
  EXTERN int    p_tgc;          /* 'termguicolors' */
  #endif
--- 830,836 ----
***************
*** 1001,1009 ****
  #endif
      , BV_BIN
      , BV_BL
- #ifdef FEAT_MBYTE
      , BV_BOMB
- #endif
      , BV_CI
  #ifdef FEAT_CINDENT
      , BV_CIN
--- 979,985 ----
***************
*** 1068,1076 ****
      , BV_LISP
      , BV_LW
  #endif
- #ifdef FEAT_MBYTE
      , BV_MENC
- #endif
      , BV_MA
      , BV_ML
      , BV_MOD
--- 1044,1050 ----
*** ../vim-8.1.0809/src/os_mac.h        2018-09-21 14:48:49.644214400 +0200
--- src/os_mac.h        2019-01-24 17:04:40.809420405 +0100
***************
*** 37,45 ****
  # include <Memory.h>
  # include <OSUtils.h>
  # include <Files.h>
! # ifdef FEAT_MBYTE
! #  include <Script.h>
! # endif
  #endif
  
  /*
--- 37,43 ----
  # include <Memory.h>
  # include <OSUtils.h>
  # include <Files.h>
! # include <Script.h>
  #endif
  
  /*
*** ../vim-8.1.0809/src/os_win32.h      2018-09-21 14:48:49.644214400 +0200
--- src/os_win32.h      2019-01-24 17:04:56.853303732 +0100
***************
*** 213,226 ****
  #endif
  
  /* Enable common dialogs input unicode from IME if possible. */
! #ifdef FEAT_MBYTE
! # define pDispatchMessage DispatchMessageW
! # define pGetMessage GetMessageW
! # define pIsDialogMessage IsDialogMessageW
! # define pPeekMessage PeekMessageW
! #else
! # define pDispatchMessage DispatchMessage
! # define pGetMessage GetMessage
! # define pIsDialogMessage IsDialogMessage
! # define pPeekMessage PeekMessage
! #endif
--- 213,219 ----
  #endif
  
  /* Enable common dialogs input unicode from IME if possible. */
! #define pDispatchMessage DispatchMessageW
! #define pGetMessage GetMessageW
! #define pIsDialogMessage IsDialogMessageW
! #define pPeekMessage PeekMessageW
*** ../vim-8.1.0809/src/proto.h 2019-01-22 21:45:36.553678901 +0100
--- src/proto.h 2019-01-24 17:05:20.409132700 +0100
***************
*** 168,177 ****
  void qsort(void *base, size_t elm_count, size_t elm_size, int (*cmp)(const 
void *, const void *));
  #endif
  # include "move.pro"
! # if defined(FEAT_MBYTE) || defined(FEAT_XIM) || defined(FEAT_KEYMAP) \
!       || defined(FEAT_POSTSCRIPT)
! #  include "mbyte.pro"
! # endif
  # include "normal.pro"
  # include "ops.pro"
  # include "option.pro"
--- 168,174 ----
  void qsort(void *base, size_t elm_count, size_t elm_size, int (*cmp)(const 
void *, const void *));
  #endif
  # include "move.pro"
! # include "mbyte.pro"
  # include "normal.pro"
  # include "ops.pro"
  # include "option.pro"
*** ../vim-8.1.0809/src/spell.h 2018-02-10 13:55:21.000000000 +0100
--- src/spell.h 2019-01-24 17:06:16.664725481 +0100
***************
*** 44,54 ****
  typedef long idx_T;
  #endif
  
- #ifdef FEAT_MBYTE
  typedef int salfirst_T;
- #else
- typedef short salfirst_T;
- #endif
  
  /*
   * Structure used to store words and other info for one language, loaded from
--- 44,50 ----
***************
*** 132,143 ****
                                   load */
  
      int               sl_has_map;     /* TRUE if there is a MAP line */
- #ifdef FEAT_MBYTE
      hashtab_T sl_map_hash;    /* MAP for multi-byte chars */
      int               sl_map_array[256]; /* MAP for first 256 chars */
- #else
-     char_u    sl_map_array[256]; /* MAP for first 256 chars */
- #endif
      hashtab_T sl_sounddone;   /* table with soundfolded words that have
                                   handled, see add_sound_suggest() */
  };
--- 128,135 ----
***************
*** 213,223 ****
      char_u    *sm_oneof;      /* letters from () or NULL */
      char_u    *sm_rules;      /* rules like ^, $, priority */
      char_u    *sm_to;         /* replacement. */
- #ifdef FEAT_MBYTE
      int               *sm_lead_w;     /* wide character copy of "sm_lead" */
      int               *sm_oneof_w;    /* wide character copy of "sm_oneof" */
      int               *sm_to_w;       /* wide character copy of "sm_to" */
- #endif
  } salitem_T;
  
  /* Values for SP_*ERROR are negative, positive values are used by
--- 205,213 ----
***************
*** 260,300 ****
   * differ from what the .spl file uses.
   * These must not be called with negative number!
   */
! #ifndef FEAT_MBYTE
! /* Non-multi-byte implementation. */
! # define SPELL_TOFOLD(c) ((c) < 256 ? (int)spelltab.st_fold[c] : (c))
! # define SPELL_TOUPPER(c) ((c) < 256 ? (int)spelltab.st_upper[c] : (c))
! # define SPELL_ISUPPER(c) ((c) < 256 ? spelltab.st_isu[c] : FALSE)
! #else
! # if defined(HAVE_WCHAR_H)
! #  include <wchar.h>      /* for towupper() and towlower() */
! # endif
  /* Multi-byte implementation.  For Unicode we can call utf_*(), but don't do
   * that for ASCII, because we don't want to use 'casemap' here.  Otherwise use
   * the "w" library function for characters above 255 if available. */
! # ifdef HAVE_TOWLOWER
! #  define SPELL_TOFOLD(c) (enc_utf8 && (c) >= 128 ? utf_fold(c) \
            : (c) < 256 ? (int)spelltab.st_fold[c] : (int)towlower(c))
! # else
! #  define SPELL_TOFOLD(c) (enc_utf8 && (c) >= 128 ? utf_fold(c) \
            : (c) < 256 ? (int)spelltab.st_fold[c] : (c))
! # endif
  
! # ifdef HAVE_TOWUPPER
! #  define SPELL_TOUPPER(c) (enc_utf8 && (c) >= 128 ? utf_toupper(c) \
            : (c) < 256 ? (int)spelltab.st_upper[c] : (int)towupper(c))
! # else
! #  define SPELL_TOUPPER(c) (enc_utf8 && (c) >= 128 ? utf_toupper(c) \
            : (c) < 256 ? (int)spelltab.st_upper[c] : (c))
! # endif
  
! # ifdef HAVE_ISWUPPER
! #  define SPELL_ISUPPER(c) (enc_utf8 && (c) >= 128 ? utf_isupper(c) \
            : (c) < 256 ? spelltab.st_isu[c] : iswupper(c))
! # else
! #  define SPELL_ISUPPER(c) (enc_utf8 && (c) >= 128 ? utf_isupper(c) \
            : (c) < 256 ? spelltab.st_isu[c] : (FALSE))
- # endif
  #endif
  
  #ifdef FEAT_SPELL
--- 250,283 ----
   * differ from what the .spl file uses.
   * These must not be called with negative number!
   */
! #if defined(HAVE_WCHAR_H)
! # include <wchar.h>       /* for towupper() and towlower() */
! #endif
  /* Multi-byte implementation.  For Unicode we can call utf_*(), but don't do
   * that for ASCII, because we don't want to use 'casemap' here.  Otherwise use
   * the "w" library function for characters above 255 if available. */
! #ifdef HAVE_TOWLOWER
! # define SPELL_TOFOLD(c) (enc_utf8 && (c) >= 128 ? utf_fold(c) \
            : (c) < 256 ? (int)spelltab.st_fold[c] : (int)towlower(c))
! #else
! # define SPELL_TOFOLD(c) (enc_utf8 && (c) >= 128 ? utf_fold(c) \
            : (c) < 256 ? (int)spelltab.st_fold[c] : (c))
! #endif
  
! #ifdef HAVE_TOWUPPER
! # define SPELL_TOUPPER(c) (enc_utf8 && (c) >= 128 ? utf_toupper(c) \
            : (c) < 256 ? (int)spelltab.st_upper[c] : (int)towupper(c))
! #else
! # define SPELL_TOUPPER(c) (enc_utf8 && (c) >= 128 ? utf_toupper(c) \
            : (c) < 256 ? (int)spelltab.st_upper[c] : (c))
! #endif
  
! #ifdef HAVE_ISWUPPER
! # define SPELL_ISUPPER(c) (enc_utf8 && (c) >= 128 ? utf_isupper(c) \
            : (c) < 256 ? spelltab.st_isu[c] : iswupper(c))
! #else
! # define SPELL_ISUPPER(c) (enc_utf8 && (c) >= 128 ? utf_isupper(c) \
            : (c) < 256 ? spelltab.st_isu[c] : (FALSE))
  #endif
  
  #ifdef FEAT_SPELL
*** ../vim-8.1.0809/src/structs.h       2019-01-18 22:48:30.900796633 +0100
--- src/structs.h       2019-01-24 17:06:44.200526742 +0100
***************
*** 1103,1111 ****
  {
      char_u    *vir_line;      /* text of the current line */
      FILE      *vir_fd;        /* file descriptor */
- #ifdef FEAT_MBYTE
      vimconv_T vir_conv;       /* encoding conversion */
- #endif
      int               vir_version;    /* viminfo version detected or -1 */
      garray_T  vir_barlines;   /* lines starting with | */
  } vir_T;
--- 1103,1109 ----
***************
*** 2013,2028 ****
      /* for spell checking */
      garray_T  b_langp;        /* list of pointers to slang_T, see spell.c */
      char_u    b_spell_ismw[256];/* flags: is midword char */
- # ifdef FEAT_MBYTE
      char_u    *b_spell_ismw_mb; /* multi-byte midword chars */
- # endif
      char_u    *b_p_spc;       /* 'spellcapcheck' */
      regprog_T *b_cap_prog;    /* program for 'spellcapcheck' */
      char_u    *b_p_spf;       /* 'spellfile' */
      char_u    *b_p_spl;       /* 'spelllang' */
- # ifdef FEAT_MBYTE
      int               b_cjk;          /* all CJK letters as OK */
- # endif
  #endif
  #if !defined(FEAT_SYN_HL) && !defined(FEAT_SPELL)
      int               dummy;
--- 2011,2022 ----
***************
*** 2233,2241 ****
      unsigned  b_bkc_flags;    /* flags for 'backupcopy' */
      int               b_p_ci;         /* 'copyindent' */
      int               b_p_bin;        /* 'binary' */
- #ifdef FEAT_MBYTE
      int               b_p_bomb;       /* 'bomb' */
- #endif
      char_u    *b_p_bh;        /* 'bufhidden' */
      char_u    *b_p_bt;        /* 'buftype' */
  #ifdef FEAT_QUICKFIX
--- 2227,2233 ----
***************
*** 2270,2278 ****
      int               b_p_et;         /* 'expandtab' */
      int               b_p_et_nobin;   /* b_p_et saved for binary mode */
      int               b_p_et_nopaste; /* b_p_et saved for paste mode */
- #ifdef FEAT_MBYTE
      char_u    *b_p_fenc;      /* 'fileencoding' */
- #endif
      char_u    *b_p_ff;        /* 'fileformat' */
      char_u    *b_p_ft;        /* 'filetype' */
      char_u    *b_p_fo;        /* 'formatoptions' */
--- 2262,2268 ----
***************
*** 2304,2312 ****
  #ifdef FEAT_LISP
      int               b_p_lisp;       /* 'lisp' */
  #endif
- #ifdef FEAT_MBYTE
      char_u    *b_p_menc;      /* 'makeencoding' */
- #endif
      char_u    *b_p_mps;       /* 'matchpairs' */
      int               b_p_ml;         /* 'modeline' */
      int               b_p_ml_nobin;   /* b_p_ml saved for binary mode */
--- 2294,2300 ----
***************
*** 2425,2435 ****
  
      int               b_start_eol;    /* last line had eol when it was read */
      int               b_start_ffc;    /* first char of 'ff' when edit started 
*/
- #ifdef FEAT_MBYTE
      char_u    *b_start_fenc;  /* 'fileencoding' when edit started or NULL */
      int               b_bad_char;     /* "++bad=" argument when edit started 
or 0 */
      int               b_start_bomb;   /* 'bomb' when it was read */
- #endif
  
  #ifdef FEAT_EVAL
      dictitem_T        b_bufvar;       /* variable for "b:" Dictionary */
--- 2413,2421 ----
***************
*** 3107,3116 ****
      int               prechar;        /* prefix character (optional, always 
'g') */
      int               cmdchar;        /* command character */
      int               nchar;          /* next command character (optional) */
- #ifdef FEAT_MBYTE
      int               ncharC1;        /* first composing character (optional) 
*/
      int               ncharC2;        /* second composing character 
(optional) */
- #endif
      int               extra_char;     /* yet another character (optional) */
      long      opcount;        /* count before an operator */
      long      count0;         /* count before command, default 0 */
--- 3093,3100 ----
*** ../vim-8.1.0809/src/vim.h   2019-01-19 17:43:03.433449041 +0100
--- src/vim.h   2019-01-24 17:09:28.719346216 +0100
***************
*** 210,216 ****
  #endif
  
  /* The Mac conversion stuff doesn't work under X11. */
! #if defined(FEAT_MBYTE) && defined(MACOS_X_DARWIN)
  # define MACOS_CONVERT
  #endif
  
--- 210,216 ----
  #endif
  
  /* The Mac conversion stuff doesn't work under X11. */
! #if defined(MACOS_X_DARWIN)
  # define MACOS_CONVERT
  #endif
  
***************
*** 431,446 ****
   * bits.  u8char_T is only used for displaying, it could be 16 bits to save
   * memory.
   */
! #ifdef FEAT_MBYTE
! # ifdef UNICODE16
  typedef unsigned short u8char_T;    /* short should be 16 bits */
! # else
! #  if VIM_SIZEOF_INT >= 4
! typedef unsigned int u8char_T;            /* int is 32 bits */
! #  else
! typedef unsigned long u8char_T;           /* long should be 32 bits or more */
! #  endif
! # endif
  #endif
  
  #ifndef UNIX              /* For Unix this is included in os_unix.h */
--- 431,440 ----
   * bits.  u8char_T is only used for displaying, it could be 16 bits to save
   * memory.
   */
! #ifdef UNICODE16
  typedef unsigned short u8char_T;    /* short should be 16 bits */
! #else
! typedef unsigned int u8char_T;            /* int is 32 bits or more */
  #endif
  
  #ifndef UNIX              /* For Unix this is included in os_unix.h */
***************
*** 1516,1529 ****
  
  #define DIALOG_MSG_SIZE 1000  /* buffer size for dialog_msg() */
  
! #ifdef FEAT_MBYTE
! # define MSG_BUF_LEN 480      /* length of buffer for small messages */
! # define MSG_BUF_CLEN  (MSG_BUF_LEN / 6)    /* cell length (worst case: utf-8
                                               takes 6 bytes for one cell) */
- #else
- # define MSG_BUF_LEN 80               /* length of buffer for small messages 
*/
- # define MSG_BUF_CLEN  MSG_BUF_LEN        /* cell length */
- #endif
  
  #define FOLD_TEXT_LEN  51     /* buffer size for get_foldtext() */
  
--- 1510,1518 ----
  
  #define DIALOG_MSG_SIZE 1000  /* buffer size for dialog_msg() */
  
! #define MSG_BUF_LEN 480       /* length of buffer for small messages */
! #define MSG_BUF_CLEN  (MSG_BUF_LEN / 6)    /* cell length (worst case: utf-8
                                               takes 6 bytes for one cell) */
  
  #define FOLD_TEXT_LEN  51     /* buffer size for get_foldtext() */
  
***************
*** 1609,1615 ****
  # endif
  #endif
  
- #ifdef FEAT_MBYTE
  /* We need to call mb_stricmp() even when we aren't dealing with a multi-byte
   * encoding because mb_stricmp() takes care of all ascii and non-ascii
   * encodings, including characters with umlauts in latin1, etc., while
--- 1598,1603 ----
***************
*** 1618,1627 ****
  
  # define MB_STRICMP(d, s)     mb_strnicmp((char_u *)(d), (char_u *)(s), 
(int)MAXCOL)
  # define MB_STRNICMP(d, s, n) mb_strnicmp((char_u *)(d), (char_u *)(s), 
(int)(n))
- #else
- # define MB_STRICMP(d, s)     STRICMP((d), (s))
- # define MB_STRNICMP(d, s, n) STRNICMP((d), (s), (n))
- #endif
  
  #define STRCAT(d, s)      strcat((char *)(d), (char *)(s))
  #define STRNCAT(d, s, n)    strncat((char *)(d), (char *)(s), (size_t)(n))
--- 1606,1611 ----
***************
*** 1766,1781 ****
  # endif
  #endif
  
! #ifdef FEAT_MBYTE
! # define MAX_MCO      6       /* maximum value for 'maxcombine' */
  
  /* Maximum number of bytes in a multi-byte character.  It can be one 32-bit
   * character of up to 6 bytes, or one 16-bit character of up to three bytes
   * plus six following composing characters of three bytes each. */
! # define MB_MAXBYTES  21
! #else
! # define MB_MAXBYTES  1
! #endif
  
  #if (defined(FEAT_PROFILE) || defined(FEAT_RELTIME)) && !defined(PROTO)
  # ifdef WIN3264
--- 1750,1761 ----
  # endif
  #endif
  
! #define MAX_MCO       6       /* maximum value for 'maxcombine' */
  
  /* Maximum number of bytes in a multi-byte character.  It can be one 32-bit
   * character of up to 6 bytes, or one 16-bit character of up to three bytes
   * plus six following composing characters of three bytes each. */
! #define MB_MAXBYTES   21
  
  #if (defined(FEAT_PROFILE) || defined(FEAT_RELTIME)) && !defined(PROTO)
  # ifdef WIN3264
***************
*** 2128,2134 ****
  # define USE_MCH_ERRMSG
  #endif
  
! # if defined(FEAT_MBYTE) && defined(FEAT_EVAL) \
        && (!defined(FEAT_GUI_W32) \
             || !(defined(FEAT_MBYTE_IME) || defined(GLOBAL_IME))) \
        && !(defined(FEAT_GUI_MAC) && defined(MACOS_CONVERT))
--- 2108,2114 ----
  # define USE_MCH_ERRMSG
  #endif
  
! # if defined(FEAT_EVAL) \
        && (!defined(FEAT_GUI_W32) \
             || !(defined(FEAT_MBYTE_IME) || defined(GLOBAL_IME))) \
        && !(defined(FEAT_GUI_MAC) && defined(MACOS_CONVERT))
***************
*** 2139,2158 ****
  # define IME_WITHOUT_XIM
  #endif
  
! #if defined(FEAT_MBYTE) && (defined(FEAT_XIM) \
        || defined(IME_WITHOUT_XIM) \
        || (defined(FEAT_GUI_W32) \
            && (defined(FEAT_MBYTE_IME) || defined(GLOBAL_IME))) \
!       || defined(FEAT_GUI_MAC))
  /* im_set_active() is available */
  # define HAVE_INPUT_METHOD
  #endif
  
- #ifndef FEAT_MBYTE
- # define after_pathsep(b, p)  vim_ispathsep(*((p) - 1))
- # define transchar_byte(c)    transchar(c)
- #endif
- 
  #ifndef FEAT_LINEBREAK
  /* Without the 'numberwidth' option line numbers are always 7 chars. */
  # define number_width(x) 7
--- 2119,2133 ----
  # define IME_WITHOUT_XIM
  #endif
  
! #if defined(FEAT_XIM) \
        || defined(IME_WITHOUT_XIM) \
        || (defined(FEAT_GUI_W32) \
            && (defined(FEAT_MBYTE_IME) || defined(GLOBAL_IME))) \
!       || defined(FEAT_GUI_MAC)
  /* im_set_active() is available */
  # define HAVE_INPUT_METHOD
  #endif
  
  #ifndef FEAT_LINEBREAK
  /* Without the 'numberwidth' option line numbers are always 7 chars. */
  # define number_width(x) 7
***************
*** 2160,2166 ****
  
  /* This must come after including proto.h.
   * For VMS this is defined in macros.h. */
! #if !(defined(FEAT_MBYTE) && defined(WIN3264)) && !defined(VMS)
  # define mch_open(n, m, p)    open((n), (m), (p))
  # define mch_fopen(n, p)      fopen((n), (p))
  #endif
--- 2135,2141 ----
  
  /* This must come after including proto.h.
   * For VMS this is defined in macros.h. */
! #if !defined(WIN3264) && !defined(VMS)
  # define mch_open(n, m, p)    open((n), (m), (p))
  # define mch_fopen(n, p)      fopen((n), (p))
  #endif
***************
*** 2236,2292 ****
  # define vim_realloc(ptr, size)  realloc((ptr), (size))
  #endif
  
- #ifdef FEAT_MBYTE
  /*
   * Return byte length of character that starts with byte "b".
   * Returns 1 for a single-byte character.
   * MB_BYTE2LEN_CHECK() can be used to count a special key as one byte.
   * Don't call MB_BYTE2LEN(b) with b < 0 or b > 255!
   */
! # define MB_BYTE2LEN(b)               mb_bytelen_tab[b]
! # define MB_BYTE2LEN_CHECK(b) (((b) < 0 || (b) > 255) ? 1 : mb_bytelen_tab[b])
! #endif
  
- #if defined(FEAT_MBYTE) || defined(FEAT_POSTSCRIPT)
  /* properties used in enc_canon_table[] (first three mutually exclusive) */
! # define ENC_8BIT     0x01
! # define ENC_DBCS     0x02
! # define ENC_UNICODE  0x04
! 
! # define ENC_ENDIAN_B 0x10        /* Unicode: Big endian */
! # define ENC_ENDIAN_L 0x20        /* Unicode: Little endian */
! 
! # define ENC_2BYTE    0x40        /* Unicode: UCS-2 */
! # define ENC_4BYTE    0x80        /* Unicode: UCS-4 */
! # define ENC_2WORD    0x100       /* Unicode: UTF-16 */
! 
! # define ENC_LATIN1   0x200       /* Latin1 */
! # define ENC_LATIN9   0x400       /* Latin9 */
! # define ENC_MACROMAN 0x800       /* Mac Roman (not Macro Man! :-) */
! #endif
! 
! #ifdef FEAT_MBYTE
! # ifdef USE_ICONV
! #  ifndef EILSEQ
! #   define EILSEQ 123
! #  endif
! #  ifdef DYNAMIC_ICONV
  /* On Win32 iconv.dll is dynamically loaded. */
! #   define ICONV_ERRNO (*iconv_errno())
! #   define ICONV_E2BIG  7
! #   define ICONV_EINVAL 22
! #   define ICONV_EILSEQ 42
! #  else
! #   define ICONV_ERRNO errno
! #   define ICONV_E2BIG  E2BIG
! #   define ICONV_EINVAL EINVAL
! #   define ICONV_EILSEQ EILSEQ
! #  endif
  # endif
- 
  #endif
  
- 
  #define SIGN_BYTE 1       /* byte value used where sign is displayed;
                               attribute value is sign type */
  
--- 2211,2259 ----
  # define vim_realloc(ptr, size)  realloc((ptr), (size))
  #endif
  
  /*
   * Return byte length of character that starts with byte "b".
   * Returns 1 for a single-byte character.
   * MB_BYTE2LEN_CHECK() can be used to count a special key as one byte.
   * Don't call MB_BYTE2LEN(b) with b < 0 or b > 255!
   */
! #define MB_BYTE2LEN(b)                mb_bytelen_tab[b]
! #define MB_BYTE2LEN_CHECK(b)  (((b) < 0 || (b) > 255) ? 1 : mb_bytelen_tab[b])
  
  /* properties used in enc_canon_table[] (first three mutually exclusive) */
! #define ENC_8BIT      0x01
! #define ENC_DBCS      0x02
! #define ENC_UNICODE   0x04
! 
! #define ENC_ENDIAN_B  0x10        /* Unicode: Big endian */
! #define ENC_ENDIAN_L  0x20        /* Unicode: Little endian */
! 
! #define ENC_2BYTE     0x40        /* Unicode: UCS-2 */
! #define ENC_4BYTE     0x80        /* Unicode: UCS-4 */
! #define ENC_2WORD     0x100       /* Unicode: UTF-16 */
! 
! #define ENC_LATIN1    0x200       /* Latin1 */
! #define ENC_LATIN9    0x400       /* Latin9 */
! #define ENC_MACROMAN  0x800       /* Mac Roman (not Macro Man! :-) */
! 
! #ifdef USE_ICONV
! # ifndef EILSEQ
! #  define EILSEQ 123
! # endif
! # ifdef DYNAMIC_ICONV
  /* On Win32 iconv.dll is dynamically loaded. */
! #  define ICONV_ERRNO (*iconv_errno())
! #  define ICONV_E2BIG  7
! #  define ICONV_EINVAL 22
! #  define ICONV_EILSEQ 42
! # else
! #  define ICONV_ERRNO errno
! #  define ICONV_E2BIG  E2BIG
! #  define ICONV_EINVAL EINVAL
! #  define ICONV_EILSEQ EILSEQ
  # endif
  #endif
  
  #define SIGN_BYTE 1       /* byte value used where sign is displayed;
                               attribute value is sign type */
  
*** ../vim-8.1.0809/src/version.c       2019-01-24 16:38:58.280712420 +0100
--- src/version.c       2019-01-24 17:17:24.875973757 +0100
***************
*** 793,794 ****
--- 789,792 ----
  {   /* Add new patch number below this line */
+ /**/
+     810,
  /**/

-- 
FATHER:       Make sure the Prince doesn't leave this room until I come and
              get him.
FIRST GUARD:  Not ... to leave the room ... even if you come and get him.
FATHER:       No.  Until I come and get him.
SECOND GUARD: Hic.
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui