updated for version 7.0061
diff --git a/src/Makefile b/src/Makefile
index 9f3c4fc..a15398a 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -1278,9 +1278,15 @@
 DEST_SCRIPT = $(DESTDIR)$(SCRIPTLOC)
 DEST_PRINT = $(DESTDIR)$(PRINTSUBLOC)
 DEST_MAN_TOP = $(DESTDIR)$(MANDIR)
+
+# We assume that the ".../man/xx/man1/" directory is for latin1 manual pages.
+# Some systems use UTF-8, but these should find the ".../man/xx.UTF-8/man1/"
+# directory first.
 DEST_MAN = $(DEST_MAN_TOP)$(MAN1DIR)
 DEST_MAN_IT = $(DEST_MAN_TOP)/it$(MAN1DIR)
-DEST_MAN_RU = $(DEST_MAN_TOP)/ru$(MAN1DIR)
+DEST_MAN_IT_U = $(DEST_MAN_TOP)/it.UTF-8$(MAN1DIR)
+DEST_MAN_RU = $(DEST_MAN_TOP)/ru.KOI8-R$(MAN1DIR)
+DEST_MAN_RU_U = $(DEST_MAN_TOP)/ru.UTF-8$(MAN1DIR)
 
 #	     BASIC_SRC: files that are always used
 #	       GUI_SRC: extra GUI files for current configuration
@@ -1798,7 +1804,9 @@
 	chmod $(BINMOD) $(DEST_BIN)/xxd$(EXEEXT)
 	-$(SHELL) ./installman.sh xxd $(DEST_MAN) "" $(INSTALLMANARGS)
 	-$(SHELL) ./installman.sh xxd $(DEST_MAN_IT) "-it" $(INSTALLMANARGS)
+	-$(SHELL) ./installman.sh xxd $(DEST_MAN_IT_U) "-it.UTF-8" $(INSTALLMANARGS)
 	-$(SHELL) ./installman.sh xxd $(DEST_MAN_RU) "-ru" $(INSTALLMANARGS)
+	-$(SHELL) ./installman.sh xxd $(DEST_MAN_RU_U) "-ru.UTF-8" $(INSTALLMANARGS)
 # install the runtime tools
 	$(INSTALL_DATA_R) $(TOOLSSOURCE)/* $(DEST_TOOLS)
 # When using CVS some CVS directories might have been copied.
@@ -1817,11 +1825,17 @@
 # install the language specific files, if they were unpacked
 install-languages: languages $(DEST_LANG) $(DEST_KMAP)
 	-$(SHELL) ./installman.sh install $(DEST_MAN_IT) "-it" $(INSTALLMANARGS)
+	-$(SHELL) ./installman.sh install $(DEST_MAN_IT_U) "-it.UTF-8" $(INSTALLMANARGS)
 	-$(SHELL) ./installman.sh install $(DEST_MAN_RU) "-ru" $(INSTALLMANARGS)
+	-$(SHELL) ./installman.sh install $(DEST_MAN_RU_U) "-ru.UTF-8" $(INSTALLMANARGS)
 	-$(SHELL) ./installml.sh install "$(GUI_MAN_TARGETS)" \
 		$(DEST_MAN_IT) $(INSTALLMLARGS)
 	-$(SHELL) ./installml.sh install "$(GUI_MAN_TARGETS)" \
+		$(DEST_MAN_IT_U) $(INSTALLMLARGS)
+	-$(SHELL) ./installml.sh install "$(GUI_MAN_TARGETS)" \
 		$(DEST_MAN_RU) $(INSTALLMLARGS)
+	-$(SHELL) ./installml.sh install "$(GUI_MAN_TARGETS)" \
+		$(DEST_MAN_RU_U) $(INSTALLMLARGS)
 	if test -n "$(MAKEMO)" -a -f $(PODIR)/Makefile; then \
 	   cd $(PODIR); $(MAKE) prefix=$(DESTDIR)$(prefix) LOCALEDIR=$(DEST_LANG) \
 	   INSTALL_DATA=$(INSTALL_DATA) FILEMOD=$(FILEMOD) install; \
@@ -1967,15 +1981,23 @@
 # Note: the "rmdir" will fail if any files were added after "make install"
 uninstall_runtime:
 	-$(SHELL) ./installman.sh uninstall $(DEST_MAN) "" $(INSTALLMANARGS)
-	-$(SHELL) ./installman.sh uninstall $(DEST_MAN_IT) "-it" $(INSTALLMANARGS)
-	-$(SHELL) ./installman.sh uninstall $(DEST_MAN_RU) "-ru" $(INSTALLMANARGS)
+	-$(SHELL) ./installman.sh uninstall $(DEST_MAN_IT) "" $(INSTALLMANARGS)
+	-$(SHELL) ./installman.sh uninstall $(DEST_MAN_IT_U) "" $(INSTALLMANARGS)
+	-$(SHELL) ./installman.sh uninstall $(DEST_MAN_RU) "" $(INSTALLMANARGS)
+	-$(SHELL) ./installman.sh uninstall $(DEST_MAN_RU_U) "" $(INSTALLMANARGS)
 	-$(SHELL) ./installml.sh uninstall "$(GUI_MAN_TARGETS)" \
 		$(DEST_MAN) $(INSTALLMLARGS)
 	-$(SHELL) ./installml.sh uninstall "$(GUI_MAN_TARGETS)" \
 		$(DEST_MAN_IT) $(INSTALLMLARGS)
 	-$(SHELL) ./installml.sh uninstall "$(GUI_MAN_TARGETS)" \
+		$(DEST_MAN_IT_U) $(INSTALLMLARGS)
+	-$(SHELL) ./installml.sh uninstall "$(GUI_MAN_TARGETS)" \
 		$(DEST_MAN_RU) $(INSTALLMLARGS)
-	-rm -f $(DEST_MAN)/xxd.1 $(DEST_MAN_IT)/xxd.1 $(DEST_MAN_RU)/xxd.1
+	-$(SHELL) ./installml.sh uninstall "$(GUI_MAN_TARGETS)" \
+		$(DEST_MAN_RU_U) $(INSTALLMLARGS)
+	-rm -f $(DEST_MAN)/xxd.1
+	-rm -f $(DEST_MAN_IT)/xxd.1 $(DEST_MAN_IT_U)/xxd.1
+	-rm -f $(DEST_MAN_RU)/xxd.1 $(DEST_MAN_RU_U)/xxd.1
 	-rm -f $(DEST_HELP)/*.txt $(DEST_HELP)/tags $(DEST_HELP)/*.pl
 	-rm -f $(DEST_HELP)/*.??x $(DEST_HELP)/tags-??
 	-rm -f $(SYS_MENU_FILE) $(SYS_SYNMENU_FILE) $(SYS_DELMENU_FILE)
@@ -2423,6 +2445,9 @@
 gui_bundle: $(APPDIR) bundle-dir bundle-executable bundle-info bundle-resource \
 	bundle-language
 
+$(APPDIR):
+	mkdir -p $@
+
 bundle-dir: $(APPDIR)/Contents $(VIMTARGET)
 	-@srcdir=`pwd`; cd $(HELPSOURCE); $(MAKE) VIMEXE=$$srcdir/$(VIMTARGET) vimtags
 	cp -R ../runtime $(APPDIR)
diff --git a/src/fileio.c b/src/fileio.c
index 4e5104a..a5e888a 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -3701,7 +3701,7 @@
     while ((fd = mch_open((char *)wfname, O_WRONLY | O_EXTRA | (append
 			? (forceit ? (O_APPEND | O_CREAT) : O_APPEND)
 			: (O_CREAT | O_TRUNC))
-			, perm & 0777)) < 0)
+			, perm < 0 ? 0666 : (perm & 0777))) < 0)
     {
 	/*
 	 * A forced write will try to create a new file if the old one is
@@ -4269,7 +4269,7 @@
 
 	    if (org == NULL
 		    || (empty_fd = mch_open(org, O_CREAT | O_EXTRA | O_EXCL,
-							    perm & 0777)) < 0)
+					perm < 0 ? 0666 : (perm & 0777))) < 0)
 	      EMSG(_("E206: patchmode: can't touch empty original file"));
 	    else
 	      close(empty_fd);
diff --git a/src/globals.h b/src/globals.h
index 69a3bc4..48738d0 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -1073,9 +1073,11 @@
 
 #ifdef FEAT_BEVAL
 EXTERN BalloonEval	*balloonEval INIT(= NULL);
+# if defined(FEAT_NETBEANS_INTG) || defined(FEAT_SUN_WORKSHOP)
 EXTERN int bevalServers INIT(= 0);
-# define BEVAL_NETBEANS		0x01
-# define BEVAL_WORKSHOP		0x02
+#  define BEVAL_NETBEANS		0x01
+#  define BEVAL_WORKSHOP		0x02
+# endif
 #endif
 
 #ifdef CURSOR_SHAPE
diff --git a/src/gui.c b/src/gui.c
index 68f9777..82124d0 100644
--- a/src/gui.c
+++ b/src/gui.c
@@ -553,11 +553,11 @@
 	balloonEval = gui_mch_create_beval_area(gui.drawarea, NULL,
 						     &general_beval_cb, NULL);
 # else
-#  ifdef FEAT_GUI_MOTIF
+#  if defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA)
 	{
 	    extern Widget	textArea;
 	    balloonEval = gui_mch_create_beval_area(textArea, NULL,
-		    &general_beval_cb, NULL);
+						     &general_beval_cb, NULL);
 	}
 #  else
 #   ifdef FEAT_GUI_W32
diff --git a/src/gui_motif.c b/src/gui_motif.c
index a1da3d0..408b588 100644
--- a/src/gui_motif.c
+++ b/src/gui_motif.c
@@ -1372,7 +1372,7 @@
 
 	parent = XtParent(menu->id);
 #if defined(FEAT_TOOLBAR) && defined(FEAT_BEVAL)
-	if ((parent == toolBar) && (menu->tip != NULL))
+	if (parent == toolBar && menu->tip != NULL)
 	{
 	    /* We try to destroy this before the actual menu, because there are
 	     * callbacks, etc. that will be unregistered during the tooltip
diff --git a/src/message.c b/src/message.c
index 9b0045d..a813b6b 100644
--- a/src/message.c
+++ b/src/message.c
@@ -920,7 +920,7 @@
 	     * CTRL-C, but we need to loop then. */
 	    had_got_int = got_int;
 	    c = safe_vgetc();
-	    if (!global_busy)
+	    if (had_got_int && !global_busy)
 		got_int = FALSE;
 #ifdef FEAT_CLIPBOARD
 	    /* Strange way to allow copying (yanking) a modeless selection at
diff --git a/src/normal.c b/src/normal.c
index d367318..458b815 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -2098,7 +2098,7 @@
 	    stuffReadbuff((char_u *)"fmt");
 	else
 	    stuffReadbuff(p_fp);
-	stuffReadbuff((char_u *)"\n");
+	stuffReadbuff((char_u *)"\n']");
     }
 
     /*
diff --git a/src/ops.c b/src/ops.c
index 31c23bf..9a257ee 100644
--- a/src/ops.c
+++ b/src/ops.c
@@ -648,6 +648,13 @@
     linenr_T	last_changed = 0;
     linenr_T	start_lnum = curwin->w_cursor.lnum;
 
+    /* Don't even try when 'modifiable' is off. */
+    if (!curbuf->b_p_ma)
+    {
+	EMSG(_(e_modifiable));
+	return;
+    }
+
     for (i = oap->line_count; --i >= 0 && !got_int; )
     {
 	/* it's a slow thing to do, so give feedback so there's no worry that
diff --git a/src/os_unix.c b/src/os_unix.c
index c23d88b..284a68e 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -330,9 +330,6 @@
     int		tb_change_cnt;
 {
     int		len;
-#ifdef FEAT_AUTOCMD
-    static int	once_already = 0;
-#endif
 
     /* Check if window changed size while we were busy, perhaps the ":set
      * columns=99" command was used. */
@@ -344,46 +341,33 @@
 	while (WaitForChar(wtime) == 0)		/* no character available */
 	{
 	    if (!do_resize)	/* return if not interrupted by resize */
-	    {
-#ifdef FEAT_AUTOCMD
-		once_already = 0;
-#endif
 		return 0;
-	    }
 	    handle_resize();
 	}
     }
     else	/* wtime == -1 */
     {
-#ifdef FEAT_AUTOCMD
-	if (once_already == 2)
-	    updatescript(0);
-	else if (once_already == 1)
-	{
-	    setcursor();
-	    once_already = 2;
-	    return 0;
-	}
-	else
-#endif
 	/*
 	 * If there is no character available within 'updatetime' seconds
-	 * flush all the swap files to disk
+	 * flush all the swap files to disk.
 	 * Also done when interrupted by SIGWINCH.
 	 */
 	if (WaitForChar(p_ut) == 0)
 	{
 #ifdef FEAT_AUTOCMD
-	    if (has_cursorhold() && get_real_state() == NORMAL_BUSY)
+	    if (!did_cursorhold
+		    && has_cursorhold()
+		    && get_real_state() == NORMAL_BUSY
+		    && maxlen >= 3
+		    && !typebuf_changed(tb_change_cnt))
 	    {
-		apply_autocmds(EVENT_CURSORHOLD, NULL, NULL, FALSE, curbuf);
-		update_screen(VALID);
-		once_already = 1;
-		return 0;
+		buf[0] = K_SPECIAL;
+		buf[1] = KS_EXTRA;
+		buf[2] = (int)KE_CURSORHOLD;
+		return 3;
 	    }
-	    else
 #endif
-		updatescript(0);
+	    updatescript(0);
 	}
     }
 
@@ -419,9 +403,6 @@
 		if (buf[i] == 0)
 		    buf[i] = K_NUL;
 #endif
-#ifdef FEAT_AUTOCMD
-	    once_already = 0;
-#endif
 	    return len;
 	}
     }
diff --git a/src/screen.c b/src/screen.c
index 4e7dcbe..933326f 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -2023,6 +2023,7 @@
     int		col;
     int		txtcol;
     int		off = (int)(current_ScreenLine - ScreenLines);
+    int		ri;
 
     /* Build the fold line:
      * 1. Add the cmdwin_type for the command-line window
@@ -2078,13 +2079,19 @@
     }
 
 #ifdef FEAT_RIGHTLEFT
-# define RL_MEMSET(p, v, l) vim_memset(ScreenAttrs + off + (wp->w_p_rl ? (W_WIDTH(wp) - (p) - (l)) : (p)), v, l)
+# define RL_MEMSET(p, v, l)  if (wp->w_p_rl) \
+				for (ri = 0; ri < l; ++ri) \
+				   ScreenAttrs[off + (W_WIDTH(wp) - (p) - (l)) + ri] = v; \
+			     else \
+				for (ri = 0; ri < l; ++ri) \
+				   ScreenAttrs[off + (p) + ri] = v
 #else
-# define RL_MEMSET(p, v, l) vim_memset(ScreenAttrs + off + p, v, l)
+# define RL_MEMSET(p, v, l)   for (ri = 0; ri < l; ++ri) \
+				 ScreenAttrs[off + (p) + ri] = v
 #endif
 
     /* Set all attributes of the 'number' column and the text */
-    RL_MEMSET(col, hl_attr(HLF_FL), (size_t)(W_WIDTH(wp) - col));
+    RL_MEMSET(col, hl_attr(HLF_FL), W_WIDTH(wp) - col);
 
 #ifdef FEAT_SIGNS
     /* If signs are being displayed, add two spaces. */
@@ -2330,13 +2337,14 @@
 		    else
 			len = W_WIDTH(wp) - txtcol;
 		    RL_MEMSET(wp->w_old_cursor_fcol + txtcol, hl_attr(HLF_V),
-				       (size_t)(len - wp->w_old_cursor_fcol));
+						 len - wp->w_old_cursor_fcol);
 		}
 	    }
 	    else
+	    {
 		/* Set all attributes of the text */
-		RL_MEMSET(txtcol, hl_attr(HLF_V),
-					      (size_t)(W_WIDTH(wp) - txtcol));
+		RL_MEMSET(txtcol, hl_attr(HLF_V), W_WIDTH(wp) - txtcol);
+	    }
 	}
     }
 #endif
@@ -2370,12 +2378,15 @@
     int		len;
     int		attr;
 {
+    int		i;
+
     mch_memmove(ScreenLines + off, buf, (size_t)len);
 # ifdef FEAT_MBYTE
     if (enc_utf8)
 	vim_memset(ScreenLinesUC + off, 0, sizeof(u8char_T) * (size_t)len);
 # endif
-    vim_memset(ScreenAttrs + off, attr, (size_t)len);
+    for (i = 0; i < len; ++i)
+	ScreenAttrs[off + i] = attr;
 }
 
 /*
diff --git a/src/version.h b/src/version.h
index 4cf0316..2eaf3a3 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 Mar 15)"
-#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2005 Mar 15, compiled "
+#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0aa ALPHA (2005 Mar 18)"
+#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2005 Mar 18, compiled "
diff --git a/src/xxd/xxd.c b/src/xxd/xxd.c
index 499f762..299ba37 100644
--- a/src/xxd/xxd.c
+++ b/src/xxd/xxd.c
@@ -40,7 +40,7 @@
  * 29.08.96 Added size_t to strncmp() for Amiga.
  * 24.03.97 Windows NT support (Phil Hanna). Clean exit for Amiga WB (Bram)
  * 02.04.97 Added -E option, to have EBCDIC translation instead of ASCII
- *	    (antonio.colombo@jrc.it)
+ *	    (azc10@yahoo.com)
  * 22.05.97 added -g (group octets) option (jcook@namerica.kla.com).
  * 23.09.98 nasty -p -r misfeature fixed: slightly wrong output, when -c was
  *	    missing or wrong.