updated for version 7.0012
diff --git a/src/Makefile b/src/Makefile
index e080477..fade47f 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -1055,9 +1055,9 @@
 NONE_INSTALL = install_normal
 
 ### KDE GUI interface.
-KDE_SRC		= gui.c pty.c gui_kde.cc gui_kde_x11.cc gui_kde_widget.cc gui_kde_widget_moc.cc kvim_iface_skel.cc
+KDE_SRC		= gui.c pty.c gui_kde.cc gui_kde_x11.cc gui_kde_wid.cc gui_kde_wid_moc.cc kvim_iface_skel.cc
 KDE_OBJ		= objects/gui.o objects/pty.o objects/gui_kde.o objects/gui_kde_x11.o \
-			objects/gui_kde_widget.o objects/gui_kde_widget_moc.o \
+			objects/gui_kde_wid.o objects/gui_kde_wid_moc.o \
 			objects/kvim_iface_skel.o
 KDE_DEFS	= -DFEAT_GUI_KDE $(NARROW_PROTO)
 KDE_IPATH	= $(GUI_INC_LOC)
@@ -1201,7 +1201,7 @@
 CARBONGUI_TESTARG = VIMPROG=../$(CARBONGUI_BUNDLE)/Contents/MacOS/$(VIMTARGET)
 
 # All GUI files
-ALL_GUI_SRC  = gui.c gui_gtk.c gui_gtk_f.c gui_motif.c gui_athena.c gui_gtk_x11.c gui_x11.c gui_at_sb.c gui_at_fs.c pty.c gui_kde.cc gui_kde_widget.cc gui_kde_x11.cc gui_kde_widget_moc.cc
+ALL_GUI_SRC  = gui.c gui_gtk.c gui_gtk_f.c gui_motif.c gui_athena.c gui_gtk_x11.c gui_x11.c gui_at_sb.c gui_at_fs.c pty.c gui_kde.cc gui_kde_wid.cc gui_kde_x11.cc gui_kde_wid_moc.cc
 ALL_GUI_PRO  = gui.pro gui_gtk.pro gui_motif.pro gui_athena.pro gui_gtk_x11.pro gui_x11.pro gui_w16.pro gui_w32.pro gui_amiga.pro gui_photon.pro gui_kde.pro gui_kde_x11.pro
 
 # }}}
@@ -2038,7 +2038,7 @@
 	-rm -f $(TOOLS) auto/osdef.h auto/pathdef.c auto/if_perl.c
 	-rm -f conftest* *~ auto/link.sed
 	-rm -rf $(GUI_BUNDLE)
-	-rm -f gui_kde_widget_moc.cc kvim_iface_skel.cc *.kidl
+	-rm -f gui_kde_wid_moc.cc kvim_iface_skel.cc *.kidl
 	if test -d $(PODIR); then \
 		cd $(PODIR); $(MAKE) prefix=$(DESTDIR)$(prefix) clean; \
 	fi
@@ -2393,17 +2393,17 @@
 objects/gui_kde_x11.o: gui_kde_x11.cc
 	$(CCC) -o $@ gui_kde_x11.cc
 
-objects/gui_kde_widget.o: gui_kde_widget.cc
-	$(MOC) -o gui_kde_widget_moc.cc gui_kde_widget.h
+objects/gui_kde_wid.o: gui_kde_wid.cc
+	$(MOC) -o gui_kde_wid_moc.cc gui_kde_wid.h
 	$(KDE_DIR)/bin/dcopidl kvim_iface.h > kvim_iface.kidl || ( rm -f kvim_iface.kidl ; /bin/false )
 	$(KDE_DIR)/bin/dcopidl2cpp --c++-suffix cc --no-stub kvim_iface.kidl
-	$(CCC) -o $@ gui_kde_widget.cc
+	$(CCC) -o $@ gui_kde_wid.cc
 
-gui_kde_widget_moc.cc: objects/gui_kde_widget.o
-objects/gui_kde_widget_moc.o: gui_kde_widget_moc.cc
-	$(CCC) -o $@ gui_kde_widget_moc.cc
+gui_kde_wid_moc.cc: objects/gui_kde_wid.o
+objects/gui_kde_wid_moc.o: gui_kde_wid_moc.cc
+	$(CCC) -o $@ gui_kde_wid_moc.cc
 
-kvim_iface_skel.cc: objects/gui_kde_widget.o
+kvim_iface_skel.cc: objects/gui_kde_wid.o
 objects/kvim_iface_skel.o: kvim_iface_skel.cc
 	$(CCC) -o $@ kvim_iface_skel.cc
 
@@ -2716,21 +2716,21 @@
  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
  proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
  arabic.h
-objects/gui_kde.o: gui_kde.cc gui_kde_widget.h kvim_iface.h vim.h \
+objects/gui_kde.o: gui_kde.cc gui_kde_wid.h kvim_iface.h vim.h \
  auto/config.h feature.h os_unix.h auto/osdef.h ascii.h keymap.h \
  term.h macros.h structs.h regexp.h gui.h option.h ex_cmds.h proto.h \
  globals.h farsi.h
-objects/gui_kde_widget.o: gui_kde_widget.cc gui_kde_widget.h kvim_iface.h \
+objects/gui_kde_wid.o: gui_kde_wid.cc gui_kde_wid.h kvim_iface.h \
  vim.h auto/config.h feature.h os_unix.h auto/osdef.h ascii.h keymap.h \
  term.h macros.h structs.h regexp.h gui.h option.h ex_cmds.h proto.h \
  globals.h farsi.h proto/../../pixmaps/alert.xpm proto/../../pixmaps/error.xpm \
  proto/../../pixmaps/generic.xpm proto/../../pixmaps/info.xpm \
  proto/../../pixmaps/quest.xpm
-objects/gui_kde_x11.o: gui_kde_x11.cc gui_kde_widget.h kvim_iface.h vim.h \
+objects/gui_kde_x11.o: gui_kde_x11.cc gui_kde_wid.h kvim_iface.h vim.h \
  auto/config.h feature.h os_unix.h auto/osdef.h ascii.h keymap.h \
  term.h macros.h structs.h regexp.h gui.h option.h ex_cmds.h proto.h \
  globals.h farsi.h version.h ../runtime/vim32x32.xpm
-objects/gui_kde_widget_moc.o: gui_kde_widget_moc.cc gui_kde_widget.h \
+objects/gui_kde_wid_moc.o: gui_kde_wid_moc.cc gui_kde_wid.h \
  kvim_iface.h vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h option.h \
  ex_cmds.h proto.h globals.h
diff --git a/src/buffer.c b/src/buffer.c
index 4d07eb6..c2bc094 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -216,6 +216,12 @@
 #endif
 	curbuf->b_flags |= BF_READERR;
 
+#ifdef FEAT_FOLDING
+    /* Need to update automatic folding.  Do this before the autocommands,
+     * they may use the fold info. */
+    foldUpdateAll(curwin);
+#endif
+
 #ifdef FEAT_AUTOCMD
     /* need to set w_topline, unless some autocommand already did that. */
     if (!(curwin->w_valid & VALID_TOPLINE))
@@ -263,11 +269,6 @@
 #endif
     }
 
-#ifdef FEAT_FOLDING
-    /* Need to update automatic folding. */
-    foldUpdateAll(curwin);
-#endif
-
     return retval;
 }
 
@@ -408,8 +409,7 @@
     if (!buf_valid(buf))
 	return;
 # ifdef FEAT_EVAL
-    /* Autocommands may abort script processing. */
-    if (aborting())
+    if (aborting())	    /* autocmds may abort script processing */
 	return;
 # endif
 
@@ -538,7 +538,8 @@
 	    return;
     }
 # ifdef FEAT_EVAL
-    if (aborting())	    /* autocmds may abort script processing */
+    /* autocmds may abort script processing */
+    if (aborting())
 	return;
 # endif
 
@@ -669,8 +670,16 @@
 		&& (defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG))
     if (swap_exists_action == SEA_QUIT && *eap->cmd == 's')
     {
-	/* Quitting means closing the split window, nothing else. */
+	int	old_got_int = got_int;
+
+	/* Quitting means closing the split window, nothing else.
+	 * Reset got_int here, because it causes aborting() to return TRUE
+	 * which breaks closing a window. */
+	got_int = FALSE;
+
 	win_close(curwin, TRUE);
+
+	got_int |= old_got_int;
 	swap_exists_action = SEA_NONE;
     }
     else
@@ -688,6 +697,12 @@
 handle_swap_exists(old_curbuf)
     buf_T	*old_curbuf;
 {
+    int		old_got_int = got_int;
+
+    /* Reset got_int here, because it causes aborting() to return TRUE which
+     * breaks closing a buffer. */
+    got_int = FALSE;
+
     if (swap_exists_action == SEA_QUIT)
     {
 	/* User selected Quit at ATTENTION prompt.  Go back to previous
@@ -712,6 +727,7 @@
 	do_modelines();
     }
     swap_exists_action = SEA_NONE;
+    got_int |= old_got_int;
 }
 #endif
 
@@ -4226,26 +4242,28 @@
 #endif
 	    set_curbuf(buf, DOBUF_GOTO);
 #ifdef FEAT_AUTOCMD
-# ifdef FEAT_EVAL
-	    /* Autocommands deleted the buffer or aborted script
-	     * processing!!! */
-	    if (!buf_valid(buf) || aborting())
-# else
 	    if (!buf_valid(buf))	/* autocommands deleted the buffer!!! */
-# endif
 	    {
-#if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
+# if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
 		swap_exists_action = SEA_NONE;
-#endif
+# endif
 		break;
 	    }
 #endif
 #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
 	    if (swap_exists_action == SEA_QUIT)
 	    {
-		/* User selected Quit at ATTENTION prompt; close this window. */
+		int	old_got_int = got_int;
+
+		/* User selected Quit at ATTENTION prompt; close this window.
+		 * Reset got_int here, because it causes aborting() to return
+		 * TRUE which breaks closing a window. */
+		got_int = FALSE;
+
 		win_close(curwin, TRUE);
 		--open_wins;
+
+		got_int |= old_got_int;
 		swap_exists_action = SEA_NONE;
 	    }
 	    else
@@ -4259,6 +4277,11 @@
 	    (void)vgetc();	/* only break the file loading, not the rest */
 	    break;
 	}
+#ifdef FEAT_EVAL
+	/* Autocommands deleted the buffer or aborted script processing!!! */
+	if (aborting())
+	    break;
+#endif
     }
 #ifdef FEAT_AUTOCMD
     --autocmd_no_enter;
diff --git a/src/edit.c b/src/edit.c
index 0ca698c..1e2aded 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -2641,7 +2641,7 @@
 
 #ifdef FEAT_COMPL_FUNC
 static char_u *call_completefunc __ARGS((char_u *line, char_u *base, int col, int preproc));
-static int expand_by_function __ARGS((int lnum, int col, char_u *base, char_u ***matches));
+static int expand_by_function __ARGS((linenr_T lnum, int col, char_u *base, char_u ***matches));
 
 /*
  * Execute user defined complete function 'completefunc'.
@@ -2665,7 +2665,7 @@
     args[0] = line;
     args[1] = base;
     args[2] = colbuf;
-    args[3] = preproc ? "1" : "0";
+    args[3] = (char_u *)(preproc ? "1" : "0");
     return call_vim_function(curbuf->b_p_cfu, 4, args, FALSE);
 }
 
@@ -2676,7 +2676,7 @@
  */
     static int
 expand_by_function(lnum, col, base, matches)
-    int		lnum;
+    linenr_T	lnum;
     int		col;
     char_u	*base;
     char_u	***matches;
@@ -3528,7 +3528,7 @@
 	    lenstr = call_completefunc(line, NULL, complete_col, 1);
 	    if (lenstr == NULL)
 		return FAIL;
-	    keeplen = atoi(lenstr);
+	    keeplen = atoi((char *)lenstr);
 	    vim_free(lenstr);
 	    if (keeplen < 0)
 		return FAIL;
diff --git a/src/eval.c b/src/eval.c
index b2955ff..78513a2 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -295,8 +295,10 @@
 static void f_getcmdline __ARGS((VAR argvars, VAR retvar));
 static void f_getcmdpos __ARGS((VAR argvars, VAR retvar));
 static void f_getcwd __ARGS((VAR argvars, VAR retvar));
+static void f_getfperm __ARGS((VAR argvars, VAR retvar));
 static void f_getfsize __ARGS((VAR argvars, VAR retvar));
 static void f_getftime __ARGS((VAR argvars, VAR retvar));
+static void f_getftype __ARGS((VAR argvars, VAR retvar));
 static void f_getline __ARGS((VAR argvars, VAR retvar));
 static void f_getreg __ARGS((VAR argvars, VAR retvar));
 static void f_getregtype __ARGS((VAR argvars, VAR retvar));
@@ -751,7 +753,7 @@
 	if (argv[i] == NULL || *argv[i] == NUL)
 	{
 	    argvars[i].var_type = VAR_STRING;
-	    argvars[i].var_val.var_string = "";
+	    argvars[i].var_val.var_string = (char_u *)"";
 	    continue;
 	}
 
@@ -2853,8 +2855,10 @@
     {"getcmdline",	0, 0, f_getcmdline},
     {"getcmdpos",	0, 0, f_getcmdpos},
     {"getcwd",		0, 0, f_getcwd},
+    {"getfperm",	1, 1, f_getfperm},
     {"getfsize",	1, 1, f_getfsize},
     {"getftime",	1, 1, f_getftime},
+    {"getftype",	1, 1, f_getftype},
     {"getline",		1, 1, f_getline},
     {"getreg",		0, 1, f_getreg},
     {"getregtype",	0, 1, f_getregtype},
@@ -2941,7 +2945,7 @@
     {"wincol",		0, 0, f_wincol},
     {"winheight",	1, 1, f_winheight},
     {"winline",		0, 0, f_winline},
-    {"winnr",		0, 0, f_winnr},
+    {"winnr",		0, 1, f_winnr},
     {"winrestcmd",	0, 0, f_winrestcmd},
     {"winwidth",	1, 1, f_winwidth},
 };
@@ -4578,6 +4582,38 @@
 }
 
 /*
+ * "getfperm({fname})" function
+ */
+    static void
+f_getfperm(argvars, retvar)
+    VAR		argvars;
+    VAR		retvar;
+{
+    char_u	*fname;
+    struct stat st;
+    char_u	*perm = NULL;
+    char_u	flags[] = "rwx";
+    int		i;
+
+    fname = get_var_string(&argvars[0]);
+
+    retvar->var_type = VAR_STRING;
+    if (mch_stat((char *)fname, &st) >= 0)
+    {
+	perm = vim_strsave((char_u *)"---------");
+	if (perm != NULL)
+	{
+	    for (i = 0; i < 9; i++)
+	    {
+		if (st.st_mode & (1 << (8 - i)))
+		    perm[i] = flags[i % 3];
+	    }
+	}
+    }
+    retvar->var_val.var_string = perm;
+}
+
+/*
  * "getfsize({fname})" function
  */
     static void
@@ -4623,6 +4659,86 @@
 }
 
 /*
+ * "getftype({fname})" function
+ */
+    static void
+f_getftype(argvars, retvar)
+    VAR		argvars;
+    VAR		retvar;
+{
+    char_u	*fname;
+    struct stat st;
+    char_u	*type = NULL;
+    char	*t;
+
+    fname = get_var_string(&argvars[0]);
+
+    retvar->var_type = VAR_STRING;
+    if (mch_lstat((char *)fname, &st) >= 0)
+    {
+#ifdef S_ISREG
+	if (S_ISREG(st.st_mode))
+	    t = "file";
+	else if (S_ISDIR(st.st_mode))
+	    t = "dir";
+# ifdef S_ISLNK
+	else if (S_ISLNK(st.st_mode))
+	    t = "link";
+# endif
+# ifdef S_ISBLK
+	else if (S_ISBLK(st.st_mode))
+	    t = "bdev";
+# endif
+# ifdef S_ISCHR
+	else if (S_ISCHR(st.st_mode))
+	    t = "cdev";
+# endif
+# ifdef S_ISFIFO
+	else if (S_ISFIFO(st.st_mode))
+	    t = "fifo";
+# endif
+# ifdef S_ISSOCK
+	else if (S_ISSOCK(st.st_mode))
+	    t = "fifo";
+# endif
+	else
+	    t = "other";
+#else
+# ifdef S_IFMT
+	switch (st.st_mode & S_IFMT)
+	{
+	    case S_IFREG: t = "file"; break;
+	    case S_IFDIR: t = "dir"; break;
+#  ifdef S_IFLNK
+	    case S_IFLNK: t = "link"; break;
+#  endif
+#  ifdef S_IFBLK
+	    case S_IFBLK: t = "bdev"; break;
+#  endif
+#  ifdef S_IFCHR
+	    case S_IFCHR: t = "cdev"; break;
+#  endif
+#  ifdef S_IFIFO
+	    case S_IFIFO: t = "fifo"; break;
+#  endif
+#  ifdef S_IFSOCK
+	    case S_IFSOCK: t = "socket"; break;
+#  endif
+	    default: t = "other";
+	}
+# else
+	if (mch_isdir(fname))
+	    t = "dir";
+	else
+	    t = "file";
+# endif
+#endif
+	type = vim_strsave((char_u *)t);
+    }
+    retvar->var_val.var_string = type;
+}
+
+/*
  * "getreg()" function
  */
     static void
@@ -6305,6 +6421,10 @@
     retvar->var_type = VAR_STRING;
 }
 
+#define SP_NOMOVE	1	/* don't move cursor */
+#define SP_REPEAT	2	/* repeat to find outer pair */
+#define SP_RETCOUNT	4	/* return matchcount */
+
 /*
  * "search()" function
  */
@@ -6315,13 +6435,24 @@
 {
     char_u	*pat;
     pos_T	pos;
+    pos_T	save_cursor;
     int		save_p_ws = p_ws;
     int		dir;
+    int		flags = 0;
+
+    retvar->var_val.var_number = 0;	/* default: FAIL */
 
     pat = get_var_string(&argvars[0]);
-    dir = get_search_arg(&argvars[1], NULL);	/* may set p_ws */
+    dir = get_search_arg(&argvars[1], &flags);	/* may set p_ws */
+    if (dir == 0)
+	goto theend;
+    if ((flags & ~SP_NOMOVE) != 0)
+    {
+	EMSG2(_(e_invarg2), get_var_string(&argvars[1]));
+	goto theend;
+    }
 
-    pos = curwin->w_cursor;
+    pos = save_cursor = curwin->w_cursor;
     if (searchit(curwin, curbuf, &pos, dir, pat, 1L,
 					      SEARCH_KEEP, RE_SEARCH) != FAIL)
     {
@@ -6331,15 +6462,14 @@
 	 * correct that here */
 	check_cursor();
     }
-    else
-	retvar->var_val.var_number = 0;
+
+    /* If 'n' flag is used: restore cursor position. */
+    if (flags & SP_NOMOVE)
+	curwin->w_cursor = save_cursor;
+theend:
     p_ws = save_p_ws;
 }
 
-#define SP_NOMOVE	1	/* don't move cursor */
-#define SP_REPEAT	2	/* repeat to find outer pair */
-#define SP_RETCOUNT	4	/* return matchcount */
-
 /*
  * "searchpair()" function
  */
@@ -6393,6 +6523,8 @@
 
     /* Handle the optional fourth argument: flags */
     dir = get_search_arg(&argvars[3], &flags); /* may set p_ws */
+    if (dir == 0)
+	goto theend;
 
     /* Optional fifth argument: skip expresion */
     if (argvars[3].var_type == VAR_UNKNOWN
@@ -6474,6 +6606,11 @@
     p_cpo = save_cpo;
 }
 
+/*
+ * Get flags for a search function.
+ * Possibly sets "p_ws".
+ * Returns BACKWARD, FORWARD or zero (for an error).
+ */
     static int
 get_search_arg(varp, flagsp)
     VAR		varp;
@@ -6482,24 +6619,37 @@
     int		dir = FORWARD;
     char_u	*flags;
     char_u	nbuf[NUMBUFLEN];
+    int		mask;
 
     if (varp->var_type != VAR_UNKNOWN)
     {
 	flags = get_var_string_buf(varp, nbuf);
-	if (vim_strchr(flags, 'b') != NULL)
-	    dir = BACKWARD;
-	if (vim_strchr(flags, 'w') != NULL)
-	    p_ws = TRUE;
-	if (vim_strchr(flags, 'W') != NULL)
-	    p_ws = FALSE;
-	if (flagsp != NULL)
+	while (*flags != NUL)
 	{
-	    if (vim_strchr(flags, 'n') != NULL)
-		*flagsp |= SP_NOMOVE;
-	    if (vim_strchr(flags, 'r') != NULL)
-		*flagsp |= SP_REPEAT;
-	    if (vim_strchr(flags, 'm') != NULL)
-		*flagsp |= SP_RETCOUNT;
+	    switch (*flags)
+	    {
+		case 'b': dir = BACKWARD; break;
+		case 'w': p_ws = TRUE; break;
+		case 'W': p_ws = FALSE; break;
+		default:  mask = 0;
+			  if (flagsp != NULL)
+			     switch (*flags)
+			     {
+				 case 'n': mask = SP_NOMOVE; break;
+				 case 'r': mask = SP_REPEAT; break;
+				 case 'm': mask = SP_RETCOUNT; break;
+			     }
+			  if (mask == 0)
+			  {
+			      EMSG2(_(e_invarg2), flags);
+			      dir = 0;
+			  }
+			  else
+			      *flagsp |= mask;
+	    }
+	    if (dir == 0)
+		break;
+	    ++flags;
 	}
     }
     return dir;
@@ -7648,7 +7798,9 @@
 	/* not multi-byte: fromstr and tostr must be the same length */
 	if (STRLEN(fromstr) != STRLEN(tostr))
 	{
+#ifdef FEAT_MBYTE
 error:
+#endif
 	    EMSG2(_(e_invarg2), fromstr);
 	    ga_clear(&ga);
 	    return;
@@ -7859,9 +8011,30 @@
     int		nr = 1;
 #ifdef FEAT_WINDOWS
     win_T	*wp;
+    win_T	*twin = curwin;
+    char_u	*arg;
 
-    for (wp = firstwin; wp != curwin; wp = wp->w_next)
-	++nr;
+    if (argvars[0].var_type != VAR_UNKNOWN)
+    {
+	arg = get_var_string(&argvars[0]);
+	if (STRCMP(arg, "$") == 0)
+	    twin = lastwin;
+	else if (STRCMP(arg, "#") == 0)
+	{
+	    twin = prevwin;
+	    if (prevwin == NULL)
+		nr = 0;
+	}
+	else
+	{
+	    EMSG2(_(e_invexpr2), arg);
+	    nr = 0;
+	}
+    }
+
+    if (nr > 0)
+	for (wp = firstwin; wp != twin; wp = wp->w_next)
+	    ++nr;
 #endif
     retvar->var_val.var_number = nr;
 }
diff --git a/src/ex_cmds2.c b/src/ex_cmds2.c
index d4cf86b..b651f34 100644
--- a/src/ex_cmds2.c
+++ b/src/ex_cmds2.c
@@ -3806,6 +3806,7 @@
     {"Courier", "Courier-Bold", "Courier-Oblique", "Courier-BoldOblique"}
 };
 
+#ifdef FEAT_MBYTE
 /* Generic font metrics for multi-byte fonts */
 static struct prt_ps_font_S prt_ps_mb_font =
 {
@@ -3814,6 +3815,7 @@
     -250, 805,
     {NULL, NULL, NULL, NULL}
 };
+#endif
 
 /* Pointer to current font set being used */
 static struct prt_ps_font_S* prt_ps_font;
@@ -3822,8 +3824,8 @@
  * building CID font name */
 struct prt_ps_encoding_S
 {
-    char_u	*encoding;
-    char_u	*cmap_encoding;
+    char	*encoding;
+    char	*cmap_encoding;
     int		needs_charset;
 };
 
@@ -3834,6 +3836,8 @@
     int		has_charset;
 };
 
+#ifdef FEAT_MBYTE
+
 #define CS_JIS_C_1978   (0x01)
 #define CS_JIS_X_1983   (0x02)
 #define CS_JIS_X_1990   (0x04)
@@ -4017,6 +4021,7 @@
         "KS_X_1992"
     }
 };
+#endif /* FEAT_MBYTE */
 
 struct prt_ps_resource_S
 {
@@ -4076,7 +4081,7 @@
 
 struct prt_dsc_comment_S
 {
-    char_u	*string;
+    char	*string;
     int		len;
     int		type;
 };
@@ -4092,11 +4097,11 @@
 #define SIZEOF_CSTR(s)      (sizeof(s) - 1)
 struct prt_dsc_comment_S prt_dsc_table[] =
 {
-    {PRT_DSC_TITLE,       SIZEOF_CSTR(PRT_DSC_TITLE),       PRT_DSC_TITLE_TYPE},
+    {PRT_DSC_TITLE,       SIZEOF_CSTR(PRT_DSC_TITLE),     PRT_DSC_TITLE_TYPE},
     {PRT_DSC_VERSION,     SIZEOF_CSTR(PRT_DSC_VERSION),
-                                                        PRT_DSC_VERSION_TYPE},
+							PRT_DSC_VERSION_TYPE},
     {PRT_DSC_ENDCOMMENTS, SIZEOF_CSTR(PRT_DSC_ENDCOMMENTS),
-                                                    PRT_DSC_ENDCOMMENTS_TYPE}
+						     PRT_DSC_ENDCOMMENTS_TYPE}
 };
 
 static void prt_write_file_raw_len __ARGS((char_u *buffer, int bytes));
@@ -4135,6 +4140,7 @@
 static int prt_resfile_skip_ws __ARGS((int offset));
 static int prt_next_dsc __ARGS((struct prt_dsc_line_S *p_dsc_line));
 #ifdef FEAT_MBYTE
+static int prt_build_cid_fontname __ARGS((int font, char_u *name, int name_len));
 static void prt_def_cidfont __ARGS((char *new_name, int height, char *cidfont));
 static int prt_match_encoding __ARGS((char *p_encoding, struct prt_ps_mbfont_S *p_cmap, struct prt_ps_encoding_S **pp_mbenc));
 static int prt_match_charset __ARGS((char *p_charset, struct prt_ps_mbfont_S *p_cmap, struct prt_ps_charset_S **pp_mbchar));
@@ -5097,15 +5103,16 @@
     return (int)((prt_right_margin - prt_left_margin) / prt_char_width);
 }
 
+#ifdef FEAT_MBYTE
     static int
 prt_build_cid_fontname(font, name, name_len)
     int     font;
-    char    *name;
+    char_u  *name;
     int     name_len;
 {
     char    *fontname;
 
-    fontname = alloc(name_len + 1);
+    fontname = (char *)alloc(name_len + 1);
     if (fontname == NULL)
         return FALSE;
     STRNCPY(fontname, name, name_len);
@@ -5114,6 +5121,7 @@
 
     return TRUE;
 }
+#endif
 
 /*
  * Get number of lines of text that fit on a page (excluding the header).
@@ -5152,13 +5160,13 @@
 #ifdef FEAT_MBYTE
     static int
 prt_match_encoding(p_encoding, p_cmap, pp_mbenc)
-    char    *p_encoding;
-    struct prt_ps_mbfont_S *p_cmap;
-    struct prt_ps_encoding_S **pp_mbenc;
+    char			*p_encoding;
+    struct prt_ps_mbfont_S	*p_cmap;
+    struct prt_ps_encoding_S	**pp_mbenc;
 {
-    int     mbenc;
-    int     enc_len;
-    struct prt_ps_encoding_S *p_mbenc;
+    int				mbenc;
+    int				enc_len;
+    struct prt_ps_encoding_S	*p_mbenc;
 
     *pp_mbenc = NULL;
     /* Look for recognised encoding */
@@ -5178,12 +5186,12 @@
 
     static int
 prt_match_charset(p_charset, p_cmap, pp_mbchar)
-    char    *p_charset;
-    struct prt_ps_mbfont_S *p_cmap;
+    char		    *p_charset;
+    struct prt_ps_mbfont_S  *p_cmap;
     struct prt_ps_charset_S **pp_mbchar;
 {
-    int     mbchar;
-    int     char_len;
+    int			    mbchar;
+    int			    char_len;
     struct prt_ps_charset_S *p_mbchar;
 
     /* Look for recognised character set, using default if one is not given */
@@ -5226,7 +5234,7 @@
     char_u	*p_encoding;
     struct prt_ps_encoding_S *p_mbenc;
     struct prt_ps_encoding_S *p_mbenc_first;
-    struct prt_ps_charset_S *p_mbchar;
+    struct prt_ps_charset_S  *p_mbchar;
 #endif
 
 #if 0
@@ -5262,11 +5270,13 @@
     p_mbenc_first = NULL;
     p_mbchar = NULL;
     for (cmap = 0; cmap < NUM_ELEMENTS(prt_ps_mbfonts); cmap++)
-        if (prt_match_encoding(p_encoding, &prt_ps_mbfonts[cmap], &p_mbenc))
+        if (prt_match_encoding((char *)p_encoding, &prt_ps_mbfonts[cmap],
+								    &p_mbenc))
         {
             if (p_mbenc_first == NULL)
                 p_mbenc_first = p_mbenc;
-            if (prt_match_charset(p_pmcs, &prt_ps_mbfonts[cmap], &p_mbchar))
+            if (prt_match_charset((char *)p_pmcs, &prt_ps_mbfonts[cmap],
+								   &p_mbchar))
                 break;
         }
 
@@ -5343,8 +5353,8 @@
                 return FALSE;
         if (mbfont_opts[OPT_MBFONT_BOLDOBLIQUE].present)
             if (!prt_build_cid_fontname(PRT_PS_FONT_BOLDOBLIQUE,
-                                        mbfont_opts[OPT_MBFONT_BOLDOBLIQUE].string,
-                                        mbfont_opts[OPT_MBFONT_BOLDOBLIQUE].strlen))
+				   mbfont_opts[OPT_MBFONT_BOLDOBLIQUE].string,
+				  mbfont_opts[OPT_MBFONT_BOLDOBLIQUE].strlen))
                 return FALSE;
 
         /* Check if need to use Courier for ASCII code range, and if so pick up
@@ -5555,8 +5565,8 @@
 	EMSG2(_("E456: Can't open file \"%s\""), resource->filename);
 	return FALSE;
     }
-    prt_dsc_resources("BeginResource",
-                        prt_resource_types[resource->type], resource->title);
+    prt_dsc_resources("BeginResource", prt_resource_types[resource->type],
+						     (char *)resource->title);
 
     prt_dsc_textline("BeginDocument", (char *)resource->filename);
 
@@ -5602,7 +5612,7 @@
     double      bottom;
     struct prt_ps_resource_S res_prolog;
     struct prt_ps_resource_S res_encoding;
-    char_u      buffer[256];
+    char	buffer[256];
     char_u      *p_encoding;
 #ifdef FEAT_MBYTE
     struct prt_ps_resource_S res_cidfont;
@@ -5614,7 +5624,7 @@
      */
     prt_dsc_start();
     prt_dsc_textline("Title", (char *)psettings->jobname);
-    if (!get_user_name(buffer, 256))
+    if (!get_user_name((char_u *)buffer, 256))
         STRCPY(buffer, "Unknown");
     prt_dsc_textline("For", buffer);
     prt_dsc_textline("Creator", VIM_VERSION_LONG);
@@ -5757,7 +5767,7 @@
             if (!prt_find_resource(prt_ascii_encoding, &res_encoding))
             {
                 EMSG2(_("E456: Can't find PostScript resource file \"%s.ps\""),
-                      prt_ascii_encoding);
+							  prt_ascii_encoding);
                 return FALSE;
             }
             if (!prt_open_resource(&res_encoding))
@@ -5786,7 +5796,7 @@
         if (!prt_find_resource(prt_cmap, &res_cmap))
         {
             EMSG2(_("E456: Can't find PostScript resource file \"%s.ps\""),
-                  prt_cmap);
+								    prt_cmap);
             return FALSE;
         }
         if (!prt_open_resource(&res_cmap))
@@ -5911,7 +5921,7 @@
         /* When using Courier for ASCII range when printing multi-byte, need to
          * pick up ASCII encoding to use with it. */
         if (prt_use_courier)
-            p_encoding = prt_ascii_encoding;
+            p_encoding = (char_u *)prt_ascii_encoding;
 #endif
         prt_dsc_resources("IncludeResource", "font",
                           prt_ps_courier_font.ps_fontname[PRT_PS_FONT_ROMAN]);
@@ -6015,7 +6025,7 @@
 
     /* Write CTRL-D to close serial communication link if used.
      * NOTHING MUST BE WRITTEN AFTER THIS! */
-    prt_write_file(IF_EB("\004", "\067"));
+    prt_write_file((char_u *)IF_EB("\004", "\067"));
 
     if (!prt_file_error && psettings->outfile == NULL
 					&& !got_int && !psettings->user_abort)
@@ -6274,7 +6284,7 @@
          */
         do
         {
-           ch = prt_hexchar[(*p) >> 4];
+           ch = prt_hexchar[(unsigned)(*p) >> 4];
            ga_append(&prt_ps_buffer, ch);
            ch = prt_hexchar[(*p) & 0xf];
            ga_append(&prt_ps_buffer, ch);
diff --git a/src/gui_kde.cc b/src/gui_kde.cc
index 772e457..2be18b9 100644
--- a/src/gui_kde.cc
+++ b/src/gui_kde.cc
@@ -29,7 +29,7 @@
 #include <qmessagebox.h>
 #include <qiconset.h>
 #include <qtextcodec.h>
-#include "gui_kde_widget.h"
+#include "gui_kde_wid.h"
 
 extern "C" {
 #include "vim.h"
diff --git a/src/gui_kde_widget.cc b/src/gui_kde_wid.cc
similarity index 91%
rename from src/gui_kde_widget.cc
rename to src/gui_kde_wid.cc
index ae48abf..91ea10b 100644
--- a/src/gui_kde_widget.cc
+++ b/src/gui_kde_wid.cc
@@ -43,10 +43,11 @@
 #include <kmenubar.h>
 #include <ktoolbar.h>
 #include <kstandarddirs.h>
-#include "gui_kde_widget.h"
+#include "gui_kde_wid.h"
 #include <qxembed.h>
 
-extern "C" {
+extern "C"
+{
 #include "version.h"
 }
 
@@ -187,25 +188,19 @@
     ButtonState buttons = event->button();
 
     //Look at button states
-    if(buttons & QMouseEvent::LeftButton) {
-	button|=MOUSE_LEFT;
-    }
-    if(buttons & QMouseEvent::RightButton) {
-	button|=MOUSE_RIGHT;
-    }
-    if(buttons & QMouseEvent::MidButton) {
-	button|=MOUSE_MIDDLE;
-    }
+    if (buttons & QMouseEvent::LeftButton)
+	button |= MOUSE_LEFT;
+    if (buttons & QMouseEvent::RightButton)
+	button |= MOUSE_RIGHT;
+    if (buttons & QMouseEvent::MidButton)
+	button |= MOUSE_MIDDLE;
     //Look for keyboard modifiers
-    if(state & QMouseEvent::ShiftButton) {
-	modifiers|=MOUSE_SHIFT;
-    }
-    if(state & QMouseEvent::ControlButton){
-	modifiers|=MOUSE_CTRL;
-    }
-    if(state & QMouseEvent::AltButton){
-	modifiers|=MOUSE_ALT;
-    }
+    if (state & QMouseEvent::ShiftButton)
+	modifiers |= MOUSE_SHIFT;
+    if (state & QMouseEvent::ControlButton)
+	modifiers |= MOUSE_CTRL;
+    if (state & QMouseEvent::AltButton)
+	modifiers |= MOUSE_ALT;
     gui_send_mouse_event(button,event->x(),event->y(),FALSE,modifiers);
 #if QT_VERSION>=300
     QByteArray params;
@@ -254,11 +249,11 @@
 	button|=MOUSE_4;
     else button|=MOUSE_5;
 
-    if(state & ShiftButton)
+    if (state & ShiftButton)
 	modifiers|=MOUSE_SHIFT;
-    if(state & ControlButton)
+    if (state & ControlButton)
 	modifiers|=MOUSE_CTRL;
-    if(state & AltButton)
+    if (state & AltButton)
 	modifiers|=MOUSE_ALT;
 
     gui_send_mouse_event(button,event->x(),event->y(),FALSE,modifiers);
@@ -279,19 +274,19 @@
     int button=0;
 
     //Look at button states
-    if(buttons & LeftButton)
+    if (buttons & LeftButton)
 	button|=MOUSE_LEFT;
-    if(buttons & RightButton)
+    if (buttons & RightButton)
 	button|=MOUSE_RIGHT;
-    if(buttons & MidButton)
+    if (buttons & MidButton)
 	button|=MOUSE_MIDDLE;
 
     //Look for keyboard modifiers
-    if(state & ShiftButton)
+    if (state & ShiftButton)
 	modifiers|=MOUSE_SHIFT;
-    if(state & ControlButton)
+    if (state & ControlButton)
 	modifiers|=MOUSE_CTRL;
-    if(state & AltButton)
+    if (state & AltButton)
 	modifiers|=MOUSE_ALT;
 
     gui_send_mouse_event(button,event->x(),event->y(),TRUE,modifiers);
@@ -313,15 +308,15 @@
 
     //Look at button states
     //warning: we use state here, this is important !
-    if(state & QMouseEvent::LeftButton || state & QMouseEvent::RightButton || state & QMouseEvent::MidButton)
+    if (state & QMouseEvent::LeftButton || state & QMouseEvent::RightButton || state & QMouseEvent::MidButton)
 	button|=MOUSE_DRAG;
 
     //Look for keyboard modifiers
-    if(state & ShiftButton)
+    if (state & ShiftButton)
 	modifiers|=MOUSE_SHIFT;
-    if(state & ControlButton)
+    if (state & ControlButton)
 	modifiers|=MOUSE_CTRL;
-    if(state & AltButton)
+    if (state & AltButton)
 	modifiers|=MOUSE_ALT;
     if (button!=MOUSE_DRAG)
 	gui_mouse_moved(event->x(),event->y());
@@ -335,11 +330,11 @@
     int modifiers=0;
 
     //Look for keyboard modifiers
-    if(state & ShiftButton)
+    if (state & ShiftButton)
 	modifiers|=MOUSE_SHIFT;
-    if(state & ControlButton)
+    if (state & ControlButton)
 	modifiers|=MOUSE_CTRL;
-    if(state & AltButton)
+    if (state & AltButton)
 	modifiers|=MOUSE_ALT;
 
     gui_send_mouse_event(MOUSE_RELEASE,event->x(),event->y(),FALSE,modifiers);
@@ -454,21 +449,25 @@
 
     /* Count how many items there may be and normalize delimiters. */
 
-    if (QUriDrag::decode(e, urls)) {
+    if (QUriDrag::decode(e, urls))
+    {
 	n = urls.count();
         fnames = (char_u **)lalloc((n+1) * sizeof(char_u *), TRUE);
 	nfiles = 0;
 #if QT_VERSION>=300
 	QPtrListIterator<char> it(urls);
-	for( ; it.current(); ++it ) {
+	for (; it.current(); ++it )
+	{
 	    KURL u(*it);
 #else
-	    for (i=0;i<urls.count();++i) {
+	    for (i=0;i<urls.count();++i)
+	    {
 		KURL u(urls.at(i));
 #endif
 		if ( !u.isLocalFile() )
 		    url = TRUE;
-		else {
+		else
+		{
 		    fnames[nfiles] = (char_u *)strdup((const char *)u.path());
 		    ++nfiles;
 		}
@@ -488,7 +487,9 @@
 			    redo_dirs = TRUE;
 			}
 		    }
-		} else {
+		}
+		else
+		{
 		    /* Ignore any directories */
 		    for (i = 0; i < nfiles; ++i)
 		    {
@@ -505,7 +506,9 @@
 		    /* Shift held down, change to first file's directory */
 		    if (fnames[0] != NULL && vim_chdirfile(fnames[0]) == OK)
 			redo_dirs = TRUE;
-		} else {
+		}
+		else
+		{
 		    char_u	dirname[MAXPATHL];
 		    char_u	*s;
 		    if (mch_dirname(dirname, MAXPATHL) == OK)
@@ -561,7 +564,8 @@
 
     // ignore certain keys
     if (key == Qt::Key_Shift || key == Qt::Key_Alt || key == Qt::Key_Control || key == Qt::Key_Meta
-	    || key == Qt::Key_CapsLock || key == Qt::Key_NumLock || key == Qt::Key_ScrollLock ) {
+	    || key == Qt::Key_CapsLock || key == Qt::Key_NumLock || key == Qt::Key_ScrollLock )
+    {
 	e->ignore();
 	return;
     }
@@ -591,13 +595,13 @@
 
 
     // change shift-tab (backtab) into S_TAB
-    if ( key == Qt::Key_BackTab && state & Qt::ShiftButton) {
+    if ( key == Qt::Key_BackTab && state & Qt::ShiftButton)
 	key = Qt::Key_Tab;
-    }
 
     // Change C-@ and C-2 in NUL ? Gtk does this
     if ( (key == Qt::Key_2 || key == Qt::Key_At)
-	    && state & Qt::ControlButton ) {
+	    && state & Qt::ControlButton )
+    {
 	string[0] = NUL;
 	len = 1;
     }
@@ -639,7 +643,8 @@
     if (len == 0 || key == Qt::Key_BackSpace || key == Qt::Key_Delete)
     {
 	while (special_keys[i].qtkey != 0 && special_keys[i].qtkey != key ) i++;
-	if (special_keys[i].qtkey != 0) {
+	if (special_keys[i].qtkey != 0)
+	{
 		string[0] = CSI;
 		string[1] = special_keys[i].code0;
 		string[2] = special_keys[i].code1;
@@ -648,7 +653,8 @@
 /*
 	for (i = 0; special_keys[i].qtkey != 0 ; i++)
 	{
-	    if (special_keys[i].qtkey == key ) {
+	    if (special_keys[i].qtkey == key )
+	    {
 		string[0] = CSI;
 		string[1] = special_keys[i].code0;
 		string[2] = special_keys[i].code1;
@@ -658,7 +664,8 @@
 	}*/
     }
 
-    if (len == 0)   {
+    if (len == 0)
+    {
 	//no need to dump that, that's a QT problem, we can't do anything
 	//dbf("Unrecognised Key : %X %s", key, e->text().latin1());
 	e->ignore();
@@ -669,7 +676,8 @@
     /* Special keys (and a few others) may have modifiers */
     if (len == -3 || key == Qt::Key_Space || key == Qt::Key_Tab ||
 	    key == Qt::Key_Return || key == Qt::Key_Enter ||
-	    key == Qt::Key_Escape) {
+	    key == Qt::Key_Escape)
+    {
 
 	modifiers = 0;
 	if (state & Qt::ShiftButton) modifiers |= MOD_MASK_SHIFT;
@@ -689,18 +697,22 @@
 	key = simplify_key(key, &modifiers);
 	if (key == CSI) key=K_CSI;
 
-	if (IS_SPECIAL(key)) {
+	if (IS_SPECIAL(key))
+	{
 	    string[0] = CSI;
 	    string[1] = K_SECOND(key);
 	    string[2] = K_THIRD(key);
 	    len = 3;
-	} else {
+	}
+	else
+	{
 	    string[0] = key;
 	    len = 1;
 	}
 
 
-	if (modifiers!=0) {
+	if (modifiers!=0)
+	{
 	    uchar string2[10];
 	    string2[0] = CSI;
 	    string2[1] = KS_MODIFIER;
@@ -718,9 +730,9 @@
     }
 
     add_to_input_buf(string, len);
-    if (p_mh) {
+    if (p_mh)
 	gui_mch_mousehide(TRUE);
-    }
+
     //DCOP Embedding stuff
     //if we are here then the user has type something in the window, thus we can easily imagine that :
     // 1 - text has changed (emit textChanged())
@@ -744,21 +756,24 @@
 #ifdef FEAT_CLIENTSERVER
 void VimWidget::serverActivate(WId id) //{{{
 {
-    if (serverName == NULL && serverDelayedStartName != NULL) {
+    if (serverName == NULL && serverDelayedStartName != NULL)
+    {
 	commWindow = id;
 	(void)serverRegisterName(qt_xdisplay(), serverDelayedStartName);
-    } else {
-	serverChangeRegisteredWindow( qt_xdisplay(), id );
     }
+    else
+	serverChangeRegisteredWindow( qt_xdisplay(), id);
 }//}}}
 #endif
 
 #ifdef FEAT_XIM
-void VimWidget::imStartEvent(QIMEvent *e) {
+void VimWidget::imStartEvent(QIMEvent *e)
+{
     e->accept();
 }
 
-void VimWidget::imEndEvent(QIMEvent *e) {
+void VimWidget::imEndEvent(QIMEvent *e)
+{
     uchar string[256];
 
     QCString unistring = vmw->codec->fromUnicode(e->text());
@@ -771,7 +786,8 @@
     e->accept();
 }
 
-void VimWidget::imComposeEvent(QIMEvent *e) {
+void VimWidget::imComposeEvent(QIMEvent *e)
+{
     //i should do something here, displaying the text somewhere ... (status area ?)
     e->accept();
 }
@@ -851,7 +867,8 @@
     if (blink_timer.isActive()) blink_timer.stop();
 
     /* Only switch blinking on if none of the times is zero */
-    if (blink_wait_time && blink_on_time && blink_off_time && gui.in_focus) {
+    if (blink_wait_time && blink_on_time && blink_off_time && gui.in_focus)
+    {
 	blink_state = BLINK_ON;
 	gui_update_cursor(TRUE, FALSE);
 	// The first blink appears after wait_time
@@ -861,12 +878,15 @@
 
 void VimWidget::blink_cursor()//{{{
 {
-    if (blink_state == BLINK_ON) {
+    if (blink_state == BLINK_ON)
+    {
 	// set cursor off
 	gui_undraw_cursor();
 	blink_state = BLINK_OFF;
 	blink_timer.start( blink_off_time, true);
-    } else {
+    }
+    else
+    {
 	// set cursor on
 	gui_update_cursor(TRUE, FALSE);
 	blink_state = BLINK_ON;
@@ -926,7 +946,8 @@
 #ifdef FEAT_CLIENTSERVER
     oldFilter = qt_set_x11_event_filter( kvim_x11_event_filter );
 #endif
-    if (echo_wid_arg== 1) {
+    if (echo_wid_arg== 1)
+    {
 	fprintf(stderr, "WID: %ld\n", (long)winId());
 	fflush(stderr);
     }
@@ -988,26 +1009,23 @@
 
 
 void VimMainWindow::clipboard_selection_update(){//{{{
-    if(kapp->clipboard()->ownsSelection()) {
+    if (kapp->clipboard()->ownsSelection())
 	clip_own_selection(&clip_star);
-    } else {
+    else
 	clip_lose_selection(&clip_star);
-    }
 }//}}}
 
 void VimMainWindow::clipboard_data_update(){//{{{
 #if QT_VERSION>=300
-    if (kapp->clipboard()->ownsClipboard()) {
+    if (kapp->clipboard()->ownsClipboard())
 	clip_own_selection(&clip_plus);
-    } else {
+    else
 	clip_lose_selection(&clip_plus);
-    }
 #else
-    if (kapp->clipboard()->ownsSelection()) {
+    if (kapp->clipboard()->ownsSelection())
 	clip_own_selection(&clip_star);
-    } else {
+    else
 	clip_lose_selection(&clip_star);
-    }
 #endif
 }//}}}
 
@@ -1182,17 +1200,20 @@
     about->show();
 }//}}}
 
-void VimMainWindow::showTipOfTheDay() {
+void VimMainWindow::showTipOfTheDay()
+{
 #if QT_VERSION>=300
     KTipDialog::showTip (vmw,QString::null,true);
 #endif
 }
 
-void VimMainWindow::buffersToolbar() {
+void VimMainWindow::buffersToolbar()
+{
 
 }
 
-void VimMainWindow::showBugReport() {
+void VimMainWindow::showBugReport()
+{
     KBugReport *bug= new KBugReport(this,true);
     bug->show();
 }
@@ -1217,7 +1238,8 @@
      * Create Icon
      */
     char ** icon_data;
-    switch (type) {
+    switch (type)
+    {
 	case VIM_GENERIC:
 	    icon_data = generic_xpm;
 	    break;
@@ -1255,25 +1277,29 @@
     hly1->addWidget( icon );
     hly1->addWidget( text );
     QHBoxLayout * hly3 = new QHBoxLayout ( vly , 5);
-    if (textfield!=NULL) {
+    if (textfield!=NULL)
+    {
 	entry = new QLineEdit((const char *)textfield,this);
 	entry->setText((const char *)textfield);
 	hly3->addWidget( entry );
 	ret=textfield;
-    } else entry=NULL;
+    }
+    else
+	entry=NULL;
 
     QHBoxLayout * hly2 = new QHBoxLayout( vly, 15);
     QString s;
     QPushButton * pushButton = 0L;
-    for( int i=0; i<butNb; i++) {
+    for (int i=0; i<butNb; i++)
+    {
 	s = buttonText[i];
 	pushButton = new QPushButton(s, this );
-	if (s.find('&') != -1) {
-	    pushButton->setAccel( s.at(s.find('&')+1).latin1() );
-	}
+	if (s.find('&') != -1)
+	    pushButton->setAccel(s.at(s.find('&')+1).latin1());
 
 	hly2->addWidget( pushButton );
-	if (i == def_but-1) {
+	if (i == def_but-1)
+	{
 	    pushButton->setDefault( true );
 	    pushButton->setAutoDefault( true );
 	    setResult( i+1 );
@@ -1288,12 +1314,16 @@
     vly->activate();
 }//}}}
 
-void VimDialog::done(int r) {
-    if (entry!=NULL) {
-        if (r) {
+void VimDialog::done(int r)
+{
+    if (entry!=NULL)
+    {
+        if (r)
+	{
 	   QCString unistring=vmw->codec->fromUnicode(entry->text());
 	   STRCPY(ret,(const char*)unistring);
-	} else
+	}
+	else
 	    *ret=NUL;
     }
     QDialog::done(r);
@@ -1311,7 +1341,8 @@
 
 void SBPool::create(GuiScrollbar * sb, int orient)//{{{
 {
-    switch(orient) {
+    switch(orient)
+    {
 	case SBAR_HORIZ:
 	    sb->w = new QScrollBar(QScrollBar::Horizontal, vmw);
 	    break;
@@ -1349,9 +1380,8 @@
     if (e->xproperty.type == PropertyNotify
 	    && e->xproperty.atom == commProperty
 	    && e->xproperty.window == commWindow
-	    && e->xproperty.state == PropertyNewValue ) {
+	    && e->xproperty.state == PropertyNewValue)
 	serverEventProc(qt_xdisplay(), e);
-    }
 
     if (oldFilter) return oldFilter( e );
     return FALSE;
@@ -1381,29 +1411,31 @@
    QStringList l(QStringList::split(',', descrip));
 
     int count = l.count();
-    if (count != 10 && count != 9) {
+    if (count != 10 && count != 9)
         return FALSE;
-    }
 
     f->setFamily(l[0]);
     f->setPointSize(l[1].toInt());
-    if ( count == 9 ) {
-        f->setStyleHint((QFont::StyleHint) l[2].toInt());
-        f->setWeight(l[3].toInt());
-        f->setItalic(l[4].toInt());
-        f->setUnderline(l[5].toInt());
-        f->setStrikeOut(l[6].toInt());
-        f->setFixedPitch(l[7].toInt());
-        f->setRawMode(l[8].toInt());
-    } else {
-        f->setPixelSize(l[2].toInt());
-        f->setStyleHint((QFont::StyleHint) l[3].toInt());
-        f->setWeight(l[4].toInt());
-        f->setItalic(l[5].toInt());
-        f->setUnderline(l[6].toInt());
-        f->setStrikeOut(l[7].toInt());
-        f->setFixedPitch(l[8].toInt());
-        f->setRawMode(l[9].toInt());
+    if ( count == 9 )
+    {
+	f->setStyleHint((QFont::StyleHint) l[2].toInt());
+	f->setWeight(l[3].toInt());
+	f->setItalic(l[4].toInt());
+	f->setUnderline(l[5].toInt());
+	f->setStrikeOut(l[6].toInt());
+	f->setFixedPitch(l[7].toInt());
+	f->setRawMode(l[8].toInt());
+    }
+    else
+    {
+	f->setPixelSize(l[2].toInt());
+	f->setStyleHint((QFont::StyleHint) l[3].toInt());
+	f->setWeight(l[4].toInt());
+	f->setItalic(l[5].toInt());
+	f->setUnderline(l[6].toInt());
+	f->setStrikeOut(l[7].toInt());
+	f->setFixedPitch(l[8].toInt());
+	f->setRawMode(l[9].toInt());
     }
     return TRUE;
 }
diff --git a/src/gui_kde_widget.h b/src/gui_kde_wid.h
similarity index 99%
rename from src/gui_kde_widget.h
rename to src/gui_kde_wid.h
index d845446..39102da 100644
--- a/src/gui_kde_widget.h
+++ b/src/gui_kde_wid.h
@@ -96,14 +96,14 @@
 	void disable_mzscheme_threads();
 #endif
 	void flash();
-	
+
 	/** DCOP */
 	void execNormal(QString command);
 	void execInsert(QString command);
 	void execRaw(QString command);
 	void execCmd(QString command);
 	QString eval(QString expr);
-	
+
 	bool wait_done;
 	BlinkState blink_state;
 	QPainter *painter;
@@ -134,7 +134,7 @@
 
 	/* wait for input */
 	QTimer	wait_timer;
-	
+
 #ifdef FEAT_MZSCHEME
 	int	mzscheme_timer_id;
 #endif
diff --git a/src/gui_kde_x11.cc b/src/gui_kde_x11.cc
index c0aec89..6517cd2 100644
--- a/src/gui_kde_x11.cc
+++ b/src/gui_kde_x11.cc
@@ -45,7 +45,7 @@
 #include <qfont.h>
 
 
-#include "gui_kde_widget.h"
+#include "gui_kde_wid.h"
 
 
 extern "C" {
diff --git a/src/if_python.c b/src/if_python.c
index 21c4365..8f4fdfd 100644
--- a/src/if_python.c
+++ b/src/if_python.c
@@ -2731,6 +2731,7 @@
     char *save;
     int len;
     int i;
+    char *p;
 
     if (obj == NULL || !PyString_Check(obj))
     {
@@ -2741,14 +2742,22 @@
     str = PyString_AsString(obj);
     len = PyString_Size(obj);
 
-    /* Error checking: String must not contain newlines, as we
+    /*
+     * Error checking: String must not contain newlines, as we
      * are replacing a single line, and we must replace it with
      * a single line.
+     * A trailing newline is removed, so that append(f.readlines()) works.
      */
-    if (memchr(str, '\n', len))
+    p = memchr(str, '\n', len);
+    if (p != NULL)
     {
-	PyErr_SetVim(_("string cannot contain newlines"));
-	return NULL;
+	if (p == str + len - 1)
+	    --len;
+	else
+	{
+	    PyErr_SetVim(_("string cannot contain newlines"));
+	    return NULL;
+	}
     }
 
     /* Create a copy of the string, with internal nulls replaced by
diff --git a/src/main.aap b/src/main.aap
index 8c243ca..3b78579 100644
--- a/src/main.aap
+++ b/src/main.aap
@@ -100,9 +100,9 @@
 	GUI_TESTTARGET	= gui
     KDE
         GUI_SRC		= gui.c pty.c gui_kde.cc gui_kde_x11.cc
-                            gui_kde_widget_moc.cc
+                            gui_kde_wid_moc.cc
                             kvim_iface_skel.cc
-        GUI_OBJ		= $BDIR/gui_kde_widget.o
+        GUI_OBJ		= $BDIR/gui_kde_wid.o
         GUI_DEFS	= -DFEAT_GUI_KDE $NARROW_PROTO
         GUI_IPATH	= $GUI_INC_LOC
         GUI_LIBS_DIR	= $GUI_LIB_LOC
@@ -218,7 +218,7 @@
 testclean {virtual}:
     :del {force} testdir/*.out testdir/test.log
 
-CLEANFILES += gui_kde_widget_moc.cc kvim_iface_skel.cc *.kidl
+CLEANFILES += gui_kde_wid_moc.cc kvim_iface_skel.cc *.kidl
 
 # When no fetch target exists we are not a child of the ../main.aap recipe,
 # Use ../main.aap to do the fetching.
@@ -356,18 +356,18 @@
 	:sys $PERL $PERLLIB/ExtUtils/xsubpp -prototypes -typemap \
 	    $PERLLIB/ExtUtils/typemap if_perl.xs >> $target
 
-$BDIR/gui_kde_widget.o: gui_kde_widget.cc
-        :sys $MOC -o gui_kde_widget_moc.cc gui_kde_widget.h
+$BDIR/gui_kde_wid.o: gui_kde_wid.cc
+        :sys $MOC -o gui_kde_wid_moc.cc gui_kde_wid.h
         @try:
             :sys $KDE_PREFIX/bin/dcopidl kvim_iface.h > kvim_iface.kidl
         @except:
             :del {f} kvim_iface.kidl
         :sys $KDE_PREFIX/bin/dcopidl2cpp --c++-suffix cc --no-stub kvim_iface.kidl
-        :do compile gui_kde_widget.cc
+        :do compile gui_kde_wid.cc
 
-gui_kde_widget_moc.cc: $BDIR/gui_kde_widget.o
+gui_kde_wid_moc.cc: $BDIR/gui_kde_wid.o
 
-kvim_iface_skel.cc: $BDIR/gui_kde_widget.o
+kvim_iface_skel.cc: $BDIR/gui_kde_wid.o
 
 
 auto/osdef.h: auto/config.h osdef.sh osdef1.h.in osdef2.h.in
diff --git a/src/memline.c b/src/memline.c
index 1767053..67d233b 100644
--- a/src/memline.c
+++ b/src/memline.c
@@ -4338,8 +4338,17 @@
 	curline = buf->b_ml.ml_locked_high + 1;
     }
 
-    if (ffdos)
-	size += line - 1;
+    if (line != 0)
+    {
+	/* Count extra CR characters. */
+	if (ffdos)
+	    size += line - 1;
+
+	/* Don't count the last line break if 'bin' and 'noeol'. */
+	if (buf->b_p_bin && !buf->b_p_eol)
+	    size -= ffdos + 1;
+    }
+
     return size;
 }
 
diff --git a/src/misc2.c b/src/misc2.c
index dbc5166..82b8887 100644
--- a/src/misc2.c
+++ b/src/misc2.c
@@ -3606,8 +3606,7 @@
     }
 
     /* Store information on starting dir now if path is relative.
-     * If path is absolute, we do that later.
-     */
+     * If path is absolute, we do that later.  */
     if (path[0] == '.'
 	    && (vim_ispathsep(path[1]) || path[1] == NUL)
 	    && (!tagfile || vim_strchr(p_cpo, CPO_DOTTAG) == NULL)
@@ -3886,7 +3885,7 @@
  * Return a pointer to an allocated file name or NULL if nothing found.
  * To get all matching files call this function until you get NULL.
  *
- * If the passed search_context is NULL, it the returns NULL.
+ * If the passed search_context is NULL, NULL is returned.
  *
  * The search algorithm is depth first. To change this replace the
  * stack with a list (don't forget to leave partly searched directories on the
diff --git a/src/ops.c b/src/ops.c
index 2e428ae..128984e 100644
--- a/src/ops.c
+++ b/src/ops.c
@@ -1129,7 +1129,7 @@
 	new_last_cmdline = NULL;
 	/* Escape all control characters with a CTRL-V */
 	p = vim_strsave_escaped_ext(last_cmdline,
-		"\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037", Ctrl_V, FALSE);
+		(char_u *)"\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037", Ctrl_V, FALSE);
 	if (p != NULL)
 	    retval = put_in_typebuf(p, TRUE);
 	vim_free(p);
diff --git a/src/os_mac.h b/src/os_mac.h
index 940e267..5ef7310 100644
--- a/src/os_mac.h
+++ b/src/os_mac.h
@@ -119,8 +119,8 @@
  *       ~/Library/Vim or ~/Library/Preferences/org.vim.vim/ ? (Dany)
  */
 /* When compiled under MacOS X (including CARBON version)
- * we use the Unix File path style */
-#if defined(TARGET_API_MAC_OSX) && TARGET_API_MAC_OSX
+ * we use the Unix File path style.  Also when UNIX is defined. */
+#if defined(UNIX) || (defined(TARGET_API_MAC_OSX) && TARGET_API_MAC_OSX)
 # undef COLON_AS_PATHSEP
 # define USE_UNIXFILENAME
 #else
@@ -140,14 +140,16 @@
 #define CASE_INSENSITIVE_FILENAME   /* ignore case when comparing file names */
 #define SPACE_IN_FILENAME
 #define BREAKCHECK_SKIP	   32	    /* call mch_breakcheck() each time, it's
-				       quite fast. Did I forgot to update the comment */
+				       quite fast. Did I forgot to update the
+				       comment */
 
 
-#undef  USE_FNAME_CASE	    /* So that :e os_Mac.c, :w, save back the file as os_mac.c */
+#undef  USE_FNAME_CASE		/* So that :e os_Mac.c, :w, save back the file
+				   as os_mac.c */
 #define BINARY_FILE_IO
 #define EOL_DEFAULT EOL_MAC
-#ifndef MACOS_X_UNIX	    /* I hope that switching these two lines */
-# define USE_CR		    /* does what I want -- BNF */
+#ifndef MACOS_X_UNIX		/* I hope that switching these two lines */
+# define USE_CR			/* does what I want -- BNF */
 # define NO_CONSOLE		/* don't include console mode */
 #endif
 #define HAVE_AVAIL_MEM
diff --git a/src/os_mac_conv.c b/src/os_mac_conv.c
index 3dfacfe..3f64e3d 100644
--- a/src/os_mac_conv.c
+++ b/src/os_mac_conv.c
@@ -16,6 +16,7 @@
 #define NO_X11_INCLUDES
 #include "vim.h"
 
+#ifdef FEAT_MBYTE
 extern char_u *mac_string_convert __ARGS((char_u *ptr, int len, int *lenp, int fail_on_error, int from, int to, int *unconvlenp));
 extern int macroman2enc __ARGS((char_u *ptr, long *sizep, long real_size));
 extern int enc2macroman __ARGS((char_u *from, size_t fromlen, char_u *to, int *tolenp, int maxtolen, char_u *rest, int *restlenp));
@@ -228,3 +229,5 @@
     *tolenp = l;
     return OK;
 }
+
+#endif /* FEAT_MBYTE */
diff --git a/src/po/ru.cp1251.po b/src/po/ru.cp1251.po
index 85b1d68..7ae34cb 100644
--- a/src/po/ru.cp1251.po
+++ b/src/po/ru.cp1251.po
@@ -1239,7 +1239,7 @@
 #: ex_docmd.c:4584
 #, c-format
 msgid "E173: %ld more files to edit"
-msgstr "E173: Åñòü íåîòðåäàêòèðîâàííûå ôàéëû (%d)."
+msgstr "E173: Åñòü íåîòðåäàêòèðîâàííûå ôàéëû (%ld)."
 
 #: ex_docmd.c:4679
 msgid "E174: Command already exists: add ! to replace it"
@@ -2446,7 +2446,7 @@
 #: if_cscope.c:589
 #, c-format
 msgid "E262: error reading cscope connection %ld"
-msgstr "E262: îøèáêà ïîëó÷åíèÿ èíôîðìàöèè îò ñîåäèíåíèÿ cscope %d"
+msgstr "E262: îøèáêà ïîëó÷åíèÿ èíôîðìàöèè îò ñîåäèíåíèÿ cscope %ld"
 
 #: if_cscope.c:694
 msgid "E561: unknown cscope search type"
@@ -2524,7 +2524,7 @@
 #: if_cscope.c:1458
 #, c-format
 msgid "cscope connection %s closed"
-msgstr "ñîåäèíåíèå ñ cscope çàêðûòî"
+msgstr "ñîåäèíåíèå ñ cscope %s çàêðûòî"
 
 #. should not reach here
 #: if_cscope.c:1598
diff --git a/src/po/ru.po b/src/po/ru.po
index 7bd9d72..1d1c5d5 100644
--- a/src/po/ru.po
+++ b/src/po/ru.po
@@ -1239,7 +1239,7 @@
 #: ex_docmd.c:4584
 #, c-format
 msgid "E173: %ld more files to edit"
-msgstr "E173: Есть неотредактированные файлы (%d)."
+msgstr "E173: Есть неотредактированные файлы (%ld)."
 
 #: ex_docmd.c:4679
 msgid "E174: Command already exists: add ! to replace it"
@@ -2446,7 +2446,7 @@
 #: if_cscope.c:589
 #, c-format
 msgid "E262: error reading cscope connection %ld"
-msgstr "E262: ошибка получения информации от соединения cscope %d"
+msgstr "E262: ошибка получения информации от соединения cscope %ld"
 
 #: if_cscope.c:694
 msgid "E561: unknown cscope search type"
@@ -2524,7 +2524,7 @@
 #: if_cscope.c:1458
 #, c-format
 msgid "cscope connection %s closed"
-msgstr "соединение с cscope закрыто"
+msgstr "соединение с cscope %s закрыто"
 
 #. should not reach here
 #: if_cscope.c:1598
diff --git a/src/search.c b/src/search.c
index 227b254..4513ea1 100644
--- a/src/search.c
+++ b/src/search.c
@@ -3760,10 +3760,11 @@
  * Find quote under the cursor, cursor at end.
  * Returns TRUE if found, else FALSE.
  */
+/*ARGSUSED*/
     int
 current_quote(oap, count, include, quotechar)
     oparg_T	*oap;
-    long	count;
+    long	count;		/* not used */
     int		include;	/* TRUE == include quote char */
     int		quotechar;	/* Quote character */
 {