summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2005-07-18 21:58:11 +0000
committerBram Moolenaar <Bram@vim.org>2005-07-18 21:58:11 +0000
commitce0842a6ee214621ccf03693ab77a94851c09ab0 (patch)
tree1dd3965d94b6497335e9c7ca77c0e02a58003218 /src
parentbbebc857507f24c82cd5bb2f80305b74390b4611 (diff)
downloadvim-git-ce0842a6ee214621ccf03693ab77a94851c09ab0.tar.gz
updated for version 7.0109v7.0109
Diffstat (limited to 'src')
-rw-r--r--src/dosinst.c2
-rw-r--r--src/edit.c18
-rw-r--r--src/eval.c8
-rw-r--r--src/ex_cmds2.c24
-rw-r--r--src/ex_getln.c8
-rw-r--r--src/fold.c5
-rw-r--r--src/gui_gtk.c6
-rw-r--r--src/gui_gtk_x11.c12
-rw-r--r--src/gui_w32.c3
-rw-r--r--src/memline.c8
-rw-r--r--src/menu.c3
-rw-r--r--src/misc1.c6
-rw-r--r--src/ops.c3
-rw-r--r--src/option.c5
-rw-r--r--src/os_amiga.c4
-rw-r--r--src/os_qnx.c3
-rw-r--r--src/proto/misc2.pro2
-rw-r--r--src/structs.h6
-rw-r--r--src/syntax.c66
-rw-r--r--src/testdir/test51.in2
-rw-r--r--src/testdir/test58.in15
-rw-r--r--src/version.c6
-rw-r--r--src/version.h4
23 files changed, 118 insertions, 101 deletions
diff --git a/src/dosinst.c b/src/dosinst.c
index deaf15f7a..efc6fdfee 100644
--- a/src/dosinst.c
+++ b/src/dosinst.c
@@ -2080,7 +2080,7 @@ print_cmd_line_help(void)
printf(" or $HOME directory\n");
#ifdef WIN3264
printf("-register-OLE");
- printf(" Register gvim for OLE\n");
+ printf(" Ignored\n");
#endif
printf("\n");
}
diff --git a/src/edit.c b/src/edit.c
index 7028dd32a..bf7096111 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -1970,8 +1970,7 @@ ins_compl_add_infercase(str, len, fname, dir, reuse)
{
/* Infer case of completed part -- webb */
/* Use IObuff, str would change text in buffer! */
- STRNCPY(IObuff, str, len);
- IObuff[len] = NUL;
+ vim_strncpy(IObuff, str, len);
/* Rule 1: Were any chars converted to lower? */
for (idx = 0; idx < completion_length; ++idx)
@@ -2010,7 +2009,7 @@ ins_compl_add_infercase(str, len, fname, dir, reuse)
}
/* Copy the original case of the part we typed */
- STRNCPY(IObuff, original_text, completion_length);
+ vim_strncpy(IObuff, original_text, completion_length);
return ins_compl_add(IObuff, len, fname, dir, reuse);
}
@@ -3053,17 +3052,17 @@ ins_compl_get_exp(ini, dir)
tmp_ptr = find_word_end(tmp_ptr);
if (tmp_ptr > ptr)
{
- if (*ptr != ')' && IObuff[len-1] != TAB)
+ if (*ptr != ')' && IObuff[len - 1] != TAB)
{
- if (IObuff[len-1] != ' ')
+ if (IObuff[len - 1] != ' ')
IObuff[len++] = ' ';
/* IObuf =~ "\k.* ", thus len >= 2 */
if (p_js
- && (IObuff[len-2] == '.'
+ && (IObuff[len - 2] == '.'
|| (vim_strchr(p_cpo, CPO_JOINSP)
== NULL
- && (IObuff[len-2] == '?'
- || IObuff[len-2] == '!'))))
+ && (IObuff[len - 2] == '?'
+ || IObuff[len - 2] == '!'))))
IObuff[len++] = ' ';
}
/* copy as much as posible of the new word */
@@ -3741,8 +3740,7 @@ ins_complete(c)
curr_match->number, completion_matches);
else
sprintf((char *)IObuff, _("match %d"), curr_match->number);
- STRNCPY(match_ref, IObuff, 30 );
- match_ref[30] = '\0';
+ vim_strncpy(match_ref, IObuff, 30);
edit_submode_extra = match_ref;
edit_submode_highl = HLF_R;
if (dollar_vcol)
diff --git a/src/eval.c b/src/eval.c
index a1404c224..6adfb4d40 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -6197,8 +6197,7 @@ dict_find(d, key, len)
else
{
/* Avoid a malloc/free by using buf[]. */
- STRNCPY(buf, key, len);
- buf[len] = NUL;
+ vim_strncpy(buf, key, len);
akey = buf;
}
@@ -10681,10 +10680,7 @@ f_inputdialog(argvars, rettv)
message = get_tv_string_chk(&argvars[0]);
if (argvars[1].v_type != VAR_UNKNOWN
&& (defstr = get_tv_string_buf_chk(&argvars[1], buf)) != NULL)
- {
- STRNCPY(IObuff, defstr, IOSIZE);
- IObuff[IOSIZE - 1] = NUL;
- }
+ vim_strncpy(IObuff, defstr, IOSIZE - 1);
else
IObuff[0] = NUL;
if (message != NULL && defstr != NULL
diff --git a/src/ex_cmds2.c b/src/ex_cmds2.c
index b3faec86c..923faf9bc 100644
--- a/src/ex_cmds2.c
+++ b/src/ex_cmds2.c
@@ -5511,16 +5511,14 @@ prt_open_resource(resource)
switch (dsc_line.type)
{
case PRT_DSC_TITLE_TYPE:
- STRNCPY(resource->title, dsc_line.string, dsc_line.len);
- resource->title[dsc_line.len] = '\0';
+ vim_strncpy(resource->title, dsc_line.string, dsc_line.len);
seen_title = TRUE;
if (seen_version)
seen_all = TRUE;
break;
case PRT_DSC_VERSION_TYPE:
- STRNCPY(resource->version, dsc_line.string, dsc_line.len);
- resource->version[dsc_line.len] = '\0';
+ vim_strncpy(resource->version, dsc_line.string, dsc_line.len);
seen_version = TRUE;
if (seen_title)
seen_all = TRUE;
@@ -5862,8 +5860,7 @@ prt_build_cid_fontname(font, name, name_len)
fontname = (char *)alloc(name_len + 1);
if (fontname == NULL)
return FALSE;
- STRNCPY(fontname, name, name_len);
- fontname[name_len] = '\0';
+ vim_strncpy((char_u *)fontname, name, name_len);
prt_ps_mb_font.ps_fontname[font] = fontname;
return TRUE;
@@ -5977,7 +5974,6 @@ mch_print_init(psettings, jobname, forceit)
double bottom;
#ifdef FEAT_MBYTE
int cmap;
- int pmcs_len;
char_u *p_encoding;
struct prt_ps_encoding_S *p_mbenc;
struct prt_ps_encoding_S *p_mbenc_first;
@@ -6035,7 +6031,7 @@ mch_print_init(psettings, jobname, forceit)
if (prt_out_mbyte)
{
/* Build CMap name - will be same for all multi-byte fonts used */
- prt_cmap[0] = '\0';
+ prt_cmap[0] = NUL;
prt_custom_cmap = prt_out_mbyte && p_mbchar == NULL;
@@ -6051,26 +6047,26 @@ mch_print_init(psettings, jobname, forceit)
/* Add charset name if not empty */
if (p_mbchar->cmap_charset != NULL)
{
- STRCAT(prt_cmap, p_mbchar->cmap_charset);
+ vim_strncpy((char_u *)prt_cmap,
+ (char_u *)p_mbchar->cmap_charset, sizeof(prt_cmap) - 3);
STRCAT(prt_cmap, "-");
}
}
else
{
/* Add custom CMap character set name */
- pmcs_len = STRLEN(p_pmcs);
- if (pmcs_len == 0)
+ if (*p_pmcs == NUL)
{
EMSG(_("E674: printmbcharset cannot be empty with multi-byte encoding."));
return FALSE;
}
- STRNCPY(prt_cmap, p_pmcs, STRLEN(p_pmcs));
- prt_cmap[pmcs_len] = '\0';
+ vim_strncpy((char_u *)prt_cmap, p_pmcs, sizeof(prt_cmap) - 3);
STRCAT(prt_cmap, "-");
}
/* CMap name ends with (optional) encoding name and -H for horizontal */
- if (p_mbenc->cmap_encoding != NULL)
+ if (p_mbenc->cmap_encoding != NULL && STRLEN(prt_cmap)
+ + STRLEN(p_mbenc->cmap_encoding) + 3 < sizeof(prt_cmap))
{
STRCAT(prt_cmap, p_mbenc->cmap_encoding);
STRCAT(prt_cmap, "-");
diff --git a/src/ex_getln.c b/src/ex_getln.c
index 119262254..c96f11488 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -3239,10 +3239,7 @@ ExpandOne(xp, str, orig, options, mode)
}
ss = alloc((unsigned)len + 1);
if (ss)
- {
- STRNCPY(ss, xp->xp_files[0], len);
- ss[len] = NUL;
- }
+ vim_strncpy(ss, xp->xp_files[0], (size_t)len);
findex = -1; /* next p_wc gets first one */
}
@@ -3749,8 +3746,7 @@ addstar(fname, len, context)
retval = alloc(len + 4);
if (retval != NULL)
{
- STRNCPY(retval, fname, len);
- retval[len] = NUL;
+ vim_strncpy(retval, fname, len);
/*
* Don't add a star to ~, ~user, $var or `cmd`.
diff --git a/src/fold.c b/src/fold.c
index 0380516d9..cccc17e56 100644
--- a/src/fold.c
+++ b/src/fold.c
@@ -1809,10 +1809,7 @@ foldAddMarker(lnum, marker, markerlen)
return;
STRCPY(newline, line);
if (p == NULL)
- {
- STRNCPY(newline + line_len, marker, markerlen);
- newline[line_len + markerlen] = NUL;
- }
+ vim_strncpy(newline + line_len, marker, markerlen);
else
{
STRCPY(newline + line_len, cms);
diff --git a/src/gui_gtk.c b/src/gui_gtk.c
index 5bde7913c..cdd645b65 100644
--- a/src/gui_gtk.c
+++ b/src/gui_gtk.c
@@ -1476,8 +1476,7 @@ dlg_destroy(GtkWidget *dlg)
const char *text;
text = gtk_entry_get_text(GTK_ENTRY(dialog_textentry));
- STRNCPY(dialog_textfield, text, IOSIZE);
- dialog_textfield[IOSIZE - 1] = NUL;
+ vim_strncpy(dialog_textfield, (char_u *)text, IOSIZE - 1);
}
/* Destroy the dialog, will break the waiting loop. */
@@ -2340,8 +2339,7 @@ gui_mch_dialog(int type, /* type of dialog */
text = (char_u *)gtk_entry_get_text(GTK_ENTRY(entry));
text = CONVERT_FROM_UTF8(text);
- STRNCPY(textfield, text, IOSIZE);
- textfield[IOSIZE - 1] = NUL;
+ vim_strncpy(textfield, text, IOSIZE - 1);
CONVERT_FROM_UTF8_FREE(text);
}
diff --git a/src/gui_gtk_x11.c b/src/gui_gtk_x11.c
index cd306093d..d93f7bc75 100644
--- a/src/gui_gtk_x11.c
+++ b/src/gui_gtk_x11.c
@@ -2325,9 +2325,9 @@ sm_client_die(GnomeClient *client, gpointer data)
/* Don't write messages to the GUI anymore */
full_screen = FALSE;
- STRNCPY(IObuff, _("Vim: Received \"die\" request from session manager\n"),
- IOSIZE);
- IObuff[IOSIZE - 1] = NUL;
+ vim_strncpy(IObuff,
+ _("Vim: Received \"die\" request from session manager\n"),
+ IOSIZE - 1);
preserve_exit();
}
@@ -3527,9 +3527,9 @@ mainwin_destroy_cb(GtkObject *object, gpointer data)
if (!exiting) /* only do anything if the destroy was unexpected */
{
- STRNCPY(IObuff, _("Vim: Main window unexpectedly destroyed\n"),
- IOSIZE);
- IObuff[IOSIZE - 1] = NUL;
+ vim_strncpy(IObuff,
+ (char_u *)_("Vim: Main window unexpectedly destroyed\n"),
+ IOSIZE - 1);
preserve_exit();
}
}
diff --git a/src/gui_w32.c b/src/gui_w32.c
index 11d0281a6..f0b47172e 100644
--- a/src/gui_w32.c
+++ b/src/gui_w32.c
@@ -3592,8 +3592,7 @@ gui_mch_tearoff(
if (label == NULL)
break;
- STRNCPY(text, menu->name, nameLen);
- text[nameLen] = NUL;
+ vim_strncpy(text, menu->name, nameLen);
text = vim_strchr(text, TAB); /* stop at TAB before actext */
if (text == NULL)
text = label + nameLen; /* no actext, use whole name */
diff --git a/src/memline.c b/src/memline.c
index 47dc00d84..d1cf71f0d 100644
--- a/src/memline.c
+++ b/src/memline.c
@@ -698,8 +698,7 @@ set_b0_fname(b0p, buf)
/* Systems that cannot translate "~user" back into a path: copy the
* file name unmodified. Do use slashes instead of backslashes for
* portability. */
- STRNCPY(b0p->b0_fname, buf->b_ffname, B0_FNAME_SIZE);
- b0p->b0_fname[B0_FNAME_SIZE - 1] = NUL;
+ vim_strncpy(b0p->b0_fname, buf->b_ffname, B0_FNAME_SIZE - 1);
# ifdef BACKSLASH_IN_FILENAME
forward_slash(b0p->b0_fname);
# endif
@@ -721,10 +720,7 @@ set_b0_fname(b0p, buf)
/* If there is no user name or it is too long, don't use "~/" */
if (get_user_name(uname, B0_UNAME_SIZE) == FAIL
|| (ulen = STRLEN(uname)) + flen > B0_FNAME_SIZE - 1)
- {
- STRNCPY(b0p->b0_fname, buf->b_ffname, B0_FNAME_SIZE);
- b0p->b0_fname[B0_FNAME_SIZE - 1] = NUL;
- }
+ vim_strncpy(b0p->b0_fname, buf->b_ffname, B0_FNAME_SIZE - 1);
else
{
mch_memmove(b0p->b0_fname + ulen + 1, b0p->b0_fname + 1, flen);
diff --git a/src/menu.c b/src/menu.c
index 08a7314a2..678705694 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -1258,8 +1258,7 @@ set_context_in_menu_cmd(xp, cmd, arg, forceit)
path_name = alloc((unsigned)(after_dot - arg));
if (path_name == NULL)
return NULL;
- STRNCPY(path_name, arg, after_dot - arg - 1);
- path_name[after_dot - arg - 1] = NUL;
+ vim_strncpy(path_name, arg, after_dot - arg - 1);
}
name = path_name;
while (name != NULL && *name)
diff --git a/src/misc1.c b/src/misc1.c
index 29be8e50a..f0de5935a 100644
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -976,8 +976,7 @@ open_line(dir, flags, old_indent)
lead_len = 0;
else
{
- STRNCPY(leader, saved_line, lead_len);
- leader[lead_len] = NUL;
+ vim_strncpy(leader, saved_line, lead_len);
/*
* Replace leader with lead_repl, right or left adjusted
@@ -3345,8 +3344,7 @@ init_homedir()
p = vim_strchr(var + 1, '%');
if (p != NULL)
{
- STRNCPY(NameBuff, var + 1, p - (var + 1));
- NameBuff[p - (var + 1)] = NUL;
+ vim_strncpy(NameBuff, var + 1, p - (var + 1));
exp = mch_getenv(NameBuff);
if (exp != NULL && *exp != NUL
&& STRLEN(exp) + STRLEN(p) < MAXPATHL)
diff --git a/src/ops.c b/src/ops.c
index bbeedbf4a..894194135 100644
--- a/src/ops.c
+++ b/src/ops.c
@@ -2532,8 +2532,7 @@ op_change(oap)
{
if ((ins_text = alloc_check((unsigned)(ins_len + 1))) != NULL)
{
- STRNCPY(ins_text, firstline + bd.textcol, ins_len);
- ins_text[ins_len] = NUL;
+ vim_strncpy(ins_text, firstline + bd.textcol, (size_t)ins_len);
for (linenr = oap->start.lnum + 1; linenr <= oap->end.lnum;
linenr++)
{
diff --git a/src/option.c b/src/option.c
index ab0740dd4..30341d60c 100644
--- a/src/option.c
+++ b/src/option.c
@@ -4318,8 +4318,7 @@ skip:
if (errmsg != NULL)
{
- STRNCPY(IObuff, _(errmsg), IOSIZE - 1);
- IObuff[IOSIZE - 1] = NUL;
+ vim_strncpy(IObuff, (char_u *)_(errmsg), IOSIZE - 1);
i = STRLEN(IObuff) + 2;
if (i + (arg - startarg) < IOSIZE)
{
@@ -9365,7 +9364,7 @@ option_value2string(opp, opt_flags)
else if ((char_u **)opp->var == &p_pt)
str2specialbuf(p_pt, NameBuff, MAXPATHL);
else
- STRNCPY(NameBuff, varp, MAXPATHL);
+ vim_strncpy(NameBuff, varp, MAXPATHL - 1);
}
}
diff --git a/src/os_amiga.c b/src/os_amiga.c
index 8717825f3..2c2a770e0 100644
--- a/src/os_amiga.c
+++ b/src/os_amiga.c
@@ -626,7 +626,7 @@ mch_get_host_name(s, len)
char_u *s;
int len;
{
- STRNCPY(s, "Amiga", len);
+ vim_strncpy(s, "Amiga", len - 1);
}
/*
@@ -690,7 +690,7 @@ mch_FullName(fname, buf, len, force)
{
if (i < len - 1 && (i == 0 || buf[i - 1] != ':'))
buf[i++] = '/';
- STRNCPY(buf + i, fname, len - i);
+ vim_strncpy(buf + i, fname, len - i - 1);
}
}
}
diff --git a/src/os_qnx.c b/src/os_qnx.c
index 704061a4e..1a7250eab 100644
--- a/src/os_qnx.c
+++ b/src/os_qnx.c
@@ -148,8 +148,7 @@ clip_mch_set_selection( VimClipboard *cbd )
#endif
}
- STRNCPY( text_clip, str, len );
- text_clip[ len ] = NUL;
+ vim_strncpy( text_clip, str, len );
vim_clip[ 1 ] = NUL;
diff --git a/src/proto/misc2.pro b/src/proto/misc2.pro
index 936f38fad..3f6e2edca 100644
--- a/src/proto/misc2.pro
+++ b/src/proto/misc2.pro
@@ -36,7 +36,7 @@ char_u *strup_save __ARGS((char_u *orig));
void copy_spaces __ARGS((char_u *ptr, size_t count));
void copy_chars __ARGS((char_u *ptr, size_t count, int c));
void del_trailing_spaces __ARGS((char_u *ptr));
-void vim_strncpy __ARGS((char_u *to, char_u *from, int len));
+void vim_strncpy __ARGS((char_u *to, char_u *from, size_t len));
int copy_option_part __ARGS((char_u **option, char_u *buf, int maxlen, char *sep_chars));
void vim_free __ARGS((void *x));
int vim_stricmp __ARGS((char *s1, char *s2));
diff --git a/src/structs.h b/src/structs.h
index b7f39febf..e238d0f6d 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -1067,6 +1067,11 @@ struct dictvar_S
dict_T *dv_used_prev; /* previous dict in used dicts list */
};
+/* values for b_syn_spell: what to do with toplevel text */
+#define SYNSPL_DEFAULT 0 /* spell check if @Spell not defined */
+#define SYNSPL_TOP 1 /* spell check toplevel text */
+#define SYNSPL_NOTOP 2 /* don't spell check toplevel text */
+
/*
* buffer: structure that holds information about one file
@@ -1429,6 +1434,7 @@ struct file_buffer
hashtab_T b_keywtab; /* syntax keywords hash table */
hashtab_T b_keywtab_ic; /* idem, ignore case */
int b_syn_ic; /* ignore case for :syn cmds */
+ int b_syn_spell; /* SYNSPL_ values */
garray_T b_syn_patterns; /* table for syntax patterns */
garray_T b_syn_clusters; /* table for syntax clusters */
int b_spell_cluster_id; /* @Spell cluster ID or 0 */
diff --git a/src/syntax.c b/src/syntax.c
index 4ecec9b38..54a50612a 100644
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -396,6 +396,7 @@ static char_u *syn_getcurline __ARGS((void));
static int syn_regexec __ARGS((regmmatch_T *rmp, linenr_T lnum, colnr_T col));
static int check_keyword_id __ARGS((char_u *line, int startcol, int *endcol, long *flags, short **next_list, stateitem_T *cur_si));
static void syn_cmd_case __ARGS((exarg_T *eap, int syncing));
+static void syn_cmd_spell __ARGS((exarg_T *eap, int syncing));
static void syntax_sync_clear __ARGS((void));
static void syn_remove_pattern __ARGS((buf_T *buf, int idx));
static void syn_clear_pattern __ARGS((buf_T *buf, int i));
@@ -1698,6 +1699,17 @@ get_syntax_attr(col, can_spell)
if (syn_buf->b_sst_array == NULL)
return 0;
+ /* After 'synmaxcol' the attribute is always zero. */
+ if (syn_buf->b_p_smc > 0 && col >= syn_buf->b_p_smc)
+ {
+ clear_current_state();
+#ifdef FEAT_EVAL
+ current_id = 0;
+ current_trans_id = 0;
+#endif
+ return 0;
+ }
+
/* Make sure current_state is valid */
if (INVALID_STATE(&current_state))
validate_current_state();
@@ -2189,13 +2201,12 @@ syn_current_attr(syncing, displaying, can_spell)
* set "can_spell" to TRUE if spell checking is supposed to be
* done in the current item.
*/
-
if (syn_buf->b_spell_cluster_id == 0)
{
/* There is no @Spell cluster: Do spelling for items without
* @NoSpell cluster. */
if (syn_buf->b_nospell_cluster_id == 0 || current_trans_id == 0)
- *can_spell = TRUE;
+ *can_spell = (syn_buf->b_syn_spell != SYNSPL_NOTOP);
else
{
sps.inc_tag = 0;
@@ -2207,9 +2218,11 @@ syn_current_attr(syncing, displaying, can_spell)
else
{
/* The @Spell cluster is defined: Do spelling in items with
- * the @Spell cluster. But not when @NoSpell is also there. */
+ * the @Spell cluster. But not when @NoSpell is also there.
+ * At the toplevel only spell check when ":syn spell toplevel"
+ * was used. */
if (current_trans_id == 0)
- *can_spell = FALSE;
+ *can_spell = (syn_buf->b_syn_spell == SYNSPL_TOP);
else
{
sps.inc_tag = 0;
@@ -2248,8 +2261,11 @@ syn_current_attr(syncing, displaying, can_spell)
}
}
else if (can_spell != NULL)
- /* Only do spelling when there is no @Spell cluster. */
- *can_spell = (syn_buf->b_spell_cluster_id == 0);
+ /* Default: Only do spelling when there is no @Spell cluster or when
+ * ":syn spell toplevel" was used. */
+ *can_spell = syn_buf->b_syn_spell == SYNSPL_DEFAULT
+ ? (syn_buf->b_spell_cluster_id == 0)
+ : (syn_buf->b_syn_spell == SYNSPL_TOP);
/* nextgroup ends at end of line, unless "skipnl" or "skipemtpy" present */
if (current_next_list != NULL
@@ -3050,8 +3066,7 @@ check_keyword_id(line, startcol, endcolp, flagsp, next_listp, cur_si)
* Must make a copy of the keyword, so we can add a NUL and make it
* lowercase.
*/
- STRNCPY(keyword, kwp, kwlen);
- keyword[kwlen] = NUL;
+ vim_strncpy(keyword, kwp, kwlen);
/*
* Try twice:
@@ -3120,6 +3135,33 @@ syn_cmd_case(eap, syncing)
}
/*
+ * Handle ":syntax spell" command.
+ */
+/* ARGSUSED */
+ static void
+syn_cmd_spell(eap, syncing)
+ exarg_T *eap;
+ int syncing; /* not used */
+{
+ char_u *arg = eap->arg;
+ char_u *next;
+
+ eap->nextcmd = find_nextcmd(arg);
+ if (eap->skip)
+ return;
+
+ next = skiptowhite(arg);
+ if (STRNICMP(arg, "toplevel", 8) == 0 && next - arg == 8)
+ curbuf->b_syn_spell = SYNSPL_TOP;
+ else if (STRNICMP(arg, "notoplevel", 10) == 0 && next - arg == 10)
+ curbuf->b_syn_spell = SYNSPL_NOTOP;
+ else if (STRNICMP(arg, "default", 4) == 0 && next - arg == 4)
+ curbuf->b_syn_spell = SYNSPL_DEFAULT;
+ else
+ EMSG2(_("E390: Illegal argument: %s"), arg);
+}
+
+/*
* Clear all syntax info for one buffer.
*/
void
@@ -3129,6 +3171,7 @@ syntax_clear(buf)
int i;
buf->b_syn_ic = FALSE; /* Use case, by default */
+ buf->b_syn_spell = SYNSPL_DEFAULT; /* default spell checking */
buf->b_syn_containedin = FALSE;
/* free the keywords */
@@ -5519,8 +5562,7 @@ get_id_list(arg, keylen, list)
failed = TRUE;
break;
}
- STRNCPY(name + 1, p, end - p);
- name[end - p + 1] = NUL;
+ vim_strncpy(name + 1, p, end - p);
if ( STRCMP(name + 1, "ALLBUT") == 0
|| STRCMP(name + 1, "ALL") == 0
|| STRCMP(name + 1, "TOP") == 0
@@ -5806,6 +5848,7 @@ static struct subcommand subcommands[] =
{"off", syn_cmd_off},
{"region", syn_cmd_region},
{"reset", syn_cmd_reset},
+ {"spell", syn_cmd_spell},
{"sync", syn_cmd_sync},
{"", syn_cmd_list},
{NULL, NULL}
@@ -8131,8 +8174,7 @@ syn_name2id(name)
/* Avoid using stricmp() too much, it's slow on some systems */
/* Avoid alloc()/free(), these are slow too. ID names over 200 chars
* don't deserve to be found! */
- STRNCPY(name_u, name, 199);
- name_u[199] = NUL;
+ vim_strncpy(name_u, name, 199);
vim_strup(name_u);
for (i = highlight_ga.ga_len; --i >= 0; )
if (HL_TABLE()[i].sg_name_u != NULL
diff --git a/src/testdir/test51.in b/src/testdir/test51.in
index a158c8691..49c88ec7e 100644
--- a/src/testdir/test51.in
+++ b/src/testdir/test51.in
@@ -29,6 +29,8 @@ STARTTEST
:%s/ctermbg=\d*/ctermbg=3/
:" filter out possibly translated error message
:%s/E475: [^:]*:/E475:/
+:" fix the fileformat
+:set ff&
:wq!
ENDTEST
diff --git a/src/testdir/test58.in b/src/testdir/test58.in
index 9e1427067..e03c8e05c 100644
--- a/src/testdir/test58.in
+++ b/src/testdir/test58.in
@@ -7,9 +7,9 @@ STARTTEST
:set enc=latin1
:e!
:" First generate a .spl file from a .dic and a .aff file.
-gg:/^affstart1/+1,/^affend1/-1w Xtest.aff
-gg:/^dicstart/+1,/^dicend/-1w Xtest.dic
-:mkspell Xtest Xtest
+gg:/^affstart1/+1,/^affend1/-1w! Xtest.aff
+gg:/^dicstart/+1,/^dicend/-1w! Xtest.dic
+:mkspell! Xtest Xtest
:"
:" use that spell file
:set spl=Xtest.latin1.spl
@@ -71,30 +71,29 @@ gg:/^affstart2/+1,/^affend2/-1w! Xtest.aff
:" also use an addition file
gg:/^addstart/+1,/^addend/-1w! Xtest.latin1.add
:mkspell! Xtest.latin1.add.spl Xtest.latin1.add
-:set spl=en
:set spellfile=Xtest.latin1.add
/^test2:
]s:let str = spellbadword()
:$put =str
-:set spl=en_us
+:set spl=Xtest_us.latin1.spl
/^test2:
]smm:let str = spellbadword()
:$put =str
`m]s:let str = spellbadword()
:$put =str
-:set spl=en_gb
+:set spl=Xtest_gb.latin1.spl
/^test2:
]smm:let str = spellbadword()
:$put =str
`m]s:let str = spellbadword()
:$put =str
-:set spl=en_nz
+:set spl=Xtest_nz.latin1.spl
/^test2:
]smm:let str = spellbadword()
:$put =str
`m]s:let str = spellbadword()
:$put =str
-:set spl=en_ca
+:set spl=Xtest_ca.latin1.spl
/^test2:
]smm:let str = spellbadword()
:$put =str
diff --git a/src/version.c b/src/version.c
index e52839c8b..165ead098 100644
--- a/src/version.c
+++ b/src/version.c
@@ -1159,11 +1159,9 @@ do_intro_line(row, mesg, add_version, attr)
if (*mesg == ' ')
{
- STRNCPY(modby, _("Modified by "), MODBY_LEN);
- modby[MODBY_LEN - 1] = NUL;
+ vim_strncpy(modby, _("Modified by "), MODBY_LEN - 1);
l = STRLEN(modby);
- STRNCPY(modby + l, MODIFIED_BY, MODBY_LEN - l);
- modby[MODBY_LEN - 1] = NUL;
+ vim_strncpy(modby + l, MODIFIED_BY, MODBY_LEN - l - 1);
mesg = modby;
}
#endif
diff --git a/src/version.h b/src/version.h
index 1fa3fbac5..a5695f7a1 100644
--- a/src/version.h
+++ b/src/version.h
@@ -36,5 +36,5 @@
#define VIM_VERSION_NODOT "vim70aa"
#define VIM_VERSION_SHORT "7.0aa"
#define VIM_VERSION_MEDIUM "7.0aa ALPHA"
-#define VIM_VERSION_LONG "VIM - Vi IMproved 7.0aa ALPHA (2005 Jul 12)"
-#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0aa ALPHA (2005 Jul 12, compiled "
+#define VIM_VERSION_LONG "VIM - Vi IMproved 7.0aa ALPHA (2005 Jul 18)"
+#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0aa ALPHA (2005 Jul 18, compiled "