# HG changeset patch # User Bram Moolenaar # Date 1548347408 -3600 # Node ID 62b3805506b37c8b8523037b609e745f23b11e98 # Parent 5d64befd4ab4d32a188feea7be300fccc643b6c3 patch 8.1.0810: too many #ifdefs commit https://github.com/vim/vim/commit/264b74fa545edfb92c0d7d08a02c26331cc5b168 Author: Bram Moolenaar Date: Thu Jan 24 17:18:42 2019 +0100 patch 8.1.0810: too many #ifdefs Problem: Too many #ifdefs. Solution: Graduate FEAT_MBYTE, part 4. diff --git a/src/ex_cmds.h b/src/ex_cmds.h --- a/src/ex_cmds.h +++ b/src/ex_cmds.h @@ -1789,10 +1789,8 @@ struct exarg 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 diff --git a/src/getchar.c b/src/getchar.c --- a/src/getchar.c +++ b/src/getchar.c @@ -291,14 +291,11 @@ add_num_buff(buffheader_T *buf, long n) 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 @@ -307,7 +304,6 @@ add_char_buff(buffheader_T *buf, int c) { if (!IS_SPECIAL(c)) c = bytes[i]; -#endif if (IS_SPECIAL(c) || c == K_SPECIAL || c == NUL) { @@ -333,9 +329,7 @@ add_char_buff(buffheader_T *buf, int c) temp[1] = NUL; } add_buff(buf, temp, -1L); -#ifdef FEAT_MBYTE } -#endif } /* First read ahead buffer. Used for translated commands. */ @@ -596,12 +590,10 @@ AppendToRedobuffLit( 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); @@ -686,11 +678,7 @@ stuffReadbuffSpec(char_u *s) } else { -#ifdef FEAT_MBYTE c = mb_ptr2char_adv(&s); -#else - c = *s++; -#endif if (c == CAR || c == NL || c == ESC) c = ' '; stuffcharReadbuff(c); @@ -732,11 +720,9 @@ read_redo(int init, int old_redo) 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) { @@ -752,7 +738,6 @@ read_redo(int init, int old_redo) 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)) @@ -760,7 +745,6 @@ read_redo(int init, int old_redo) else n = 1; for (i = 0; ; ++i) -#endif { if (c == K_SPECIAL) /* special key or escaped K_SPECIAL */ { @@ -776,7 +760,6 @@ read_redo(int init, int old_redo) bp = bp->b_next; p = bp->b_str; } -#ifdef FEAT_MBYTE buf[i] = c; if (i == n - 1) /* last byte of a character */ { @@ -787,7 +770,6 @@ read_redo(int init, int old_redo) c = *p; if (c == NUL) /* cannot happen? */ break; -#endif } } @@ -1093,11 +1075,7 @@ ins_typebuf( 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; @@ -1106,14 +1084,7 @@ ins_char_typebuf(int c) 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); } @@ -1579,11 +1550,9 @@ updatescript(int c) 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 @@ -1763,7 +1732,6 @@ vgetc(void) 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! @@ -1794,7 +1762,6 @@ vgetc(void) --no_mapping; c = (*mb_ptr2char)(buf); } -#endif break; } @@ -2212,7 +2179,6 @@ vgetorpeek(int advance) break; } -#ifdef FEAT_MBYTE /* Don't allow mapping the first byte(s) of a * multi-byte char. Happens when mapping * and then changing 'encoding'. Beware @@ -2225,7 +2191,6 @@ vgetorpeek(int advance) && MB_BYTE2LEN(c1) > MB_PTR2LEN(p2)) mlen = 0; } -#endif /* * Check an entry whether it matches. * - Full match: mlen == keylen @@ -2685,38 +2650,29 @@ vgetorpeek(int advance) 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 @@ -2726,7 +2682,6 @@ vgetorpeek(int advance) if ((*mb_ptr2cells)(ptr + col) > 1) --curwin->w_wcol; } -#endif } setcursor(); out_flush(); @@ -3434,7 +3389,6 @@ do_map( * 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; @@ -3458,9 +3412,7 @@ do_map( goto theend; } } - else -#endif - if (vim_iswordc(keys[len - 1])) /* ends in keyword char */ + 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,9 +4410,7 @@ check_abbr( #ifdef FEAT_LOCALMAP mapblock_T *mp2; #endif -#ifdef FEAT_MBYTE int clen = 0; /* length in characters */ -#endif int is_id = TRUE; int vim_abbr; @@ -4480,7 +4430,6 @@ check_abbr( if (col == 0) /* cannot be an abbr. */ return FALSE; -#ifdef FEAT_MBYTE if (has_mbyte) { char_u *p; @@ -4508,7 +4457,6 @@ check_abbr( scol = (int)(p - ptr); } else -#endif { if (!vim_iswordc(ptr[col - 1])) vim_abbr = TRUE; /* Vim added abbr. */ @@ -4601,7 +4549,6 @@ check_abbr( { 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 */ @@ -4610,7 +4557,6 @@ check_abbr( j += (*mb_char2bytes)(c, tb + j); } else -#endif tb[j++] = c; } tb[j] = NUL; @@ -4637,10 +4583,8 @@ check_abbr( 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; @@ -4715,13 +4659,7 @@ vim_strsave_escape_csi( /* 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); + res = alloc((unsigned)(STRLEN(p) * 4) + 1); if (res != NULL) { d = res; @@ -5012,7 +4950,6 @@ put_escstr(FILE *fd, char_u *strstart, i for ( ; *str != NUL; ++str) { -#ifdef FEAT_MBYTE char_u *p; /* Check for a multi-byte character, which may contain escaped @@ -5026,7 +4963,6 @@ put_escstr(FILE *fd, char_u *strstart, i --str; continue; } -#endif c = *str; /* diff --git a/src/glbl_ime.cpp b/src/glbl_ime.cpp --- a/src/glbl_ime.cpp +++ b/src/glbl_ime.cpp @@ -134,7 +134,7 @@ global_ime_DefWindowProc(HWND hWnd, UINT if (pIApp == NULL || pIApp->OnDefWindowProc(hWnd, Msg, wParam, lParam, &lResult) != S_OK) { -#if defined(WIN3264) && defined(FEAT_MBYTE) +#if defined(WIN3264) if (wide_WindowProc) lResult = DefWindowProcW(hWnd, Msg, wParam, lParam); else diff --git a/src/globals.h b/src/globals.h --- a/src/globals.h +++ b/src/globals.h @@ -44,7 +44,6 @@ EXTERN sattr_T *ScreenAttrs INIT(= NULL) 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 @@ -61,7 +60,6 @@ EXTERN int Screen_mco INIT(= 0); /* val /* 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: @@ -798,41 +796,38 @@ EXTERN int vr_lines_changed INIT(= 0); / 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 +#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 -#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) +#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 +#endif EXTERN int has_mbyte INIT(= 0); /* any multi-byte encoding */ -# if defined(WIN3264) && defined(FEAT_MBYTE) +#if defined(WIN3264) EXTERN int wide_WindowProc INIT(= FALSE); /* use wide WindowProc() */ -# endif +#endif /* * To speed up BYTELEN() we fill a table with the byte lengths whenever @@ -875,7 +870,6 @@ EXTERN int (*iconvctl) (iconv_t cd, int EXTERN int* (*iconv_errno) (void); # endif -#endif /* FEAT_MBYTE */ #ifdef FEAT_XIM # ifdef FEAT_GUI_GTK diff --git a/src/gui.h b/src/gui.h --- a/src/gui.h +++ b/src/gui.h @@ -303,13 +303,11 @@ typedef struct Gui GuiFont menu_font; /* menu item font */ # endif #endif -#ifdef FEAT_MBYTE GuiFont wide_font; /* Normal 'guifontwide' font */ -# ifndef FEAT_GUI_GTK +#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 */ diff --git a/src/if_py_both.h b/src/if_py_both.h --- a/src/if_py_both.h +++ b/src/if_py_both.h @@ -24,11 +24,7 @@ static char_u e_py_systemexit[] = "E880: 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 ENC_OPT ((char *)p_enc) #define DOPY_FUNC "_vim_pydo" static const char *vim_special_path = "_vim_path_"; @@ -985,11 +981,7 @@ VimStrwidth(PyObject *self UNUSED, PyObj 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); diff --git a/src/macros.h b/src/macros.h --- a/src/macros.h +++ b/src/macros.h @@ -96,17 +96,10 @@ * 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 +#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,8 +132,7 @@ * 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) \ +# define LANGMAP_ADJUST(c, condition) \ do { \ if (*p_langmap \ && (condition) \ @@ -154,17 +146,6 @@ 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 @@ -256,33 +237,21 @@ * 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) +#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 +#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 +#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 +#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_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 +#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) diff --git a/src/option.h b/src/option.h --- a/src/option.h +++ b/src/option.h @@ -69,13 +69,11 @@ #endif -#ifdef FEAT_MBYTE /* Possible values for 'encoding' */ -# define ENC_UCSBOM "ucs-bom" /* check for BOM at start of file */ +#define ENC_UCSBOM "ucs-bom" /* check for BOM at start of file */ /* default value for 'encoding' */ -# define ENC_DFLT "latin1" -#endif +#define ENC_DFLT "latin1" /* end-of-line style */ #define EOL_UNKNOWN -1 /* not defined yet */ @@ -315,10 +313,8 @@ EXTERN long p_aleph; /* 'aleph' */ #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 @@ -395,21 +391,17 @@ EXTERN char_u *p_bsdir; /* 'browsedir' * #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 +#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 +#define CMP_INTERNAL 0x001 +#define CMP_KEEPASCII 0x002 EXTERN char_u *p_enc; /* 'encoding' */ EXTERN int p_deco; /* 'delcombine' */ -# ifdef FEAT_EVAL +#ifdef FEAT_EVAL EXTERN char_u *p_ccv; /* 'charconvert' */ -# endif #endif #ifdef FEAT_CMDWIN EXTERN char_u *p_cedit; /* 'cedit' */ @@ -482,9 +474,7 @@ EXTERN char_u *p_gp; /* 'grepprg' */ 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 @@ -519,10 +509,8 @@ EXTERN char_u *p_pdev; /* 'printdevice' # 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' */ @@ -534,9 +522,7 @@ EXTERN char_u *p_guifont; /* 'guifont' * # 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) @@ -586,14 +572,12 @@ EXTERN char_u *p_imak; /* 'imactivatekey #define IM_OVER_THE_SPOT 1L EXTERN long p_imst; /* 'imstyle' */ #endif -#if defined(FEAT_EVAL) && defined(FEAT_MBYTE) +#if defined(FEAT_EVAL) 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' */ @@ -629,9 +613,7 @@ EXTERN char_u *p_luadll; /* 'luadll' */ 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' */ @@ -644,9 +626,7 @@ EXTERN char_u *p_cc; /* 'colorcolumn' 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 @@ -850,9 +830,7 @@ EXTERN char_u *p_tcldll; /* 'tcldll' */ #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 @@ -1001,9 +979,7 @@ enum #endif , BV_BIN , BV_BL -#ifdef FEAT_MBYTE , BV_BOMB -#endif , BV_CI #ifdef FEAT_CINDENT , BV_CIN @@ -1068,9 +1044,7 @@ enum , BV_LISP , BV_LW #endif -#ifdef FEAT_MBYTE , BV_MENC -#endif , BV_MA , BV_ML , BV_MOD diff --git a/src/os_mac.h b/src/os_mac.h --- a/src/os_mac.h +++ b/src/os_mac.h @@ -37,9 +37,7 @@ # include # include # include -# ifdef FEAT_MBYTE -# include -# endif +# include #endif /* diff --git a/src/os_win32.h b/src/os_win32.h --- a/src/os_win32.h +++ b/src/os_win32.h @@ -213,14 +213,7 @@ Trace(char *pszFormat, ...); #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 +#define pDispatchMessage DispatchMessageW +#define pGetMessage GetMessageW +#define pIsDialogMessage IsDialogMessageW +#define pPeekMessage PeekMessageW diff --git a/src/proto.h b/src/proto.h --- a/src/proto.h +++ b/src/proto.h @@ -168,10 +168,7 @@ char_u *vim_strpbrk(char_u *s, char_u *c 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 "mbyte.pro" # include "normal.pro" # include "ops.pro" # include "option.pro" diff --git a/src/search.c b/src/search.c --- a/src/search.c +++ b/src/search.c @@ -85,10 +85,8 @@ static int last_idx = 0; /* index in spa 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]; @@ -248,7 +246,6 @@ reverse_text(char_u *s) rev_i = len; for (s_i = 0; s_i < len; ++s_i) { -# ifdef FEAT_MBYTE if (has_mbyte) { int mb_len; @@ -259,7 +256,6 @@ reverse_text(char_u *s) s_i += mb_len - 1; } else -# endif rev[--rev_i] = s[s_i]; } @@ -446,7 +442,6 @@ pat_has_uppercase(char_u *pat) while (*p != NUL) { -#ifdef FEAT_MBYTE int l; if (has_mbyte && (l = (*mb_ptr2len)(p)) > 1) @@ -455,9 +450,7 @@ pat_has_uppercase(char_u *pat) return TRUE; p += l; } - else -#endif - if (*p == '\\') + else if (*p == '\\') { if (p[1] == '_' && p[2] != NUL) /* skip "\_X" */ p += 3; @@ -480,11 +473,7 @@ pat_has_uppercase(char_u *pat) char_u * last_csearch(void) { -#ifdef FEAT_MBYTE return lastc_bytes; -#else - return lastc; -#endif } int @@ -503,13 +492,11 @@ last_csearch_until(void) 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 @@ -687,7 +674,6 @@ searchit( * 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 @@ -699,7 +685,6 @@ searchit( else start_char_len = (*mb_ptr2len)(ptr + pos->col); } -#endif else start_char_len = 1; if (dir == FORWARD) @@ -835,12 +820,10 @@ searchit( if (matchcol == matchpos.col && ptr[matchcol] != NUL) { -#ifdef FEAT_MBYTE if (has_mbyte) matchcol += (*mb_ptr2len)(ptr + matchcol); else -#endif ++matchcol; } } @@ -849,12 +832,10 @@ searchit( matchcol = matchpos.col; if (ptr[matchcol] != NUL) { -#ifdef FEAT_MBYTE if (has_mbyte) matchcol += (*mb_ptr2len)(ptr + matchcol); else -#endif ++matchcol; } } @@ -946,12 +927,10 @@ searchit( if (matchcol == matchpos.col && ptr[matchcol] != NUL) { -#ifdef FEAT_MBYTE if (has_mbyte) matchcol += (*mb_ptr2len)(ptr + matchcol); else -#endif ++matchcol; } } @@ -963,12 +942,10 @@ searchit( matchcol = matchpos.col; if (ptr[matchcol] != NUL) { -#ifdef FEAT_MBYTE if (has_mbyte) matchcol += (*mb_ptr2len)(ptr + matchcol); else -#endif ++matchcol; } } @@ -1029,14 +1006,12 @@ searchit( 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) { @@ -1410,7 +1385,6 @@ do_search( 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. */ @@ -1418,7 +1392,6 @@ do_search( STRCPY(msgbuf + 2, p); } else -#endif STRCPY(msgbuf + 1, p); if (spats[0].off.line || spats[0].off.end || spats[0].off.off) { @@ -1711,7 +1684,6 @@ searchc(cmdarg_T *cap, int t_cmd) *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) { @@ -1721,16 +1693,11 @@ searchc(cmdarg_T *cap, int t_cmd) 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 - ) + if (*lastc == NUL && lastc_bytelen == 1) return FAIL; if (dir) /* repeat in opposite direction */ dir = -lastcdir; @@ -1758,7 +1725,6 @@ searchc(cmdarg_T *cap, int t_cmd) while (count--) { -#ifdef FEAT_MBYTE if (has_mbyte) { for (;;) @@ -1787,7 +1753,6 @@ searchc(cmdarg_T *cap, int t_cmd) } } else -#endif { for (;;) { @@ -1804,7 +1769,6 @@ searchc(cmdarg_T *cap, int t_cmd) { /* backup to before the character (possibly double-byte) */ col -= dir; -#ifdef FEAT_MBYTE if (has_mbyte) { if (dir < 0) @@ -1814,7 +1778,6 @@ searchc(cmdarg_T *cap, int t_cmd) /* To previous char, which may be multi-byte. */ col -= (*mb_head_off)(p, p + col); } -#endif } curwin->w_cursor.col = col; @@ -1851,10 +1814,8 @@ check_prevcol( 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; @@ -2237,10 +2198,8 @@ findmatchlimit( else { --pos.col; -#ifdef FEAT_MBYTE if (has_mbyte) pos.col -= (*mb_head_off)(linep, linep + pos.col); -#endif } } else /* forward search */ @@ -2278,11 +2237,9 @@ findmatchlimit( } else { -#ifdef FEAT_MBYTE if (has_mbyte) pos.col += (*mb_ptr2len)(linep + pos.col); else -#endif ++pos.col; } } @@ -2934,10 +2891,8 @@ findpar( 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; } } @@ -3029,7 +2984,6 @@ cls(void) #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. */ @@ -3046,7 +3000,6 @@ cls(void) return 1; return c; } -#endif /* If cls_bigword is TRUE, report all non-blanks as class 1. */ if (cls_bigword) @@ -3903,7 +3856,6 @@ in_html_tag( int lc = NUL; pos_T pos; -#ifdef FEAT_MBYTE if (enc_dbcs) { char_u *lp = NULL; @@ -3924,7 +3876,6 @@ in_html_tag( } } else -#endif { for (p = line + curwin->w_cursor.col; p > line; ) { @@ -4371,11 +4322,9 @@ find_next_quote( ++col; else if (c == quotechar) break; -#ifdef FEAT_MBYTE if (has_mbyte) col += (*mb_ptr2len)(line + col); else -#endif ++col; } return col; @@ -4399,9 +4348,7 @@ find_prev_quote( 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, diff --git a/src/sign.c b/src/sign.c --- a/src/sign.c +++ b/src/sign.c @@ -820,7 +820,6 @@ sign_define_init_text(sign_T *sp, char_u } // Count cells and check for non-printable chars -# ifdef FEAT_MBYTE if (has_mbyte) { cells = 0; @@ -832,7 +831,6 @@ sign_define_init_text(sign_T *sp, char_u } } else -# endif { for (s = text; s < endp; ++s) if (!vim_isprintc(*s)) diff --git a/src/spell.c b/src/spell.c --- a/src/spell.c +++ b/src/spell.c @@ -224,12 +224,8 @@ typedef struct matchinf_S 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 */ @@ -249,9 +245,7 @@ typedef struct matchinf_S 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: @@ -295,12 +289,10 @@ typedef struct trystate_S 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 */ @@ -358,9 +350,7 @@ static void suggest_try_special(suginfo_ 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); @@ -380,15 +370,11 @@ static void rescore_one(suginfo_T *su, s 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); @@ -565,10 +551,8 @@ spell_check( *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) @@ -646,9 +630,7 @@ find_word(matchinf_T *mip, int mode) 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; @@ -794,10 +776,8 @@ find_word(matchinf_T *mip, int mode) 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) @@ -810,7 +790,6 @@ find_word(matchinf_T *mip, int mode) * 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 @@ -824,7 +803,6 @@ find_word(matchinf_T *mip, int mode) wlen = (int)(p - mip->mi_word); } } -#endif /* Check flags and region. For FIND_PREFIX check the condition and * prefix ID. @@ -896,7 +874,6 @@ find_word(matchinf_T *mip, int mode) 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 @@ -904,7 +881,6 @@ find_word(matchinf_T *mip, int mode) && 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. */ @@ -938,7 +914,6 @@ find_word(matchinf_T *mip, int mode) /* 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) { @@ -948,7 +923,6 @@ find_word(matchinf_T *mip, int mode) 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 @@ -1020,7 +994,6 @@ find_word(matchinf_T *mip, int mode) /* 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": @@ -1035,7 +1008,6 @@ find_word(matchinf_T *mip, int mode) mip->mi_compoff = (int)(p - mip->mi_fword); } } -#endif #if 0 /* Disabled, see below */ c = mip->mi_compoff; #endif @@ -1186,15 +1158,12 @@ match_checkcompoundpattern( 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. */ @@ -1205,7 +1174,6 @@ can_compound(slang_T *slang, char_u *wor p = uflags; } else -#endif p = flags; if (!vim_regexec_prog(&slang->sl_compprog, FALSE, p, 0)) return FALSE; @@ -1434,7 +1402,6 @@ find_prefix(matchinf_T *mip, int mode) /* 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. */ @@ -1443,7 +1410,6 @@ find_prefix(matchinf_T *mip, int mode) } else mip->mi_cprefixlen = mip->mi_prefixlen; -#endif find_word(mip, FIND_PREFIX); @@ -1912,10 +1878,8 @@ spell_load_lang(char_u *lang) 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"; } @@ -2015,11 +1979,9 @@ slang_clear(slang_T *lp) 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); @@ -2046,9 +2008,7 @@ slang_clear(slang_T *lp) 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); @@ -2284,13 +2244,8 @@ count_syllables(slang_T *slang, char_u * 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) @@ -2352,9 +2307,7 @@ did_set_spelllang(win_T *wp) 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; ) @@ -2366,9 +2319,7 @@ did_set_spelllang(win_T *wp) if (STRCMP(lang, "cjk") == 0) { -#ifdef FEAT_MBYTE wp->w_s->b_cjk = 1; -#endif continue; } @@ -2633,9 +2584,7 @@ theend: 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 } /* @@ -2651,7 +2600,6 @@ use_midword(slang_T *lp, win_T *wp) return; for (p = lp->sl_midword; *p != NUL; ) -#ifdef FEAT_MBYTE if (has_mbyte) { int c, l, n; @@ -2679,7 +2627,6 @@ use_midword(slang_T *lp, win_T *wp) p += l; } else -#endif wp->w_s->b_spell_ismw[*p++] = TRUE; } @@ -2725,11 +2672,9 @@ captype( 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); @@ -2825,7 +2770,6 @@ spell_delete_wordlist(void) } } -#if defined(FEAT_MBYTE) || defined(EXITFREE) || defined(PROTO) /* * Free all languages. */ @@ -2851,9 +2795,7 @@ spell_free_all(void) 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. @@ -2884,7 +2826,6 @@ spell_reload(void) } } } -#endif /* * Opposite of offset2bytes(). @@ -3016,7 +2957,6 @@ init_spell_chartab(void) did_set_spelltab = FALSE; clear_spell_chartab(&spelltab); -#ifdef FEAT_MBYTE if (enc_dbcs) { /* DBCS: assume double-wide characters are word characters. */ @@ -3041,7 +2981,6 @@ init_spell_chartab(void) } } else -#endif { /* Rough guess: use locale-dependent library functions. */ for (i = 128; i < 256; ++i) @@ -3073,7 +3012,6 @@ spell_iswordp( char_u *p, win_T *wp) /* buffer used */ { -#ifdef FEAT_MBYTE char_u *s; int l; int c; @@ -3102,7 +3040,6 @@ spell_iswordp( 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]]; } @@ -3114,7 +3051,6 @@ spell_iswordp( int spell_iswordp_nmw(char_u *p, win_T *wp) { -#ifdef FEAT_MBYTE int c; if (has_mbyte) @@ -3124,11 +3060,9 @@ spell_iswordp_nmw(char_u *p, win_T *wp) 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. @@ -3171,7 +3105,6 @@ spell_iswordp_w(int *p, win_T *wp) } return spelltab.st_isw[*s]; } -#endif /* * Case-fold "str[len]" into "buf[buflen]". The result is NUL terminated. @@ -3194,7 +3127,6 @@ spell_casefold( return FAIL; /* result will not fit */ } -#ifdef FEAT_MBYTE if (has_mbyte) { int outi = 0; @@ -3215,7 +3147,6 @@ spell_casefold( buf[outi] = NUL; } else -#endif { /* Be quick for non-multibyte encodings. */ for (i = 0; i < len; ++i) @@ -4072,21 +4003,17 @@ onecap_copy( 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; @@ -4108,14 +4035,11 @@ allcap_copy(char_u *word, char_u *wcopy) 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) @@ -4126,10 +4050,8 @@ allcap_copy(char_u *word, char_u *wcopy) *d++ = c; } else -#endif c = SPELL_TOUPPER(c); -#ifdef FEAT_MBYTE if (has_mbyte) { if (d - wcopy >= MAXWLEN - MB_MAXBYTES) @@ -4137,7 +4059,6 @@ allcap_copy(char_u *word, char_u *wcopy) d += mb_char2bytes(c, d); } else -#endif { if (d - wcopy >= MAXWLEN - 1) break; @@ -4434,11 +4355,9 @@ suggest_trie_walk( { /* 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, @@ -4568,7 +4487,6 @@ suggest_trie_walk( || 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 @@ -4576,7 +4494,6 @@ suggest_trie_walk( && mb_charlen(tword + sp->ts_splitoff) < slang->sl_compminlen) break; -#endif compflags[sp->ts_complen] = ((unsigned)flags >> 24); compflags[sp->ts_complen + 1] = NUL; @@ -4625,12 +4542,7 @@ suggest_trie_walk( * 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 - ) + && su->su_badlen == (*mb_ptr2len)(su->su_badptr)) c = WF_ONECAP; c |= flags; @@ -4752,11 +4664,8 @@ suggest_trie_walk( * 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 - ) + && (!has_mbyte || sp->ts_tcharlen == 0)) { int try_compound; int try_split; @@ -4789,12 +4698,10 @@ suggest_trie_walk( && ((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) @@ -4921,11 +4828,9 @@ suggest_trie_walk( /* 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); @@ -4963,11 +4868,7 @@ suggest_trie_walk( 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 - ) + if (fword[sp->ts_fidx] == NUL && sp->ts_tcharlen == 0) { /* The badword ends, can't use STATE_PLAIN. */ PROF_STORE(sp->ts_state) @@ -5005,10 +4906,7 @@ suggest_trie_walk( * 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 - ) + || (sp->ts_tcharlen > 0 && sp->ts_isdiff != DIFF_NONE)) newscore = 0; else newscore = SCORE_SUBST; @@ -5034,7 +4932,6 @@ suggest_trie_walk( ++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) @@ -5122,7 +5019,6 @@ suggest_trie_walk( } } else -#endif { /* If we found a similar char adjust the score. * We do this after calling go_deeper() because @@ -5139,7 +5035,6 @@ suggest_trie_walk( 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) @@ -5148,7 +5043,6 @@ suggest_trie_walk( sp->ts_state = STATE_FINAL; break; } -#endif /* * Try skipping one character in the bad word (delete it). */ @@ -5181,7 +5075,6 @@ suggest_trie_walk( * 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); @@ -5192,7 +5085,6 @@ suggest_trie_walk( stack[depth].ts_score -= SCORE_DEL - SCORE_DELDUP; } else -#endif { ++stack[depth].ts_fidx; if (fword[sp->ts_fidx] == fword[sp->ts_fidx + 1]) @@ -5274,7 +5166,6 @@ suggest_trie_walk( sp = &stack[depth]; tword[sp->ts_twordlen++] = c; sp->ts_arridx = idxs[n]; -#ifdef FEAT_MBYTE if (has_mbyte) { fl = MB_BYTE2LEN(c); @@ -5291,7 +5182,6 @@ suggest_trie_walk( 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 @@ -5329,7 +5219,6 @@ suggest_trie_walk( break; } -#ifdef FEAT_MBYTE if (has_mbyte) { n = MB_CPTR2LEN(p); @@ -5342,7 +5231,6 @@ suggest_trie_walk( c2 = mb_ptr2char(p + n); } else -#endif { if (p[1] == NUL) c2 = NUL; @@ -5379,7 +5267,6 @@ suggest_trie_walk( PROF_STORE(sp->ts_state) sp->ts_state = STATE_UNSWAP; ++depth; -#ifdef FEAT_MBYTE if (has_mbyte) { fl = mb_char2len(c2); @@ -5388,7 +5275,6 @@ suggest_trie_walk( stack[depth].ts_fidxtry = sp->ts_fidx + n + fl; } else -#endif { p[0] = c2; p[1] = c; @@ -5406,7 +5292,6 @@ suggest_trie_walk( 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); @@ -5415,7 +5300,6 @@ suggest_trie_walk( mb_char2bytes(c, p); } else -#endif { c = *p; *p = p[1]; @@ -5427,7 +5311,6 @@ suggest_trie_walk( /* 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); @@ -5440,7 +5323,6 @@ suggest_trie_walk( c3 = mb_ptr2char(p + n + fl); } else -#endif { c = *p; c2 = p[1]; @@ -5473,7 +5355,6 @@ suggest_trie_walk( PROF_STORE(sp->ts_state) sp->ts_state = STATE_UNSWAP3; ++depth; -#ifdef FEAT_MBYTE if (has_mbyte) { tl = mb_char2len(c3); @@ -5483,7 +5364,6 @@ suggest_trie_walk( stack[depth].ts_fidxtry = sp->ts_fidx + n + fl + tl; } else -#endif { p[0] = p[2]; p[2] = c; @@ -5500,7 +5380,6 @@ suggest_trie_walk( case STATE_UNSWAP3: /* Undo STATE_SWAP3: "321" -> "123" */ p = fword + sp->ts_fidx; -#ifdef FEAT_MBYTE if (has_mbyte) { n = MB_PTR2LEN(p); @@ -5514,7 +5393,6 @@ suggest_trie_walk( p = p + tl; } else -#endif { c = *p; *p = p[2]; @@ -5546,7 +5424,6 @@ suggest_trie_walk( sp->ts_state = STATE_UNROT3L; ++depth; p = fword + sp->ts_fidx; -#ifdef FEAT_MBYTE if (has_mbyte) { n = MB_CPTR2LEN(p); @@ -5558,7 +5435,6 @@ suggest_trie_walk( stack[depth].ts_fidxtry = sp->ts_fidx + n + fl; } else -#endif { c = *p; *p = p[1]; @@ -5577,7 +5453,6 @@ suggest_trie_walk( case STATE_UNROT3L: /* Undo ROT3L: "231" -> "123" */ p = fword + sp->ts_fidx; -#ifdef FEAT_MBYTE if (has_mbyte) { n = MB_PTR2LEN(p); @@ -5588,7 +5463,6 @@ suggest_trie_walk( mb_char2bytes(c, p); } else -#endif { c = p[2]; p[2] = p[1]; @@ -5611,7 +5485,6 @@ suggest_trie_walk( sp->ts_state = STATE_UNROT3R; ++depth; p = fword + sp->ts_fidx; -#ifdef FEAT_MBYTE if (has_mbyte) { n = MB_CPTR2LEN(p); @@ -5623,7 +5496,6 @@ suggest_trie_walk( stack[depth].ts_fidxtry = sp->ts_fidx + n + tl; } else -#endif { c = p[2]; p[2] = p[1]; @@ -5642,7 +5514,6 @@ suggest_trie_walk( case STATE_UNROT3R: /* Undo ROT3R: "312" -> "123" */ p = fword + sp->ts_fidx; -#ifdef FEAT_MBYTE if (has_mbyte) { c = mb_ptr2char(p); @@ -5653,7 +5524,6 @@ suggest_trie_walk( mb_char2bytes(c, p + n); } else -#endif { c = *p; *p = p[1]; @@ -5738,9 +5608,7 @@ suggest_trie_walk( } 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; } } @@ -5809,7 +5677,6 @@ go_deeper(trystate_T *stack, int depth, 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". @@ -5826,7 +5693,6 @@ nofold_len(char_u *fword, int flen, char --i; return (int)(p - word); } -#endif /* * "fword" is a good word with case folded. Find the matching keep-case @@ -5905,14 +5771,12 @@ find_keepcap_word(slang_T *slang, char_u * 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) { @@ -6627,7 +6491,6 @@ make_case_word(char_u *fword, char_u *cw similar_chars(slang_T *slang, int c1, int c2) { int m1, m2; -#ifdef FEAT_MBYTE char_u buf[MB_MAXBYTES + 1]; hashitem_T *hi; @@ -6641,13 +6504,11 @@ similar_chars(slang_T *slang, int c1, in 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; @@ -6658,7 +6519,6 @@ similar_chars(slang_T *slang, int c1, in m2 = mb_ptr2char(hi->hi_key + STRLEN(hi->hi_key) + 1); } else -#endif m2 = slang->sl_map_array[c2]; return m1 == m2; @@ -6700,15 +6560,12 @@ add_suggestion( 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) + else if (*pgood != *pbad) break; } @@ -7028,11 +6885,9 @@ spell_soundfold( word = fword; } -#ifdef FEAT_MBYTE if (has_mbyte) spell_soundfold_wsal(slang, word, res); else -#endif spell_soundfold_sal(slang, word, res); } } @@ -7048,7 +6903,6 @@ spell_soundfold_sofo(slang_T *slang, cha int ri = 0; int c; -#ifdef FEAT_MBYTE if (has_mbyte) { int prevc = 0; @@ -7095,7 +6949,6 @@ spell_soundfold_sofo(slang_T *slang, cha } } else -#endif { /* The sl_sal_first[] table contains the translation. */ for (s = inword; (c = *s) != NUL; ++s) @@ -7385,7 +7238,6 @@ spell_soundfold_sal(slang_T *slang, char res[reslen] = NUL; } -#ifdef FEAT_MBYTE /* * Turn "inword" into its sound-a-like equivalent in "res[MAXWLEN]". * Multi-byte version of spell_soundfold(). @@ -7698,7 +7550,6 @@ spell_soundfold_wsal(slang_T *slang, cha } res[l] = NUL; } -#endif /* * Compute a score for two sound-a-like words. @@ -7953,7 +7804,6 @@ spell_edit_score( int t; int bc, gc; int pbc, pgc; -#ifdef FEAT_MBYTE char_u *p; int wbadword[MAXWLEN]; int wgoodword[MAXWLEN]; @@ -7970,7 +7820,6 @@ spell_edit_score( wgoodword[goodlen++] = 0; } else -#endif { badlen = (int)STRLEN(badword) + 1; goodlen = (int)STRLEN(goodword) + 1; @@ -7992,14 +7841,12 @@ spell_edit_score( 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]; @@ -8024,14 +7871,12 @@ spell_edit_score( 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]; @@ -8090,12 +7935,10 @@ spell_edit_score_limit( 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 @@ -8250,7 +8093,6 @@ pop: return minscore; } -#ifdef FEAT_MBYTE /* * Multi-byte version of spell_edit_score_limit(). * Keep it in sync with the above! @@ -8439,7 +8281,6 @@ pop: return SCORE_MAXMAX; return minscore; } -#endif /* * ":spellinfo" @@ -8554,13 +8395,7 @@ spell_dump_compl( 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 - ) + else if (n == WF_ALLCAP && (int)STRLEN(pat) > mb_ptr2len(pat)) dumpflags |= DUMPFLAG_ALLCAP; } } diff --git a/src/spell.h b/src/spell.h --- a/src/spell.h +++ b/src/spell.h @@ -44,11 +44,7 @@ typedef int idx_T; 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 @@ -132,12 +128,8 @@ struct slang_S 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() */ }; @@ -213,11 +205,9 @@ typedef struct salitem_S 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 @@ -260,41 +250,34 @@ typedef struct spelltab_S * 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 /* for towupper() and towlower() */ -# endif +#if defined(HAVE_WCHAR_H) +# include /* 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) \ +#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) \ +#else +# define SPELL_TOFOLD(c) (enc_utf8 && (c) >= 128 ? utf_fold(c) \ : (c) < 256 ? (int)spelltab.st_fold[c] : (c)) -# endif +#endif -# ifdef HAVE_TOWUPPER -# define SPELL_TOUPPER(c) (enc_utf8 && (c) >= 128 ? utf_toupper(c) \ +#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) \ +#else +# define SPELL_TOUPPER(c) (enc_utf8 && (c) >= 128 ? utf_toupper(c) \ : (c) < 256 ? (int)spelltab.st_upper[c] : (c)) -# endif +#endif -# ifdef HAVE_ISWUPPER -# define SPELL_ISUPPER(c) (enc_utf8 && (c) >= 128 ? utf_isupper(c) \ +#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) \ +#else +# define SPELL_ISUPPER(c) (enc_utf8 && (c) >= 128 ? utf_isupper(c) \ : (c) < 256 ? spelltab.st_isu[c] : (FALSE)) -# endif #endif #ifdef FEAT_SPELL diff --git a/src/spellfile.c b/src/spellfile.c --- a/src/spellfile.c +++ b/src/spellfile.c @@ -306,9 +306,7 @@ static int read_sofo_section(FILE *fd, s 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); @@ -1062,7 +1060,6 @@ read_sal_section(FILE *fd, slang_T *slan return ccnt; } -#ifdef FEAT_MBYTE if (has_mbyte) { /* convert the multi-byte strings to wide char strings */ @@ -1088,7 +1085,6 @@ read_sal_section(FILE *fd, slang_T *slan return SP_OTHERERROR; } } -#endif } if (gap->ga_len > 0) @@ -1104,7 +1100,6 @@ read_sal_section(FILE *fd, slang_T *slan 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); @@ -1112,7 +1107,6 @@ read_sal_section(FILE *fd, slang_T *slan smp->sm_oneof_w = NULL; smp->sm_to_w = NULL; } -#endif ++gap->ga_len; } @@ -1268,10 +1262,8 @@ read_compound(FILE *fd, slang_T *slang, * Inserting backslashes may double the length, "^\(\)$" 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; @@ -1367,11 +1359,9 @@ read_compound(FILE *fd, slang_T *slang, { 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; } } @@ -1401,7 +1391,6 @@ set_sofo(slang_T *lp, char_u *from, char { int i; -#ifdef FEAT_MBYTE garray_T *gap; char_u *s; char_u *p; @@ -1468,7 +1457,6 @@ set_sofo(slang_T *lp, char_u *from, char } } else -#endif { /* mapping bytes to bytes is done in sl_sal_first[] */ if (STRLEN(from) != STRLEN(to)) @@ -1500,19 +1488,16 @@ set_sal_first(slang_T *lp) 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; @@ -1540,12 +1525,10 @@ set_sal_first(slang_T *lp) 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) @@ -1566,7 +1549,6 @@ mb_str2wide(char_u *s) } return res; } -#endif /* * Read a tree from the .spl or .sug file. @@ -1820,11 +1802,7 @@ struct affentry_S 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 +#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,7 +2249,6 @@ spell_read_aff(spellinfo_T *spin, char_u /* 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); @@ -2284,7 +2261,6 @@ spell_read_aff(spellinfo_T *spin, char_u line = pc; } else -#endif { pc = NULL; line = rline; @@ -2319,7 +2295,6 @@ spell_read_aff(spellinfo_T *spin, char_u { 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 @@ -2328,9 +2303,6 @@ spell_read_aff(spellinfo_T *spin, char_u 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) @@ -2772,13 +2744,8 @@ spell_read_aff(spellinfo_T *spin, char_u * 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 - ) + aff_entry->ae_chop)] == NUL) { int c, c_up; @@ -2803,7 +2770,7 @@ spell_read_aff(spellinfo_T *spin, char_u if (aff_entry->ae_cond != NULL) { char_u buf[MAXLINELEN]; -#ifdef FEAT_MBYTE + if (has_mbyte) { onecap_copy(items[4], buf, TRUE); @@ -2811,7 +2778,6 @@ spell_read_aff(spellinfo_T *spin, char_u spin, buf); } else -#endif *aff_entry->ae_cond = c_up; if (aff_entry->ae_cond != NULL) { @@ -2947,11 +2913,7 @@ spell_read_aff(spellinfo_T *spin, char_u /* 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) @@ -3034,11 +2996,7 @@ spell_read_aff(spellinfo_T *spin, char_u * 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 (!spin->si_ascii && !enc_utf8) { if (fol == NULL || low == NULL || upp == NULL) smsg(_("Missing FOL/LOW/UPP line in %s"), fname); @@ -3243,21 +3201,13 @@ get_affitem(int flagtype, char_u **pp) } 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; @@ -3381,18 +3331,10 @@ flag_in_afflist(int flagtype, char_u *af 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; } @@ -3589,7 +3531,6 @@ spell_read_dic(spellinfo_T *spin, char_u continue; /* empty line */ line[l] = NUL; -#ifdef FEAT_MBYTE /* Convert from "SET" to 'encoding' when needed. */ if (spin->si_conv.vc_type != CONV_NONE) { @@ -3603,7 +3544,6 @@ spell_read_dic(spellinfo_T *spin, char_u w = pc; } else -#endif { pc = NULL; w = line; @@ -3930,7 +3870,6 @@ store_aff_word( if (ae->ae_chop != NULL) { /* Skip chop string. */ -#ifdef FEAT_MBYTE if (has_mbyte) { i = mb_charlen(ae->ae_chop); @@ -3938,7 +3877,6 @@ store_aff_word( MB_PTR_ADV(p); } else -#endif p += STRLEN(ae->ae_chop); } STRCAT(newword, p); @@ -4162,7 +4100,6 @@ spell_read_wordfile(spellinfo_T *spin, c /* 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); @@ -4175,7 +4112,6 @@ spell_read_wordfile(spellinfo_T *spin, c line = pc; } else -#endif { pc = NULL; line = rline; @@ -4194,7 +4130,6 @@ spell_read_wordfile(spellinfo_T *spin, c fname, lnum, line - 1); else { -#ifdef FEAT_MBYTE char_u *enc; /* Setup for conversion to 'encoding'. */ @@ -4207,9 +4142,6 @@ spell_read_wordfile(spellinfo_T *spin, c fname, line, p_enc); vim_free(enc); spin->si_conv.vc_fail = TRUE; -#else - smsg(_("Conversion in %s not supported"), fname); -#endif } continue; } @@ -4981,11 +4913,9 @@ write_vim_spell(spellinfo_T *spin, char_ 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); /* */ @@ -6112,10 +6042,8 @@ mkspell( 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) @@ -6488,15 +6416,10 @@ set_spell_chartab(char_u *fol, char_u *l 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; @@ -6570,11 +6493,7 @@ set_spell_charflags( 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; @@ -6675,9 +6594,7 @@ set_map_str(slang_T *lp, char_u *map) /* 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: @@ -6686,11 +6603,7 @@ set_map_str(slang_T *lp, char_u *map) */ for (p = map; *p != NUL; ) { -#ifdef FEAT_MBYTE c = mb_cptr2char_adv(&p); -#else - c = *p++; -#endif if (c == '/') headc = 0; else @@ -6698,7 +6611,6 @@ set_map_str(slang_T *lp, char_u *map) 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. */ @@ -6730,7 +6642,6 @@ set_map_str(slang_T *lp, char_u *map) } } else -#endif lp->sl_map_array[c] = headc; } } diff --git a/src/structs.h b/src/structs.h --- a/src/structs.h +++ b/src/structs.h @@ -1103,9 +1103,7 @@ typedef struct { 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; @@ -2013,16 +2011,12 @@ typedef struct { /* 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; @@ -2233,9 +2227,7 @@ struct file_buffer 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 @@ -2270,9 +2262,7 @@ struct file_buffer 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' */ @@ -2304,9 +2294,7 @@ struct file_buffer #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 */ @@ -2425,11 +2413,9 @@ struct file_buffer 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 */ @@ -3107,10 +3093,8 @@ typedef struct cmdarg_S 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 */ diff --git a/src/syntax.c b/src/syntax.c --- a/src/syntax.c +++ b/src/syntax.c @@ -1974,12 +1974,9 @@ syn_current_attr( 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))) + : 0) , syn_buf))) { syn_id = check_keyword_id(line, (int)current_col, &endcol, &flags, &next_list, cur_si, @@ -3355,11 +3352,9 @@ check_keyword_id( 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)); @@ -4668,17 +4663,15 @@ get_syn_options( } else if (flagtab[fidx].argtype == 11 && arg[5] == '=') { -#ifdef FEAT_MBYTE /* cchar=? */ if (has_mbyte) { -# ifdef FEAT_CONCEAL +#ifdef FEAT_CONCEAL *conceal_char = mb_ptr2char(arg + 6); -# endif +#endif arg += mb_ptr2len(arg + 6) - 1; } else -#endif { #ifdef FEAT_CONCEAL *conceal_char = arg[6]; @@ -4948,7 +4941,6 @@ syn_cmd_keyword(exarg_T *eap, int syncin kw = p + 1; /* skip over the "]" */ break; } -#ifdef FEAT_MBYTE if (has_mbyte) { int l = (*mb_ptr2len)(p + 1); @@ -4957,7 +4949,6 @@ syn_cmd_keyword(exarg_T *eap, int syncin p += l; } else -#endif { p[0] = p[1]; ++p; diff --git a/src/tag.c b/src/tag.c --- a/src/tag.c +++ b/src/tag.c @@ -1349,9 +1349,7 @@ find_tags( #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); @@ -1387,9 +1385,7 @@ find_tags( 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 @@ -1725,7 +1721,6 @@ find_tags( } line_read_in: -#ifdef FEAT_MBYTE if (vimconv.vc_type != CONV_NONE) { char_u *conv_line; @@ -1752,7 +1747,6 @@ line_read_in: } } } -#endif #ifdef FEAT_EMACS_TAGS @@ -1846,7 +1840,6 @@ line_read_in: 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 @@ -1856,7 +1849,6 @@ line_read_in: *p = NUL; convert_setup(&vimconv, lbuf + 20, p_enc); } -#endif /* Read the next line. Unrecognized flags are ignored. */ continue; @@ -2472,10 +2464,8 @@ parse_line: 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; diff --git a/src/term.c b/src/term.c --- a/src/term.c +++ b/src/term.c @@ -2585,7 +2585,6 @@ out_flush_cursor( } -#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. @@ -2596,7 +2595,6 @@ out_flush_check(void) if (enc_dbcs != 0 && out_pos >= OUT_SIZE - MB_MAXBYTES) out_flush(); } -#endif #ifdef FEAT_GUI /* @@ -3620,7 +3618,6 @@ may_req_termresponse(void) } } -# 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 @@ -3666,7 +3663,6 @@ may_req_ambiguous_char_width(void) (void)vpeekc_nomap(); } } -# endif /* * Similar to requesting the version string: Request the terminal background @@ -4606,9 +4602,7 @@ check_termcode( { int col = 0; int semicols = 0; -#ifdef FEAT_MBYTE int row_char = NUL; -#endif extra = 0; for (i = 2 + (tp[0] != CSI); i < len @@ -4617,9 +4611,7 @@ check_termcode( if (tp[i] == ';' && ++semicols == 1) { extra = i + 1; -#ifdef FEAT_MBYTE row_char = tp[i - 1]; -#endif } if (i == len) { @@ -4629,7 +4621,6 @@ check_termcode( 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 , it sends something @@ -4672,10 +4663,9 @@ check_termcode( 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') + else if (*T_CRV != NUL && i > 2 + (tp[0] != CSI) + && tp[i] == 'c') { int version = col; @@ -5973,11 +5963,9 @@ check_termcode( if (key_name[0] == KS_KEY) { /* from ":set =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 @@ -6257,10 +6245,8 @@ replace_termcodes( } } -#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 diff --git a/src/ui.c b/src/ui.c --- a/src/ui.c +++ b/src/ui.c @@ -40,7 +40,7 @@ ui_write(char_u *s, int len) /* Don't output anything in silent mode ("ex -s") unless 'verbose' set */ if (!(silent_mode && p_verbose == 0)) { -#if defined(FEAT_MBYTE) && !defined(WIN3264) +#if !defined(WIN3264) char_u *tofree = NULL; if (output_conv.vc_type != CONV_NONE) @@ -54,10 +54,10 @@ ui_write(char_u *s, int len) mch_write(s, len); -#if defined(FEAT_MBYTE) && !defined(WIN3264) +# if !defined(WIN3264) if (output_conv.vc_type != CONV_NONE) vim_free(tofree); -#endif +# endif } #endif } @@ -516,10 +516,8 @@ clip_update_selection(VimClipboard *clip { start = VIsual; end = curwin->w_cursor; -#ifdef FEAT_MBYTE if (has_mbyte) end.col += (*mb_ptr2len)(ml_get_cursor()) - 1; -#endif } else { @@ -821,9 +819,7 @@ clip_start_selection(int col, int row, i 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; @@ -927,9 +923,7 @@ clip_process_selection( 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; @@ -995,21 +989,17 @@ clip_process_selection( 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); @@ -1243,9 +1233,7 @@ clip_copy_modeless_selection(int both UN 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; @@ -1267,23 +1255,19 @@ clip_copy_modeless_selection(int both UN { 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; @@ -1322,7 +1306,6 @@ clip_copy_modeless_selection(int both UN if (row < screen_Rows && end_col <= screen_Columns) { -#ifdef FEAT_MBYTE if (enc_dbcs != 0) { int i; @@ -1373,7 +1356,6 @@ clip_copy_modeless_selection(int both UN } } else -#endif { STRNCPY(bufp, ScreenLines + LineOffset[row] + start_col, end_col - start_col); @@ -1421,51 +1403,35 @@ clip_get_word_boundaries(VimClipboard *c 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 - ) + 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++) -#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 - ) + else if (CHAR_CLASS(p[temp_col]) != start_class + && !(enc_utf8 && p[temp_col] == 0)) break; cb->word_end_col = temp_col; } @@ -1820,11 +1786,9 @@ fill_input_buf(int exit_on_error UNUSED) 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 @@ -1860,7 +1824,6 @@ fill_input_buf(int exit_on_error UNUSED) inbufcount = 0; # else -# ifdef FEAT_MBYTE if (rest != NULL) { /* Use remainder of previous call, starts with an invalid character @@ -1881,16 +1844,12 @@ fill_input_buf(int exit_on_error UNUSED) } 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 - ); + / input_conv.vc_factor); # ifdef VMS len = vms_read((char *)inbuf + inbufcount, readlen); # else @@ -1936,7 +1895,6 @@ fill_input_buf(int exit_on_error UNUSED) } else { -# ifdef FEAT_MBYTE /* * May perform conversion on the input characters. * Include the unconverted rest of the previous call. @@ -1952,7 +1910,6 @@ fill_input_buf(int exit_on_error UNUSED) len + unconverted, INBUFLEN - inbufcount, rest == NULL ? &rest : NULL, &restlen); } -# endif while (len-- > 0) { /* @@ -2014,8 +1971,6 @@ ui_cursor_shape(void) } #endif -#if defined(FEAT_CLIPBOARD) || defined(FEAT_GUI) || defined(FEAT_RIGHTLEFT) \ - || defined(FEAT_MBYTE) || defined(PROTO) /* * Check bounds for column number */ @@ -2041,7 +1996,6 @@ check_row(int row) return (int)screen_Rows - 1; return row; } -#endif /* * Stuff for the X clipboard. Shared between VMS and Unix. @@ -2066,10 +2020,8 @@ open_app_context(void) } 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; @@ -2079,10 +2031,8 @@ static Atom timestamp_atom; /* Used to g 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); @@ -2170,9 +2120,7 @@ clip_x11_request_selection_cb( 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; @@ -2193,7 +2141,6 @@ clip_x11_request_selection_cb( len--; } -#ifdef FEAT_MBYTE else if (*type == vimenc_atom) { char_u *enc; @@ -2221,17 +2168,10 @@ clip_x11_request_selection_cb( 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)) + || (enc_dbcs != 0 && *type == text_atom)) { XTextProperty text_prop; int n_text = 0; @@ -2241,7 +2181,7 @@ clip_x11_request_selection_cb( text_prop.encoding = *type; text_prop.format = *format; text_prop.nitems = len; -#if defined(FEAT_MBYTE) && defined(X_HAVE_UTF8_STRING) +#if defined(X_HAVE_UTF8_STRING) if (*type == utf8_atom) status = Xutf8TextPropertyToTextList(X_DISPLAY, &text_prop, &text_list, &n_text); @@ -2261,9 +2201,7 @@ clip_x11_request_selection_cb( if (text_list != NULL) XFreeStringList(text_list); -#ifdef FEAT_MBYTE vim_free(tmpbuf); -#endif XtFree((char *)value); *(int *)success = TRUE; } @@ -2281,28 +2219,17 @@ clip_x11_request_selection( time_t start_time; int timed_out = FALSE; - for (i = -#ifdef FEAT_MBYTE - 0 -#else - 1 -#endif - ; i < 6; i++) + for (i = 0; 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 @@ -2311,7 +2238,6 @@ clip_x11_request_selection( /* 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); @@ -2406,14 +2332,10 @@ clip_x11_convert_selection_cb( *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; @@ -2427,10 +2349,8 @@ clip_x11_convert_selection_cb( } 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) @@ -2445,11 +2365,9 @@ clip_x11_convert_selection_cb( 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); @@ -2463,11 +2381,7 @@ clip_x11_convert_selection_cb( save_result = (char_u *)*value; save_length = *length; - if (*target == XA_STRING -#ifdef FEAT_MBYTE - || (*target == utf8_atom && enc_utf8) -#endif - ) + if (*target == XA_STRING || (*target == utf8_atom && enc_utf8)) { mch_memmove(save_result, string, (size_t)(*length)); *type = *target; @@ -2495,7 +2409,6 @@ clip_x11_convert_selection_cb( save_result = (char_u *)*value; save_length = *length; } -#ifdef FEAT_MBYTE else if (*target == vimenc_atom) { int l = STRLEN(p_enc); @@ -2505,7 +2418,6 @@ clip_x11_convert_selection_cb( mch_memmove(save_result + l + 2, string, (size_t)(*length - l - 2)); *type = vimenc_atom; } -#endif else { save_result[0] = motion_type; @@ -2599,7 +2511,6 @@ yank_cut_buffer0(Display *dpy, VimClipbo if (nbytes > 0) { -#ifdef FEAT_MBYTE int done = FALSE; /* CUT_BUFFER0 is supposed to be always latin1. Convert to 'enc' when @@ -2625,7 +2536,6 @@ yank_cut_buffer0(Display *dpy, VimClipbo } } if (!done) /* use the text without conversion */ -#endif clip_yank_selection(MCHAR, buffer, (long)nbytes, cbd); XFree((void *)buffer); if (p_verbose > 0) diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -459,11 +459,7 @@ static char *(features[]) = "+multi_byte_ime", # endif #else -# ifdef FEAT_MBYTE "+multi_byte", -# else - "-multi_byte", -# endif #endif #ifdef FEAT_MULTI_LANG "+multi_lang", @@ -792,6 +788,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 810, +/**/ 809, /**/ 808, @@ -3052,14 +3050,12 @@ do_intro_line( 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); diff --git a/src/vim.h b/src/vim.h --- a/src/vim.h +++ b/src/vim.h @@ -210,7 +210,7 @@ #endif /* The Mac conversion stuff doesn't work under X11. */ -#if defined(FEAT_MBYTE) && defined(MACOS_X_DARWIN) +#if defined(MACOS_X_DARWIN) # define MACOS_CONVERT #endif @@ -431,16 +431,10 @@ typedef unsigned short sattr_T; * bits. u8char_T is only used for displaying, it could be 16 bits to save * memory. */ -#ifdef FEAT_MBYTE -# ifdef UNICODE16 +#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 +#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,14 +1510,9 @@ typedef UINT32_TYPEDEF UINT32_T; #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 +#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() */ @@ -1609,7 +1598,6 @@ typedef UINT32_TYPEDEF UINT32_T; # 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 @@ -1618,10 +1606,6 @@ typedef UINT32_TYPEDEF UINT32_T; # 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)) @@ -1766,16 +1750,12 @@ void *vim_memset(void *, int, size_t); # endif #endif -#ifdef FEAT_MBYTE -# define MAX_MCO 6 /* maximum value for 'maxcombine' */ +#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 +#define MB_MAXBYTES 21 #if (defined(FEAT_PROFILE) || defined(FEAT_RELTIME)) && !defined(PROTO) # ifdef WIN3264 @@ -2128,7 +2108,7 @@ typedef enum { # define USE_MCH_ERRMSG #endif -# if defined(FEAT_MBYTE) && defined(FEAT_EVAL) \ +# if defined(FEAT_EVAL) \ && (!defined(FEAT_GUI_W32) \ || !(defined(FEAT_MBYTE_IME) || defined(GLOBAL_IME))) \ && !(defined(FEAT_GUI_MAC) && defined(MACOS_CONVERT)) @@ -2139,20 +2119,15 @@ typedef enum { # define IME_WITHOUT_XIM #endif -#if defined(FEAT_MBYTE) && (defined(FEAT_XIM) \ +#if defined(FEAT_XIM) \ || defined(IME_WITHOUT_XIM) \ || (defined(FEAT_GUI_W32) \ && (defined(FEAT_MBYTE_IME) || defined(GLOBAL_IME))) \ - || defined(FEAT_GUI_MAC)) + || 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 @@ -2160,7 +2135,7 @@ typedef enum { /* This must come after including proto.h. * For VMS this is defined in macros.h. */ -#if !(defined(FEAT_MBYTE) && defined(WIN3264)) && !defined(VMS) +#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,57 +2211,49 @@ typedef enum { # 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 MB_BYTE2LEN(b) mb_bytelen_tab[b] +#define MB_BYTE2LEN_CHECK(b) (((b) < 0 || (b) > 255) ? 1 : mb_bytelen_tab[b]) -# define ENC_ENDIAN_B 0x10 /* Unicode: Big endian */ -# define ENC_ENDIAN_L 0x20 /* Unicode: Little endian */ +/* properties used in enc_canon_table[] (first three mutually exclusive) */ +#define ENC_8BIT 0x01 +#define ENC_DBCS 0x02 +#define ENC_UNICODE 0x04 -# define ENC_2BYTE 0x40 /* Unicode: UCS-2 */ -# define ENC_4BYTE 0x80 /* Unicode: UCS-4 */ -# define ENC_2WORD 0x100 /* Unicode: UTF-16 */ +#define ENC_ENDIAN_B 0x10 /* Unicode: Big endian */ +#define ENC_ENDIAN_L 0x20 /* Unicode: Little endian */ -# define ENC_LATIN1 0x200 /* Latin1 */ -# define ENC_LATIN9 0x400 /* Latin9 */ -# define ENC_MACROMAN 0x800 /* Mac Roman (not Macro Man! :-) */ -#endif +#define ENC_2BYTE 0x40 /* Unicode: UCS-2 */ +#define ENC_4BYTE 0x80 /* Unicode: UCS-4 */ +#define ENC_2WORD 0x100 /* Unicode: UTF-16 */ -#ifdef FEAT_MBYTE -# ifdef USE_ICONV -# ifndef EILSEQ -# define EILSEQ 123 -# endif -# ifdef DYNAMIC_ICONV +#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 +# 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 */ diff --git a/src/winclip.c b/src/winclip.c --- a/src/winclip.c +++ b/src/winclip.c @@ -44,7 +44,6 @@ typedef int LPWSTR; 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. @@ -179,7 +178,6 @@ WideCharToMultiByte_alloc(UINT cp, DWORD } } -#endif /* FEAT_MBYTE */ #ifdef FEAT_CLIPBOARD /* @@ -301,12 +299,10 @@ clip_mch_request_selection(VimClipboard VimClipType_t metadata = { -1, -1, -1, -1 }; HGLOBAL hMem = NULL; char_u *str = NULL; -#if defined(FEAT_MBYTE) && defined(WIN3264) +#if defined(WIN3264) char_u *to_free = NULL; #endif -#ifdef FEAT_MBYTE HGLOBAL rawh = NULL; -#endif int str_size = 0; int maxlen; size_t n; @@ -339,7 +335,6 @@ clip_mch_request_selection(VimClipboard } } -#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) @@ -366,79 +361,75 @@ clip_mch_request_selection(VimClipboard } if (str == NULL) { -#endif +#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 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); + 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; + /* 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 - str_size = metadata.ucslen; + { + 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 + } + else +#endif + /* Get the clipboard in the Active codepage. */ + if (IsClipboardFormatAvailable(CF_TEXT)) + { + if ((hMem = GetClipboardData(CF_TEXT)) != NULL) { - for (str_size = 0; str_size < maxlen; ++str_size) - if (hMemWstr[str_size] == NUL) - break; + 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 } - 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) { @@ -460,12 +451,10 @@ clip_mch_request_selection(VimClipboard /* 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) +#if defined(WIN3264) vim_free(to_free); #endif } @@ -482,7 +471,7 @@ clip_mch_set_selection(VimClipboard *cbd HGLOBAL hMemRaw = NULL; HGLOBAL hMem = NULL; HGLOBAL hMemVim = NULL; -# if defined(FEAT_MBYTE) && defined(WIN3264) +# if defined(WIN3264) HGLOBAL hMemW = NULL; # endif @@ -499,7 +488,6 @@ clip_mch_set_selection(VimClipboard *cbd 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. */ @@ -519,9 +507,8 @@ clip_mch_set_selection(VimClipboard *cbd else metadata.rawlen = 0; } -#endif -# if defined(FEAT_MBYTE) && defined(WIN3264) +# if defined(WIN3264) { WCHAR *out; int len = metadata.txtlen; @@ -603,7 +590,7 @@ clip_mch_set_selection(VimClipboard *cbd { SetClipboardData(cbd->format, hMemVim); hMemVim = 0; -# if defined(FEAT_MBYTE) && defined(WIN3264) +# if defined(WIN3264) if (hMemW != NULL) { if (SetClipboardData(CF_UNICODETEXT, hMemW) != NULL) @@ -624,7 +611,7 @@ clip_mch_set_selection(VimClipboard *cbd GlobalFree(hMemRaw); if (hMem) GlobalFree(hMem); -# if defined(FEAT_MBYTE) && defined(WIN3264) +# if defined(WIN3264) if (hMemW) GlobalFree(hMemW); # endif @@ -634,7 +621,6 @@ clip_mch_set_selection(VimClipboard *cbd #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. @@ -759,9 +745,8 @@ utf16_to_enc(short_u *str, int *lenp) return enc_str; } -#endif /* FEAT_MBYTE */ -#if (defined(FEAT_MBYTE) && defined(WIN3264)) || defined(PROTO) +#if defined(WIN3264) || defined(PROTO) /* * Convert from the active codepage to 'encoding'. * Input is "str[str_size]". diff --git a/src/window.c b/src/window.c --- a/src/window.c +++ b/src/window.c @@ -6180,12 +6180,9 @@ file_name_in_line( */ 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]) + else if (vim_isfilec(ptr[-1]) || ((options & FNAME_HYP) && path_is_url(ptr - 1))) --ptr; else @@ -6214,11 +6211,9 @@ file_name_in_line( if (ptr[len] == '\\') /* Skip over the "\" in "\ ". */ ++len; -#ifdef FEAT_MBYTE if (has_mbyte) len += (*mb_ptr2len)(ptr + len); else -#endif ++len; } @@ -6829,7 +6824,7 @@ match_add( m->match.regprog = regprog; m->match.rmm_ic = FALSE; m->match.rmm_maxcol = 0; -# if defined(FEAT_CONCEAL) && defined(FEAT_MBYTE) +# if defined(FEAT_CONCEAL) m->conceal_char = 0; if (conceal_char != NULL) m->conceal_char = (*mb_ptr2char)(conceal_char);