diff --git a/src/GvimExt/gvimext.cpp b/src/GvimExt/gvimext.cpp
index 975453c..70448b8 100644
--- a/src/GvimExt/gvimext.cpp
+++ b/src/GvimExt/gvimext.cpp
@@ -527,7 +527,7 @@
 //
 //  PARAMETERS:
 //    pIDFolder - Specifies the parent folder
-//    pDataObj  - Spefifies the set of items selected in that folder.
+//    pDataObj  - Specifies the set of items selected in that folder.
 //    hRegKey   - Specifies the type of the focused item in the selection.
 //
 //  RETURN VALUE:
diff --git a/src/INSTALLvms.txt b/src/INSTALLvms.txt
index 400d856..cbcbc49 100644
--- a/src/INSTALLvms.txt
+++ b/src/INSTALLvms.txt
@@ -330,7 +330,7 @@
      Also VMS_JACKETS.EXE from OpenVMS Porting Library.
 
      Please note, that GTK uses /name=(as_is,short)/float=ieee/ieee=denorm
-     complier directives that is not compatible with "standard" VMS usage,
+     compiler directives that is not compatible with "standard" VMS usage,
      therefore other external features might fail as PERL, PYTHON and TCL
      support.
 
diff --git a/src/Make_cyg.mak b/src/Make_cyg.mak
index e35e2e3..b00ae3b 100644
--- a/src/Make_cyg.mak
+++ b/src/Make_cyg.mak
@@ -1,6 +1,6 @@
 #
 # Makefile for VIM on Win32, using Cygnus gcc
-# Last updated by Dan Sharp.  Last Change: 2013 Feb 17
+# Last updated by Dan Sharp.  Last Change: 2013 Apr 22
 #
 # Also read INSTALLpc.txt!
 #
@@ -48,7 +48,7 @@
 # USEDLL	no or yes: set to yes to use the Runtime library DLL (no)
 #		For USEDLL=yes the cygwin1.dll is required to run Vim.
 #		For "no" the mingw-gcc-g++ package or the mingw64-i686-gcc-g++
-#		package is required to complie Vim.  Or set CC to gcc-3 and add
+#		package is required to compile Vim.  Or set CC to gcc-3 and add
 #		-L/lib/w32api to EXTRA_LIBS.
 # POSTSCRIPT	no or yes: set to yes for PostScript printing (no)
 # FEATURES	TINY, SMALL, NORMAL, BIG or HUGE (BIG)
diff --git a/src/Make_mvc.mak b/src/Make_mvc.mak
index e0f4856..36da162 100644
--- a/src/Make_mvc.mak
+++ b/src/Make_mvc.mak
@@ -418,7 +418,7 @@
 !endif
 !endif
 
-# Abort bulding VIM if version of VC is unrecognised.
+# Abort building VIM if version of VC is unrecognised.
 !ifndef MSVCVER
 !message *** ERROR
 !message Cannot determine Visual C version being used.  If you are using the
diff --git a/src/Make_sas.mak b/src/Make_sas.mak
index ff678d1..bf57c0d 100644
--- a/src/Make_sas.mak
+++ b/src/Make_sas.mak
@@ -251,7 +251,7 @@
 
 # generate GlobalSymbolTable, which speeds up the compile time.
 #
-# A preprocessing stage is used to work arounda bug in the GST generator, in
+# A preprocessing stage is used to work around a bug in the GST generator, in
 # that it does not handle nested makefiles properly in this stage.
 # Ignore error message for not producing any code (105).
 $(GST): scoptions vim.h keymap.h macros.h ascii.h term.h structs.h
@@ -283,7 +283,7 @@
 .c.pro:
 	$(CC) $(CFLAGS) GPFILE=proto/$*.pro $(PROPT) $*.c
 
-# dependancies
+# dependencies
 blowfish.o:		blowfish.c
 proto/blowfish.pro:	blowfish.c
 buffer.o:		buffer.c
diff --git a/src/Make_vms.mms b/src/Make_vms.mms
index 7cb5614..86b61d6 100644
--- a/src/Make_vms.mms
+++ b/src/Make_vms.mms
@@ -34,7 +34,7 @@
 # SMALL  - Few features enabled, as basic as possible
 # NORMAL - A default selection of features enabled
 # BIG    - Many features enabled, as rich as possible. (default)
-# HUGE   - All possible featues enabled.
+# HUGE   - All possible features enabled.
 # Please select one of these alternatives above.
 MODEL = HUGE
 
@@ -55,7 +55,7 @@
 # Comment out if you want the compiler version with :ver command.
 # NOTE: This part can make some complications if you're using some
 # predefined symbols/flags for your compiler. If does, just leave behind
-# the comment varialbe CCVER.
+# the comment variable CCVER.
 CCVER = YES
 
 # Uncomment if want a debug version. Resulting executable is DVIM.EXE
diff --git a/src/Make_w16.mak b/src/Make_w16.mak
index e4a6805..bc7809e 100644
--- a/src/Make_w16.mak
+++ b/src/Make_w16.mak
@@ -4,7 +4,7 @@
 # *************************************************************
 # * WARNING!
 # * This was originally produced by the IDE, but has since been
-# * modifed to make it work properly. Adjust with care!
+# * modified to make it work properly. Adjust with care!
 # * In particular, leave LinkerLocalOptsAtW16_gvim16dexe alone
 # * unless you are a guru.
 # *************************************************************
diff --git a/src/Makefile b/src/Makefile
index 5da8198..fb821ca 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -200,7 +200,7 @@
 #Solaris 2.5 (sun4m)  cc (SC4.0)     +X11R6 +GUI (CDE)	4.6b (E) Andrew Large
 #Solaris 2.5	      cc	     +X11 +GUI Athena	4.2  (9) Sonia Heimann
 #Solaris 2.5	      gcc 2.5.6      +X11 Motif		5.0m (R) Ant. Colombo
-#Solaris 2.6	      gcc 2.8.1      ncursus		5.3  (G) Larry W. Virden
+#Solaris 2.6	      gcc 2.8.1      ncurses		5.3  (G) Larry W. Virden
 #Solaris with -lthread					5.5  (W) K. Nagano
 #Solaris	      gcc				     (b) Riccardo
 #SunOS 4.1.x			     +X11 -GUI		5.1b (J) Bram Moolenaar
@@ -231,8 +231,8 @@
 # (D)  Uncomment lines below for QNX
 # (E)  You might want to use termlib instead of termcap, see below.
 # (F)  See below for instructions.
-# (G)  Using ncursus version 4.2 has reported to cause a crash.  Use the
-#      Sun cursus library instead.
+# (G)  Using ncurses version 4.2 has reported to cause a crash.  Use the
+#      Sun curses library instead.
 # (H)  See line for EXTRA_LIBS below.
 # (I)  SINIX-N 5.42 and 5.43 need some EXTRA_LIBS.  Also for Reliant-Unix.
 # (J)  If you get undefined symbols, see below for a solution.
@@ -402,7 +402,7 @@
 # to the command line.	If you see strange flags during compilation, check in
 # auto/config.mk where they come from.  If it's PERL_CFLAGS, try commenting
 # the next line.
-# When you get an error for a missing "perl.exp" file, try creating an emtpy
+# When you get an error for a missing "perl.exp" file, try creating an empty
 # one: "touch perl.exp".
 # This requires at least "small" features, "tiny" doesn't work.
 #CONF_OPT_PERL = --enable-perlinterp
@@ -601,7 +601,7 @@
 # Might not work with GUI or Perl.
 # For unknown reasons adding "-lc" fixes a linking problem with some versions
 # of GCC.  That's probably a bug in the "-pg" implementation.
-# After running Vim see the profile result with: gmon vim gmon.out | vim -
+# After running Vim see the profile result with: gprof vim gmon.out | vim -
 # Need to recompile everything after changing this: "make clean" "make".
 #PROFILE_CFLAGS = -pg -g -DWE_ARE_PROFILING
 #PROFILE_LIBS = -pg
@@ -1294,7 +1294,7 @@
 ### prototype headers are ignored due to -DPROTO, system
 ### headers #include <...> are ignored if we use the -MM option, as
 ### e.g. provided by gcc-cpp.
-### Include FEAT_GUI to get gependency on gui.h
+### Include FEAT_GUI to get dependency on gui.h
 ### Need to change "-I /<path>" to "-isystem /<path>" for GCC 3.x.
 CPP_DEPEND = $(CC) -I$(srcdir) -M$(CPP_MM) \
 		`echo "$(DEPEND_CFLAGS)" $(DEPEND_CFLAGS_FILTER)`
@@ -1717,7 +1717,7 @@
 
 
 # Link the target for normal use or debugging.
-# A shell script is used to try linking without unneccesary libraries.
+# A shell script is used to try linking without unnecessary libraries.
 $(VIMTARGET): auto/config.mk objects $(OBJ) version.c version.h
 	$(CCC) version.c -o objects/version.o
 	@LINK="$(PURIFY) $(SHRPENV) $(CClink) $(ALL_LIB_DIRS) $(LDFLAGS) \
@@ -1837,8 +1837,8 @@
 #
 # This will produce a lot of garbage on your screen, including a few error
 # messages.  Don't worry about that.
-# If there is a real error, there will be a difference between "test.out" and
-# a "test99.ok" file.
+# If there is a real error, there will be a difference between "testXX.out" and
+# a "testXX.ok" file.
 # If everything is alright, the final message will be "ALL DONE".  If not you
 # get "TEST FAILURE".
 #
@@ -2779,9 +2779,9 @@
 	mv gui_mac.rsrc.rsrcfork $(RESDIR)/$(VIMNAME).rsrc
 
 # po/Make_osx.pl says something about generating a Mac message file
-# for Ukrananian.  Would somebody using Mac OS X in Ukranian
+# for Ukrainian.  Would somebody using Mac OS X in Ukrainian
 # *really* be upset that Carbon Vim was not localised in
-# Ukranian?
+# Ukrainian?
 #
 #bundle-language: bundle-dir po/Make_osx.pl
 #	cd po && perl Make_osx.pl --outdir ../$(RESDIR) $(MULTILANG)
diff --git a/src/VisVim/OleAut.cpp b/src/VisVim/OleAut.cpp
index f96b03d..6902df9 100644
--- a/src/VisVim/OleAut.cpp
+++ b/src/VisVim/OleAut.cpp
@@ -654,7 +654,7 @@
 	}
 
 	char Buf[256];
-	sprintf (Buf, "An OLE error occured:\r\nCode = %s\r\nResult = %lx.",
+	sprintf (Buf, "An OLE error occurred:\r\nCode = %s\r\nResult = %lx.",
 		 (char*) ErrName, m_hResult);
 	MessageBox (NULL, Buf, "OLE Error", MB_OK);
 }
diff --git a/src/VisVim/README_VisVim.txt b/src/VisVim/README_VisVim.txt
index abb6904..fbe4b8b 100644
--- a/src/VisVim/README_VisVim.txt
+++ b/src/VisVim/README_VisVim.txt
@@ -220,7 +220,7 @@
 		 2. Close Visual Studio.
 		 3. Delete VisVim.dll or move it somewhere it can't be found.
 		 4. Run Visual Studio.
-		 5. Tools -> Cursomize ->Add-ins and Macro-Files.
+		 5. Tools -> Customize ->Add-ins and Macro-Files.
 		 6. A message appears:
 		    ".../VisVim.dll" "This add-in no longer exists.  It will
 		    no longer be displayed."
@@ -298,7 +298,7 @@
 P8  Execute :tag command in Vim for word under cursor in DevStudio
 
 P7  Controlling the Visual Studio Debugger from inside Vim
-    See message above. Also a 'Debug' highligh group and a
+    See message above. Also a 'Debug' highlight group and a
     command to highlight a certain line would be necessary.
 
 P6  Provide an option to open the current file in VisVim in
diff --git a/src/auto/configure b/src/auto/configure
index f5fc87f..6130945 100755
--- a/src/auto/configure
+++ b/src/auto/configure
@@ -5831,7 +5831,7 @@
     /* If this program fails, then RTLD_GLOBAL is needed.
      * RTLD_GLOBAL will be used and then it is not possible to
      * have both python versions enabled in the same vim instance.
-     * Only the first pyhton version used will be switched on.
+     * Only the first python version used will be switched on.
      */
 
     int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
@@ -5897,7 +5897,7 @@
     /* If this program fails, then RTLD_GLOBAL is needed.
      * RTLD_GLOBAL will be used and then it is not possible to
      * have both python versions enabled in the same vim instance.
-     * Only the first pyhton version used will be switched on.
+     * Only the first python version used will be switched on.
      */
 
     int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
@@ -10593,7 +10593,7 @@
 _ACEOF
 
   if test "x$vim_cv_tty_mode" = "x" ; then
-    as_fn_error "It seems you're cross compiling and have 'vim_cv_tty_group' set, please also set the environment variable 'vim_cv_tty_mode' to the correct mode (propably 0620)" "$LINENO" 5
+    as_fn_error "It seems you're cross compiling and have 'vim_cv_tty_group' set, please also set the environment variable 'vim_cv_tty_mode' to the correct mode (probably 0620)" "$LINENO" 5
   else
     $as_echo "#define PTYMODE 0620" >>confdefs.h
 
diff --git a/src/buffer.c b/src/buffer.c
index 1840e10..54f6544 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -2005,7 +2005,7 @@
 	 * "buf" if one exists */
 	if (swb_flags & SWB_USEOPEN)
 	    wp = buf_jump_open_win(buf);
-	/* If 'switchbuf' contians "usetab": jump to first window in any tab
+	/* If 'switchbuf' contains "usetab": jump to first window in any tab
 	 * page containing "buf" if one exists */
 	if (wp == NULL && (swb_flags & SWB_USETAB))
 	    wp = buf_jump_open_tab(buf);
diff --git a/src/configure.in b/src/configure.in
index 310dea4..34a75b3 100644
--- a/src/configure.in
+++ b/src/configure.in
@@ -306,7 +306,7 @@
 AC_SUBST(line_break)
 
 if test "$cf_cv_ebcdic" = "yes"; then
-dnl If we have EBCDIC we most likley have z/OS Unix, let's test it!
+dnl If we have EBCDIC we most likely have z/OS Unix, let's test it!
 AC_MSG_CHECKING(for z/OS Unix)
 case `uname` in
     OS/390)	zOSUnix="yes";
@@ -1228,7 +1228,7 @@
     /* If this program fails, then RTLD_GLOBAL is needed.
      * RTLD_GLOBAL will be used and then it is not possible to
      * have both python versions enabled in the same vim instance.
-     * Only the first pyhton version used will be switched on.
+     * Only the first python version used will be switched on.
      */
 
     int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
@@ -1274,7 +1274,7 @@
     /* If this program fails, then RTLD_GLOBAL is needed.
      * RTLD_GLOBAL will be used and then it is not possible to
      * have both python versions enabled in the same vim instance.
-     * Only the first pyhton version used will be switched on.
+     * Only the first python version used will be switched on.
      */
 
     int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
@@ -3002,7 +3002,7 @@
 if test "x$vim_cv_tty_group" != "xworld" ; then
   AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
   if test "x$vim_cv_tty_mode" = "x" ; then
-    AC_MSG_ERROR([It seems you're cross compiling and have 'vim_cv_tty_group' set, please also set the environment variable 'vim_cv_tty_mode' to the correct mode (propably 0620)])
+    AC_MSG_ERROR([It seems you're cross compiling and have 'vim_cv_tty_group' set, please also set the environment variable 'vim_cv_tty_mode' to the correct mode (probably 0620)])
   else
     AC_DEFINE(PTYMODE, 0620)
   fi
diff --git a/src/diff.c b/src/diff.c
index f560460..cf09140 100644
--- a/src/diff.c
+++ b/src/diff.c
@@ -1110,7 +1110,7 @@
 }
 
 /*
- * Set options to show difs for the current window.
+ * Set options to show diffs for the current window.
  */
     void
 ex_diffthis(eap)
diff --git a/src/dosinst.c b/src/dosinst.c
index 6bc15fc..3c5e59b 100644
--- a/src/dosinst.c
+++ b/src/dosinst.c
@@ -1609,7 +1609,7 @@
 
 /*
  * Only add the choice for the open-with menu entry when gvim.exe was found
- * and and regedit.exe exist.
+ * and regedit.exe exist.
  */
     static void
 init_openwith_choice(void)
diff --git a/src/edit.c b/src/edit.c
index 65038e4..6c21010 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -1418,7 +1418,7 @@
 
 normalchar:
 	    /*
-	     * Insert a nomal character.
+	     * Insert a normal character.
 	     */
 #ifdef FEAT_AUTOCMD
 	    if (!p_paste)
@@ -7162,7 +7162,7 @@
 	    /*
 	     * Count each sequence of folded lines as one logical line.
 	     */
-	    /* go to the the start of the current fold */
+	    /* go to the start of the current fold */
 	    (void)hasFolding(lnum, &lnum, NULL);
 
 	    while (n--)
@@ -7213,7 +7213,7 @@
 	(void)hasFolding(lnum, NULL, &lnum);
 #endif
 	/* This fails if the cursor is already in the last line or would move
-	 * beyound the last line and '-' is in 'cpoptions' */
+	 * beyond the last line and '-' is in 'cpoptions' */
 	if (lnum >= curbuf->b_ml.ml_line_count
 		|| (lnum + n > curbuf->b_ml.ml_line_count
 		    && vim_strchr(p_cpo, CPO_MINUS) != NULL))
@@ -7715,7 +7715,7 @@
 /*
  * return TRUE if 'cinkeys' contains the key "keytyped",
  * when == '*':	    Only if key is preceded with '*'	(indent before insert)
- * when == '!':	    Only if key is prededed with '!'	(don't insert)
+ * when == '!':	    Only if key is preceded with '!'	(don't insert)
  * when == ' ':	    Only if key is not preceded with '*'(indent afterwards)
  *
  * "keytyped" can have a few special values:
@@ -8541,7 +8541,7 @@
 #endif
 
 /*
- * <Insert> key in Insert mode: toggle insert/remplace mode.
+ * <Insert> key in Insert mode: toggle insert/replace mode.
  */
     static void
 ins_insert(replaceState)
diff --git a/src/eval.c b/src/eval.c
index e757f6b..04ed2c5 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -16669,7 +16669,7 @@
     tabpage_T	*save_curtab;
 {
 #ifdef FEAT_WINDOWS
-    /* Restore current tabpage and window, if still valid (autocomands can
+    /* Restore current tabpage and window, if still valid (autocommands can
      * make them invalid). */
     if (valid_tabpage(save_curtab))
 	goto_tabpage_tp(save_curtab, TRUE);
diff --git a/src/ex_cmds2.c b/src/ex_cmds2.c
index 11446ef..c2f768a 100644
--- a/src/ex_cmds2.c
+++ b/src/ex_cmds2.c
@@ -2851,7 +2851,7 @@
 	EMSG(_(e_argreq));
 
     else if (eap != NULL && eap->forceit)
-	/* ":source!": read Normal mdoe commands
+	/* ":source!": read Normal mode commands
 	 * Need to execute the commands directly.  This is required at least
 	 * for:
 	 * - ":g" command busy
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 30fe937..4a372b5 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -1093,7 +1093,7 @@
 		msg_didany = FALSE; /* no output yet */
 		msg_start();
 		msg_scroll = TRUE;  /* put messages below each other */
-		++no_wait_return;   /* dont wait for return until finished */
+		++no_wait_return;   /* don't wait for return until finished */
 		++RedrawingDisabled;
 		did_inc = TRUE;
 	    }
@@ -1298,7 +1298,7 @@
 	    && !(did_emsg
 #ifdef FEAT_EVAL
 		/* Keep going when inside try/catch, so that the error can be
-		 * dealth with, except when it is a syntax error, it may cause
+		 * deal with, except when it is a syntax error, it may cause
 		 * the :endtry to be missed. */
 		&& (cstack.cs_trylevel == 0 || did_emsg_syntax)
 #endif
@@ -10982,7 +10982,7 @@
 		*p = '/';
     }
 
-    /* escapse special characters */
+    /* escape special characters */
     p = vim_strsave_fnameescape(sname, FALSE);
     vim_free(sname);
     if (p == NULL)
diff --git a/src/ex_eval.c b/src/ex_eval.c
index fc23cac..5b84969 100644
--- a/src/ex_eval.c
+++ b/src/ex_eval.c
@@ -44,7 +44,7 @@
  * executed.  Otherwise, errors and/or interrupts are converted into catchable
  * exceptions (did_throw additionally set), which terminate the script only if
  * not caught.  For user exceptions, only did_throw is set.  (Note: got_int can
- * be set asyncronously afterwards by a SIGINT, so did_throw && got_int is not
+ * be set asynchronously afterwards by a SIGINT, so did_throw && got_int is not
  * a reliant test that the exception currently being thrown is an interrupt
  * exception.  Similarly, did_emsg can be set afterwards on an error in an
  * (unskipped) conditional command inside an inactive conditional, so did_throw
@@ -2091,11 +2091,11 @@
  * Values used for "searched_cond" are (CSF_WHILE | CSF_FOR) or CSF_TRY or 0,
  * the latter meaning the innermost try conditional not in its finally clause.
  * "inclusive" tells whether the conditional searched for should be made
- * inactive itself (a try conditional not in its finally claused possibly find
+ * inactive itself (a try conditional not in its finally clause possibly find
  * before is always made inactive).  If "inclusive" is TRUE and
  * "searched_cond" is CSF_TRY|CSF_SILENT, the saved former value of
  * "emsg_silent", if reset when the try conditional finally reached was
- * entered, is restored (unsed by ex_endtry()).  This is normally done only
+ * entered, is restored (used by ex_endtry()).  This is normally done only
  * when such a try conditional is left.
  */
     int
diff --git a/src/farsi.c b/src/farsi.c
index f7662ac..be4c1ce 100644
--- a/src/farsi.c
+++ b/src/farsi.c
@@ -1841,7 +1841,7 @@
 }
 
 /*
- * Convert the Farsi VIM into Farsi 3342 standad.
+ * Convert the Farsi VIM into Farsi 3342 standard.
  */
     void
 conv_to_pstd()
diff --git a/src/feature.h b/src/feature.h
index 330a748..5945ca4 100644
--- a/src/feature.h
+++ b/src/feature.h
@@ -1007,7 +1007,7 @@
 
 /*
  * MODIFIED_BY		Name of who modified Vim.  Required when distributing
- *			a modifed version of Vim.
+ *			a modified version of Vim.
  *			Also from the "--with-modified-by" configure argument.
  */
 /* #define MODIFIED_BY "John Doe" */
diff --git a/src/fileio.c b/src/fileio.c
index 46fdea9..1ce2040 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -3279,7 +3279,7 @@
 	overwriting = FALSE;
 
     if (exiting)
-	settmode(TMODE_COOK);	    /* when exiting allow typahead now */
+	settmode(TMODE_COOK);	    /* when exiting allow typeahead now */
 
     ++no_wait_return;		    /* don't wait for return yet */
 
@@ -3303,7 +3303,7 @@
 	int		empty_memline = (buf->b_ml.ml_mfp == NULL);
 
 	/*
-	 * Apply PRE aucocommands.
+	 * Apply PRE autocommands.
 	 * Set curbuf to the buffer to be written.
 	 * Careful: The autocommands may call buf_write() recursively!
 	 */
@@ -8866,7 +8866,7 @@
     else
     {
 	/* There is no window for "buf", use "aucmd_win".  To minimize the side
-	 * effects, insert it in a the current tab page.
+	 * effects, insert it in the current tab page.
 	 * Anything related to a window (e.g., setting folds) may have
 	 * unexpected results. */
 	aco->use_aucmd_win = TRUE;
diff --git a/src/glbl_ime.cpp b/src/glbl_ime.cpp
index 1abfeaf..3cca0b7 100644
--- a/src/glbl_ime.cpp
+++ b/src/glbl_ime.cpp
@@ -156,7 +156,7 @@
 }
 
 /*
- * Set position of IME compotision window.
+ * Set position of IME composition window.
  *
  * You have to call this before starting composition.  If once composition
  * started, this can take no effect until that composition have finished.  So
diff --git a/src/gui.c b/src/gui.c
index 1c60b7a..0c21976 100644
--- a/src/gui.c
+++ b/src/gui.c
@@ -826,7 +826,7 @@
 #endif
 
 /*
- * Set the font.  "font_list" is a a comma separated list of font names.  The
+ * Set the font.  "font_list" is a comma separated list of font names.  The
  * first font name that works is used.  If none is found, use the default
  * font.
  * If "fontset" is TRUE, the "font_list" is used as one name for the fontset.
@@ -2376,7 +2376,7 @@
     {
 	int	start;		/* index of bytes to be drawn */
 	int	cells;		/* cellwidth of bytes to be drawn */
-	int	thislen;	/* length of bytes to be drawin */
+	int	thislen;	/* length of bytes to be drawn */
 	int	cn;		/* cellwidth of current char */
 	int	i;		/* index of current char */
 	int	c;		/* current char value */
@@ -3886,7 +3886,7 @@
 	gui.dragged_sb = SBAR_NONE;
 #ifdef FEAT_GUI_GTK
 	/* Keep the "dragged_wp" value until after the scrolling, for when the
-	 * moust button is released.  GTK2 doesn't send the button-up event. */
+	 * mouse button is released.  GTK2 doesn't send the button-up event. */
 	gui.dragged_wp = NULL;
 #endif
     }
diff --git a/src/gui_athena.c b/src/gui_athena.c
index c8d8e98..03fea90 100644
--- a/src/gui_athena.c
+++ b/src/gui_athena.c
@@ -519,7 +519,7 @@
 	    &color[TOP_SHADOW].pixel,
 	    &color[HIGHLIGHT].pixel);
 
-    /* Setup the color subsititution table */
+    /* Setup the color substitution table */
     attrs.valuemask = XpmColorSymbols;
     attrs.colorsymbols = color;
     attrs.numsymbols = 5;
diff --git a/src/gui_beval.c b/src/gui_beval.c
index 84d6acd..fe930f3 100644
--- a/src/gui_beval.c
+++ b/src/gui_beval.c
@@ -726,7 +726,7 @@
     BalloonEval	*beval;
     XEvent	*event;
 {
-    Position	distance;	    /* a measure of how much the ponter moved */
+    Position	distance;	    /* a measure of how much the pointer moved */
     Position	delta;		    /* used to compute distance */
 
     switch (event->type)
diff --git a/src/gui_gtk_x11.c b/src/gui_gtk_x11.c
index 61432a2..ceade75 100644
--- a/src/gui_gtk_x11.c
+++ b/src/gui_gtk_x11.c
@@ -1257,7 +1257,7 @@
 	}
     }
 
-    /* Chop off any traiing NUL bytes.  OpenOffice sends these. */
+    /* Chop off any trailing NUL bytes.  OpenOffice sends these. */
     while (len > 0 && text[len - 1] == NUL)
 	--len;
 
diff --git a/src/gui_mac.c b/src/gui_mac.c
index 5ba9fec..573dc7a 100644
--- a/src/gui_mac.c
+++ b/src/gui_mac.c
@@ -41,7 +41,7 @@
 #define USE_AEVENT		/* Enable AEVENT */
 #undef USE_OFFSETED_WINDOW	/* Debugging feature: start Vim window OFFSETed */
 
-/* Compile as CodeWarior External Editor */
+/* Compile as CodeWarrior External Editor */
 #if defined(FEAT_CW_EDITOR) && !defined(USE_AEVENT)
 # define USE_AEVENT /* Need Apple Event Support */
 #endif
@@ -1478,7 +1478,7 @@
 /*
  *  gui_mac_get_menu_item_index
  *
- *  Returns the index inside the menu wher
+ *  Returns the index inside the menu where
  */
     short /* Should we return MenuItemIndex? */
 gui_mac_get_menu_item_index(vimmenu_T *pMenu)
@@ -1693,7 +1693,7 @@
 
     if (theControl != NUL)
     {
-	/* We hit a scollbar */
+	/* We hit a scrollbar */
 
 	if (thePortion != kControlIndicatorPart)
 	{
@@ -2630,7 +2630,7 @@
     {
 	/* Handle the menu CntxMenuID, CntxMenuItem */
 	/* The submenu can be handle directly by gui_mac_handle_menu */
-	/* But what about the current menu, is the meny changed by ContextualMenuSelect */
+	/* But what about the current menu, is the many changed by ContextualMenuSelect */
 	gui_mac_handle_menu((CntxMenuID << 16) + CntxMenuItem);
     }
     else if (CntxMenuID == kCMShowHelpSelected)
@@ -5356,7 +5356,7 @@
     char_u *initdir,
     char_u *filter)
 {
-    /* TODO: Add Ammon's safety checl (Dany) */
+    /* TODO: Add Ammon's safety check (Dany) */
     NavReplyRecord	reply;
     char_u		*fname = NULL;
     char_u		**fnames = NULL;
@@ -5704,7 +5704,7 @@
 
 	/* Resize the button to fit its name */
 	width = StringWidth(name) + 2 * dfltButtonEdge;
-	/* Limite the size of any button to an acceptable value. */
+	/* Limit the size of any button to an acceptable value. */
 	/* TODO: Should be based on the message width */
 	if (width > maxButtonWidth)
 	    width = maxButtonWidth;
@@ -5887,7 +5887,7 @@
     /* Free the modal filterProc */
     DisposeRoutineDescriptor(dialogUPP);
 
-    /* Get ride of th edialog (free memory) */
+    /* Get ride of the dialog (free memory) */
     DisposeDialog(theDialog);
 
     return itemHit;
@@ -5967,9 +5967,9 @@
 	/* New way */
 
 	/*
-	 * Get first devoice with one button.
-	 * This will probably be the standad mouse
-	 * startat head of cursor dev list
+	 * Get first device with one button.
+	 * This will probably be the standard mouse
+	 * start at head of cursor dev list
 	 *
 	 */
 
@@ -6151,7 +6151,7 @@
 }
 
 /*
- * Convert a FSSpec to a fuill path
+ * Convert a FSSpec to a full path
  */
 
 char_u *FullPathFromFSSpec_save(FSSpec file)
@@ -6215,8 +6215,8 @@
 
 #ifdef USE_UNIXFILENAME
     /*
-     * The function used here are available in Carbon, but
-     * do nothing une MacOS 8 and 9
+     * The functions used here are available in Carbon, but do nothing on
+     * MacOS 8 and 9.
      */
     if (error == fnfErr)
     {
@@ -6544,7 +6544,7 @@
 
 // when the tabline is hidden, vim doesn't call update_tabline(). When
 // the tabline is shown again, show_tabline() is called before update_tabline(),
-// and because of this, the tab labels and vims internal tabs are out of sync
+// and because of this, the tab labels and vim's internal tabs are out of sync
 // for a very short time. to prevent inconsistent state, we store the labels
 // of the tabs, not pointers to the tabs (which are invalid for a short time).
 static CFStringRef *tabLabels = NULL;
@@ -6578,7 +6578,7 @@
 
     // assert(property == kTabsColumn); // why is this violated??
 
-    // changeValue is true if we have a modifieable list and data was changed.
+    // changeValue is true if we have a modifiable list and data was changed.
     // In our case, it's always false.
     // (that is: if (changeValue) updateInternalData(); else return
     // internalData();
diff --git a/src/gui_motif.c b/src/gui_motif.c
index 7cac8ee..5b6c7a7 100644
--- a/src/gui_motif.c
+++ b/src/gui_motif.c
@@ -1344,7 +1344,7 @@
 	else
 	{
 	    /* Without shadows one can't sense whatever the button has been
-	     * pressed or not! However we wan't to save a bit of space...
+	     * pressed or not! However we want to save a bit of space...
 	     * Need the highlightThickness to see the focus.
 	     */
 	    XtSetArg(args[n], XmNhighlightThickness, 1); n++;
@@ -3205,7 +3205,7 @@
 # ifdef FEAT_FOOTER
 /*
  * The next toolbar enter/leave callbacks should really do balloon help.  But
- * I have to use footer help for backwards compatability.  Hopefully both will
+ * I have to use footer help for backwards compatibility.  Hopefully both will
  * get implemented and the user will have a choice.
  */
     static void
diff --git a/src/gui_photon.c b/src/gui_photon.c
index 5db0484..aa99dd7 100644
--- a/src/gui_photon.c
+++ b/src/gui_photon.c
@@ -61,7 +61,7 @@
 static PhPoint_t    gui_ph_raw_offset;
 static PtWidget_t   *gui_ph_timer_cursor;   /* handle cursor blinking */
 static PtWidget_t   *gui_ph_timer_timeout;  /* used in gui_mch_wait_for_chars */
-static short	    is_timeout;		    /* Has the timeout occured? */
+static short	    is_timeout;		    /* Has the timeout occurred? */
 
 /*
  * This is set inside the mouse callback for a right mouse
@@ -1156,7 +1156,7 @@
     PtSetArg(&args[ n++ ], Pt_ARG_POS, &pos, 0);
 
 #ifdef USE_PANEL_GROUP
-    /* Put in a temprary place holder title */
+    /* Put in a temporary place holder title */
     PtSetArg(&args[ n++ ], Pt_ARG_PG_PANEL_TITLES, &empty_title, 1);
 
     gui.vimPanelGroup = PtCreateWidget(PtPanelGroup, gui.vimWindow, n, args);
@@ -1527,7 +1527,7 @@
     /* There is one less separator than buttons, so bump up the button count */
     button_count = 1;
 
-    /* Count string length and number of seperators */
+    /* Count string length and number of separators */
     for (str = buttons; *str; str++)
     {
 	len++;
diff --git a/src/gui_w16.c b/src/gui_w16.c
index ffb6b89..b8d1e0e 100644
--- a/src/gui_w16.c
+++ b/src/gui_w16.c
@@ -511,7 +511,7 @@
     workarea_rect.right = GetSystemMetrics(SM_CXSCREEN);
     workarea_rect.bottom = GetSystemMetrics(SM_CYFULLSCREEN);
 
-    /* get current posision of our window */
+    /* get current position of our window */
     wndpl.length = sizeof(WINDOWPLACEMENT);
     GetWindowPlacement(s_hwnd, &wndpl);
     if (wndpl.showCmd == SW_SHOWNORMAL)
@@ -1161,7 +1161,7 @@
 	return -1;
 
     /*
-     * make a copy of 'buttons' to fiddle with it.  complier grizzles because
+     * make a copy of 'buttons' to fiddle with it.  compiler grizzles because
      * vim_strsave() doesn't take a const arg (why not?), so cast away the
      * const.
      */
diff --git a/src/gui_w32.c b/src/gui_w32.c
index 4ff89a3..c7a7b60 100644
--- a/src/gui_w32.c
+++ b/src/gui_w32.c
@@ -1258,7 +1258,7 @@
 
 #ifdef FEAT_NETBEANS_INTG
     {
-	/* stolen from gui_x11.x */
+	/* stolen from gui_x11.c */
 	int arg;
 
 	for (arg = 1; arg < *argc; arg++)
@@ -1676,7 +1676,7 @@
      * used by the taskbar or appbars. */
     get_work_area(&workarea_rect);
 
-    /* Get current posision of our window.  Note that the .left and .top are
+    /* Get current position of our window.  Note that the .left and .top are
      * relative to the work area.  */
     wndpl.length = sizeof(WINDOWPLACEMENT);
     GetWindowPlacement(s_hwnd, &wndpl);
@@ -3100,7 +3100,7 @@
 	return -1;
 
     /*
-     * make a copy of 'buttons' to fiddle with it.  complier grizzles because
+     * make a copy of 'buttons' to fiddle with it.  compiler grizzles because
      * vim_strsave() doesn't take a const arg (why not?), so cast away the
      * const.
      */
@@ -4391,7 +4391,7 @@
     }
 
     sign.hImage = NULL;
-    ext = signfile + STRLEN(signfile) - 4; /* get extention */
+    ext = signfile + STRLEN(signfile) - 4; /* get extension */
     if (ext > signfile)
     {
 	int do_load = 1;
diff --git a/src/gui_w48.c b/src/gui_w48.c
index 083ac80..cfa0965 100644
--- a/src/gui_w48.c
+++ b/src/gui_w48.c
@@ -1222,7 +1222,7 @@
 
     /* When side scroll bar is unshown, the size of window will change.
      * then, the text area move left or right. thus client rect should be
-     * forcely redraw. (Yasuhiro Matsumoto) */
+     * forcedly redrawn. (Yasuhiro Matsumoto) */
     if (oldx != x || oldy != y)
     {
 	InvalidateRect(s_hwnd, NULL, FALSE);
diff --git a/src/gui_xmebw.c b/src/gui_xmebw.c
index f7d59fc..3760f72 100644
--- a/src/gui_xmebw.c
+++ b/src/gui_xmebw.c
@@ -345,7 +345,7 @@
 	    &eb->primitive.top_shadow_color,
 	    &eb->primitive.highlight_color);
 
-    /* Setup color subsititution table. */
+    /* Setup color substitution table. */
     color[0].pixel = eb->core.background_pixel;
     color[1].pixel = eb->core.background_pixel;
     color[2].pixel = eb->core.background_pixel;
@@ -919,8 +919,8 @@
     }
 
     /*
-     * Plase note that we manipulate the width only in case of push buttons not
-     * used in the context of a menu pane.
+     * Please note that we manipulate the width only in case of push buttons
+     * not used in the context of a menu pane.
      */
     if (Lab_IsMenupane(newtb))
     {
@@ -1006,7 +1006,7 @@
 	XmString str;
 	set_pixmap(eb);
 
-	/* FIXME: this is not the perfect way to deal with menues, which do not
+	/* FIXME: this is not the perfect way to deal with menus, which do not
 	 * have any string set right now.  */
 	str = XmStringCreateLocalized("");
 	XtVaSetValues((Widget) eb, XmNlabelString, str, NULL);
diff --git a/src/gui_xmebwp.h b/src/gui_xmebwp.h
index 65e71b4..a3e3e3d 100644
--- a/src/gui_xmebwp.h
+++ b/src/gui_xmebwp.h
@@ -26,7 +26,7 @@
 
 
 /*
- * EnahncedButton class structure.
+ * EnhancedButton class structure.
  */
 typedef struct _XmEnhancedButtonClassPart
 {
@@ -49,7 +49,7 @@
 extern XmEnhancedButtonClassRec xmEnhancedButtonClassRec;
 
 /*
- * EnahncedButton instance record.
+ * EnhancedButton instance record.
  */
 typedef struct _XmEnhancedButtonPart
 {
diff --git a/src/hardcopy.c b/src/hardcopy.c
index f7733a1..1df2fda 100644
--- a/src/hardcopy.c
+++ b/src/hardcopy.c
@@ -2186,7 +2186,7 @@
     if (num_copies > 1)
     {
 	prt_write_string(" numcopies(");
-	/* Note: no space wanted so dont use prt_write_int() */
+	/* Note: no space wanted so don't use prt_write_int() */
 	sprintf((char *)prt_line_buffer, "%d", num_copies);
 	prt_write_file(prt_line_buffer);
 	prt_write_string(")");
diff --git a/src/if_cscope.c b/src/if_cscope.c
index 929448b..7a7a66f 100644
--- a/src/if_cscope.c
+++ b/src/if_cscope.c
@@ -1192,9 +1192,8 @@
     if (nummatches == NULL)
 	return FALSE;
 
-    /* send query to all open connections, then count the total number
-     * of matches so we can alloc matchesp all in one swell foop
-     */
+    /* Send query to all open connections, then count the total number
+     * of matches so we can alloc all in one swell foop. */
     for (i = 0; i < csinfo_size; i++)
 	nummatches[i] = 0;
     totmatches = 0;
diff --git a/src/if_mzsch.c b/src/if_mzsch.c
index 2384464..8dd2134 100644
--- a/src/if_mzsch.c
+++ b/src/if_mzsch.c
@@ -3053,7 +3053,7 @@
 		status = FAIL;
 	    else
 	    {
-		/* add the value in advance to allow handling of self-referencial
+		/* add the value in advance to allow handling of self-referential
 		 * data structures */
 		typval_T    *visited_tv = (typval_T *)alloc(sizeof(typval_T));
 		copy_tv(tv, visited_tv);
@@ -3088,7 +3088,7 @@
 			if (status == FAIL)
 			    break;
 		    }
-		    /* impoper list not terminated with null
+		    /* improper list not terminated with null
 		     * need to handle the last element */
 		    if (status == OK && !SCHEME_NULLP(curr))
 		    {
@@ -3136,7 +3136,7 @@
 	    {
 		if (((Scheme_Hash_Table *) obj)->vals[i] != NULL)
 		{
-		    /* generate item for `diplay'ed Scheme key */
+		    /* generate item for `display'ed Scheme key */
 		    dictitem_T  *item = dictitem_alloc((char_u *)string_to_line(
 				((Scheme_Hash_Table *) obj)->keys[i]));
 		    /* convert Scheme val to Vim and add it to the dict */
diff --git a/src/if_ole.cpp b/src/if_ole.cpp
index 4c01f51..aabf6bb 100644
--- a/src/if_ole.cpp
+++ b/src/if_ole.cpp
@@ -645,7 +645,7 @@
     CoTaskMemFree(wGUID);
 }
 
-// Delete a key and all of its descendents
+// Delete a key and all of its descendants
 static void RecursiveDeleteKey(HKEY hKeyParent, const char *child)
 {
     // Open the child
@@ -655,7 +655,7 @@
     if (result != ERROR_SUCCESS)
 	return;
 
-    // Enumerate all of the decendents of this child
+    // Enumerate all of the descendants of this child
     FILETIME time;
     char buffer[1024];
     DWORD size = 1024;
@@ -663,7 +663,7 @@
     while (RegEnumKeyEx(hKeyChild, 0, buffer, &size, NULL,
 			NULL, NULL, &time) == S_OK)
     {
-	// Delete the decendents of this child
+	// Delete the descendants of this child
 	RecursiveDeleteKey(hKeyChild, buffer);
 	size = 256;
     }
diff --git a/src/if_perl.xs b/src/if_perl.xs
index f934329..9ac9907 100644
--- a/src/if_perl.xs
+++ b/src/if_perl.xs
@@ -657,7 +657,7 @@
 
 /*
  * perl_win_free
- *	Remove all refences to the window to be destroyed
+ *	Remove all references to the window to be destroyed
  */
     void
 perl_win_free(wp)
diff --git a/src/if_py_both.h b/src/if_py_both.h
index ff4ba0e..0f9f353 100644
--- a/src/if_py_both.h
+++ b/src/if_py_both.h
@@ -2160,7 +2160,7 @@
     static int
 SetBufferLine(buf_T *buf, PyInt n, PyObject *line, PyInt *len_change)
 {
-    /* First of all, we check the thpe of the supplied Python object.
+    /* First of all, we check the type of the supplied Python object.
      * There are three cases:
      *	  1. NULL, or None - this is a deletion.
      *	  2. A string	   - this is a replacement.
@@ -2251,7 +2251,7 @@
     static int
 SetBufferLineList(buf_T *buf, PyInt lo, PyInt hi, PyObject *list, PyInt *len_change)
 {
-    /* First of all, we check the thpe of the supplied Python object.
+    /* First of all, we check the type of the supplied Python object.
      * There are three cases:
      *	  1. NULL, or None - this is a deletion.
      *	  2. A list	   - this is a replacement.
@@ -2428,7 +2428,7 @@
     }
 }
 
-/* Insert a number of lines into the specified buffer after the specifed line.
+/* Insert a number of lines into the specified buffer after the specified line.
  * The line number is in Vim format (1-based). The lines to be inserted are
  * given as a Python list of string objects or as a single string. The lines
  * to be added are checked for validity and correct format. Errors are
@@ -2819,7 +2819,7 @@
 	return NULL;
     }
 
-    /* Ckeck for keyboard interrupt */
+    /* Check for keyboard interrupt */
     if (VimErrorCheck())
 	return NULL;
 
diff --git a/src/if_python.c b/src/if_python.c
index fb2d898..4eb9a4d 100644
--- a/src/if_python.c
+++ b/src/if_python.c
@@ -773,7 +773,7 @@
 
 	/* Remove the element from sys.path that was added because of our
 	 * argv[0] value in PythonMod_Init().  Previously we used an empty
-	 * string, but dependinding on the OS we then get an empty entry or
+	 * string, but depending on the OS we then get an empty entry or
 	 * the current directory in sys.path. */
 	PyRun_SimpleString("import sys; sys.path = filter(lambda x: x != '/must>not&exist', sys.path)");
 
diff --git a/src/if_python3.c b/src/if_python3.c
index 35fcffa..7bfc13b 100644
--- a/src/if_python3.c
+++ b/src/if_python3.c
@@ -766,7 +766,7 @@
 
 	/* Remove the element from sys.path that was added because of our
 	 * argv[0] value in Py3Init_vim().  Previously we used an empty
-	 * string, but dependinding on the OS we then get an empty entry or
+	 * string, but depending on the OS we then get an empty entry or
 	 * the current directory in sys.path.
 	 * Only after vim has been imported, the element does exist in
 	 * sys.path.
diff --git a/src/if_ruby.c b/src/if_ruby.c
index 5142958..d79d0ee 100644
--- a/src/if_ruby.c
+++ b/src/if_ruby.c
@@ -113,7 +113,7 @@
 #endif
 
 /*
- * Backward compatiblity for Ruby 1.8 and earlier.
+ * Backward compatibility for Ruby 1.8 and earlier.
  * Ruby 1.9 does not provide STR2CSTR, instead StringValuePtr is provided.
  * Ruby 1.9 does not provide RXXX(s)->len and RXXX(s)->ptr, instead
  * RXXX_LEN(s) and RXXX_PTR(s) are provided.
@@ -1333,7 +1333,7 @@
     rb_global_variable(&objtbl);
 
     /* The Vim module used to be called "VIM", but "Vim" is better.  Make an
-     * alias "VIM" for backwards compatiblity. */
+     * alias "VIM" for backwards compatibility. */
     mVIM = rb_define_module("Vim");
     rb_define_const(rb_cObject, "VIM", mVIM);
     rb_define_const(mVIM, "VERSION_MAJOR", INT2NUM(VIM_VERSION_MAJOR));
diff --git a/src/main.aap b/src/main.aap
index 340db63..3c91d39 100644
--- a/src/main.aap
+++ b/src/main.aap
@@ -1213,9 +1213,9 @@
     :move gui_mac.rsrc.rsrcfork $(RESDIR)/$(VIMNAME).rsrc
 
 # po/Make_osx.pl says something about generating a Mac message file
-# for Ukrananian.  Would somebody using Mac OS X in Ukranian
+# for Ukrainian.  Would somebody using Mac OS X in Ukrainian
 # *really* be upset that Carbon Vim was not localised in
-# Ukranian?
+# Ukrainian?
 #
 #bundle-language: bundle-dir po/Make_osx.pl
 #	cd po && perl Make_osx.pl --outdir ../$(RESDIR) $(MULTILANG)
diff --git a/src/mbyte.c b/src/mbyte.c
index ed12e76..2059da4 100644
--- a/src/mbyte.c
+++ b/src/mbyte.c
@@ -903,7 +903,7 @@
 {
     switch (enc_dbcs)
     {
-	/* please add classfy routine for your language in here */
+	/* please add classify routine for your language in here */
 
 	case DBCS_JPNU:	/* ? */
 	case DBCS_JPN:
@@ -1003,7 +1003,7 @@
 		 * 26 : Box Drawings
 		 * 27 : Unit Symbols
 		 * 28 : Circled/Parenthesized Letter
-		 * 29 : Hirigana/Katakana
+		 * 29 : Hiragana/Katakana
 		 * 30 : Cyrillic Letter
 		 */
 
@@ -1054,7 +1054,7 @@
 			    return 28;
 		    case 0xAA:
 		    case 0xAB:
-			/* Hirigana/Katakana */
+			/* Hiragana/Katakana */
 			return 29;
 		    case 0xAC:
 			/* Cyrillic Letter */
@@ -4599,7 +4599,7 @@
     }
 
     /* The thing which setting "preedit_start_col" to MAXCOL means that
-     * "preedit_start_col" will be set forcely when calling
+     * "preedit_start_col" will be set forcedly when calling
      * preedit_changed_cb() next time.
      * "preedit_start_col" should not reset with MAXCOL on this part. Vim
      * is simulating the preediting by using add_to_input_str(). when
diff --git a/src/memfile.c b/src/memfile.c
index c87b981..58f4485 100644
--- a/src/memfile.c
+++ b/src/memfile.c
@@ -628,7 +628,7 @@
 	 * sync from the system itself).
 	 */
 #  if defined(__EMX__)
-   error "Dont use fsync with EMX! Read emxdoc.doc or emxfix01.doc for info."
+   error "Don't use fsync with EMX! Read emxdoc.doc or emxfix01.doc for info."
 #  endif
 	if (STRCMP(p_sws, "fsync") == 0)
 	{
@@ -1075,7 +1075,7 @@
 	if (nr > mfp->mf_infile_count)		/* beyond end of file */
 	{
 	    nr = mfp->mf_infile_count;
-	    hp2 = mf_find_hash(mfp, nr);	/* NULL catched below */
+	    hp2 = mf_find_hash(mfp, nr);	/* NULL caught below */
 	}
 	else
 	    hp2 = hp;
@@ -1184,7 +1184,7 @@
     {
 	new_bnum = freep->bh_bnum;
 	/*
-	 * If the page count of the free block was larger, recude it.
+	 * If the page count of the free block was larger, reduce it.
 	 * If the page count matches, remove the block from the free list
 	 */
 	if (freep->bh_page_count > page_count)
@@ -1309,7 +1309,7 @@
     mf_set_ffname(mfp);
 #if defined(MSDOS) || defined(MSWIN)
     /*
-     * A ":!cd e:xxx" may change the directory without us knowning, use the
+     * A ":!cd e:xxx" may change the directory without us knowing, use the
      * full pathname always.  Careful: This frees fname!
      */
     mf_fullname(mfp);
diff --git a/src/memline.c b/src/memline.c
index fecd876..836ee04 100644
--- a/src/memline.c
+++ b/src/memline.c
@@ -3141,7 +3141,7 @@
 	   )
 	    set_keep_msg((char_u *)_(no_lines_msg), 0);
 
-	/* FEAT_BYTEOFF already handled in there, dont worry 'bout it below */
+	/* FEAT_BYTEOFF already handled in there, don't worry 'bout it below */
 	i = ml_replace((linenr_T)1, (char_u *)"", TRUE);
 	buf->b_ml.ml_flags |= ML_EMPTY;
 
diff --git a/src/misc1.c b/src/misc1.c
index 913d5ab..6557345 100644
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -1654,7 +1654,7 @@
 	    if (vim_iswhite(string[0]))
 	    {
 		if (i == 0 || !vim_iswhite(line[i - 1]))
-		    continue;  /* missing shite space */
+		    continue;  /* missing white space */
 		while (vim_iswhite(string[0]))
 		    ++string;
 	    }
diff --git a/src/misc2.c b/src/misc2.c
index 550ab4d..4d350c4 100644
--- a/src/misc2.c
+++ b/src/misc2.c
@@ -2907,7 +2907,7 @@
     int	modifiers = *modp;
 
 #ifdef MACOS
-    /* Command-key really special, No fancynest */
+    /* Command-key really special, no fancynest */
     if (!(modifiers & MOD_MASK_CMD))
 #endif
     if ((modifiers & MOD_MASK_SHIFT) && ASCII_ISALPHA(key))
@@ -2934,7 +2934,7 @@
 	    key = K_ZERO;
     }
 #ifdef MACOS
-    /* Command-key really special, No fancynest */
+    /* Command-key really special, no fancynest */
     if (!(modifiers & MOD_MASK_CMD))
 #endif
     if ((modifiers & MOD_MASK_ALT) && key < 0x80
diff --git a/src/nbdebug.c b/src/nbdebug.c
index 20125ca..1b61c58 100644
--- a/src/nbdebug.c
+++ b/src/nbdebug.c
@@ -17,7 +17,7 @@
  * debugging startup problems because gvim will be started automatically from
  * netbeans and cannot be run directly from a debugger. The only way to debug
  * a gvim started by netbeans is by attaching a debugger to it. Without this
- * tool all starup code will have completed before you can get the pid and
+ * tool all startup code will have completed before you can get the pid and
  * attach.
  *
  * The second tool is a log tool.
diff --git a/src/normal.c b/src/normal.c
index 879d5c3..339b720 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -2513,7 +2513,7 @@
 
 #ifndef FEAT_VISUAL
     /*
-     * ALT is only used for starging/extending Visual mode.
+     * ALT is only used for starting/extending Visual mode.
      */
     if ((mod_mask & MOD_MASK_ALT))
 	return FALSE;
@@ -5084,7 +5084,7 @@
 		}
 		break;
 
-		/* "zE": erease all folds */
+		/* "zE": erase all folds */
     case 'E':	if (foldmethodIsManual(curwin))
 		{
 		    clearFolding(curwin);
@@ -7465,7 +7465,7 @@
     static char_u trans[] = "YyDdCcxdXdAAIIrr";
 
     /* Uppercase means linewise, except in block mode, then "D" deletes till
-     * the end of the line, and "C" replaces til EOL */
+     * the end of the line, and "C" replaces till EOL */
     if (isupper(cap->cmdchar))
     {
 	if (VIsual_mode != Ctrl_V)
@@ -8804,7 +8804,7 @@
 		 * at first, but it's really more what we mean when we say
 		 * 'cw'.
 		 * Another strangeness: When standing on the end of a word
-		 * "ce" will change until the end of the next wordt, but "cw"
+		 * "ce" will change until the end of the next word, but "cw"
 		 * will change only one character! This is done by setting
 		 * flag.
 		 */
@@ -9150,7 +9150,7 @@
 		{
 		    int save_State = State;
 
-		    /* Pretent Insert mode here to allow the cursor on the
+		    /* Pretend Insert mode here to allow the cursor on the
 		     * character past the end of the line */
 		    State = INSERT;
 		    coladvance((colnr_T)MAXCOL);
@@ -9189,7 +9189,7 @@
 	{
 	    int save_State = State;
 
-	    /* Pretent Insert mode here to allow the cursor on the
+	    /* Pretend Insert mode here to allow the cursor on the
 	     * character past the end of the line */
 	    State = INSERT;
 	    coladvance(getviscol());
diff --git a/src/ops.c b/src/ops.c
index 2ab9044..57c4b0a 100644
--- a/src/ops.c
+++ b/src/ops.c
@@ -398,7 +398,7 @@
 #ifdef FEAT_RIGHTLEFT
     int			old_p_ri = p_ri;
 
-    p_ri = 0;			/* don't want revins in ident */
+    p_ri = 0;			/* don't want revins in indent */
 #endif
 
     State = INSERT;		/* don't want REPLACE for State */
diff --git a/src/os_amiga.c b/src/os_amiga.c
index 0b63ea1..e5c7661 100644
--- a/src/os_amiga.c
+++ b/src/os_amiga.c
@@ -118,7 +118,7 @@
 }
 
 /*
- * mch_inchar(): low level input funcion.
+ * mch_inchar(): low level input function.
  * Get a characters from the keyboard.
  * If time == 0 do not wait for characters.
  * If time == n wait a short time for characters.
diff --git a/src/os_mac.h b/src/os_mac.h
index cf575dd..78b79c2 100644
--- a/src/os_mac.h
+++ b/src/os_mac.h
@@ -45,7 +45,7 @@
 /* Get stat.h or something similar. Comment: How come some OS get in in vim.h */
 # include <sys/stat.h>
 /* && defined(HAVE_CURSE) */
-/* The curses.h from MacOS X provides by default some BACKWARD compatibilty
+/* The curses.h from MacOS X provides by default some BACKWARD compatibility
  * definition which can cause us problem later on. So we undefine a few of them. */
 # include <curses.h>
 # undef reg
diff --git a/src/os_msdos.c b/src/os_msdos.c
index 209bdd6..8cc0ecc 100644
--- a/src/os_msdos.c
+++ b/src/os_msdos.c
@@ -702,7 +702,7 @@
  * If Vim should work over the serial line after a 'ctty com1' we must use
  * kbhit() and getch(). (jw)
  * Usually kbhit() is not used, because then CTRL-C and CTRL-P
- * will be catched by DOS (mool).
+ * will be caught by DOS (mool).
  *
  * return TRUE if a character is available, FALSE otherwise
  */
@@ -971,7 +971,7 @@
 }
 
 /*
- * mch_inchar(): low level input funcion.
+ * mch_inchar(): low level input function.
  * Get a characters from the keyboard.
  * If time == 0 do not wait for characters.
  * If time == n wait a short time for characters.
@@ -993,7 +993,7 @@
 
     /*
      * if we got a ctrl-C when we were busy, there will be a "^C" somewhere
-     * on the sceen, so we need to redisplay it.
+     * on the screen, so we need to redisplay it.
      */
     if (delayed_redraw)
     {
@@ -1745,7 +1745,7 @@
 mch_setmouse(int on)
 {
     mouse_active = on;
-    mouse_hidden = TRUE;	/* dont show it until moved */
+    mouse_hidden = TRUE;	/* don't show it until moved */
 }
 #endif
 
@@ -2438,7 +2438,7 @@
     long    start_time;
     int	    tick_count;
 
-    /* int 02xf, AX = 0x1701 attempts to open the Windows clipboard.  Upon
+    /* int 0x2f, AX = 0x1701 attempts to open the Windows clipboard.  Upon
      * return from the interrupt, if AX is non-zero, the clipboard was
      * successfully opened.  If AX is zero, the clipboard could not be opened
      * because it is currently in use by another process.
@@ -2533,7 +2533,7 @@
 {
     __dpmi_regs  dpmi_regs;
 
-    /* int 02xf, AX = 0x1702 attempts to empty the Windows clipboard.  Upon
+    /* int 0x2f, AX = 0x1702 attempts to empty the Windows clipboard.  Upon
      * return from the interrupt, if AX == 0, the clipboard could not be
      * emptied (for some reason).
      */
@@ -2616,7 +2616,7 @@
     case CF_TEXT:		    /* Windows text */
     case CF_OEMTEXT:		    /* DOS (OEM) text */
 
-	/* int 02xf, AX = 0x1704 returns the number of bytes of data currently
+	/* int 0x2f, AX = 0x1704 returns the number of bytes of data currently
 	 * on the Windows clipboard, for the specified format.  Upon return
 	 * from the interrupt, DX:AX = the number of bytes, rounded up to the
 	 * nearest multiple of 32.
@@ -2820,7 +2820,7 @@
 	clip_data_size);		/* how many bytes to copy */
 
     /* Send data from the DOS transfer buffer to the Windows clipboard.
-     * int 02xf, AX = 0x1703 sends SI:CX bytes of data from the buffer
+     * int 0x2f, AX = 0x1703 sends SI:CX bytes of data from the buffer
      * at ES:BX, to the clipboard.
      */
     dpmi_regs.x.ax = 0x1703;			/* send clipboard data */
diff --git a/src/os_mswin.c b/src/os_mswin.c
index e8000aa..3b2ebe4 100644
--- a/src/os_mswin.c
+++ b/src/os_mswin.c
@@ -1794,7 +1794,7 @@
  *
  * So we create a hidden window, and arrange to destroy it on exit.
  */
-HWND message_window = 0;	    /* window that's handling messsages */
+HWND message_window = 0;	    /* window that's handling messages */
 
 #define VIM_CLASSNAME      "VIM_MESSAGES"
 #define VIM_CLASSNAME_LEN  (sizeof(VIM_CLASSNAME) - 1)
@@ -1857,7 +1857,7 @@
 
 static int save_reply(HWND server, char_u *reply, int expr);
 
-/*s
+/*
  * The window procedure for the hidden message window.
  * It handles callback messages and notifications from servers.
  * In order to process these messages, it is necessary to run a
@@ -2603,7 +2603,7 @@
 
     ReleaseDC(hwnd, hdc);
 
-    /* If we couldn't find a useable font, return failure */
+    /* If we couldn't find a usable font, return failure */
     if (n == 1)
 	return FAIL;
 
diff --git a/src/os_win16.h b/src/os_win16.h
index 98f0ece..c5a89c8 100644
--- a/src/os_win16.h
+++ b/src/os_win16.h
@@ -50,7 +50,7 @@
 #endif
 
 /* toupper() is not really broken, but it's very slow.	Probably because of
- * using unicde characters on Windows NT */
+ * using unicode characters on Windows NT */
 #define BROKEN_TOUPPER
 
 #define FNAME_ILLEGAL "\"*?><|" /* illegal characters in a file name */
diff --git a/src/os_win32.c b/src/os_win32.c
index d16cab3..a975df5 100644
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -161,7 +161,7 @@
 
 #ifndef PROTO
 
-/* Enable common dialogs input unicode from IME if posible. */
+/* Enable common dialogs input unicode from IME if possible. */
 #ifdef FEAT_MBYTE
 LRESULT (WINAPI *pDispatchMessage)(CONST MSG *) = DispatchMessage;
 BOOL (WINAPI *pGetMessage)(LPMSG, HWND, UINT, UINT) = GetMessage;
@@ -1032,7 +1032,7 @@
 	    DWORD dwLR = (pmer->dwButtonState & LEFT_RIGHT);
 
 	    /* if either left or right button only is pressed, see if the
-	     * the next mouse event has both of them pressed */
+	     * next mouse event has both of them pressed */
 	    if (dwLR == LEFT || dwLR == RIGHT)
 	    {
 		for (;;)
diff --git a/src/os_win32.h b/src/os_win32.h
index f672ea8..6869747 100644
--- a/src/os_win32.h
+++ b/src/os_win32.h
@@ -201,7 +201,7 @@
 
 #ifndef PROTO
 
-/* Enable common dialogs input unicode from IME if posible. */
+/* Enable common dialogs input unicode from IME if possible. */
 #ifdef FEAT_MBYTE
     /* The variables are defined in os_win32.c. */
 extern LRESULT (WINAPI *pDispatchMessage)(CONST MSG *);
diff --git a/src/quickfix.c b/src/quickfix.c
index 0de6fe0..86ec338 100644
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -3235,7 +3235,7 @@
     mch_dirname(dirname_start, MAXPATHL);
 
 #ifdef FEAT_AUTOCMD
-     /* Remeber the value of qf_start, so that we can check for autocommands
+     /* Remember the value of qf_start, so that we can check for autocommands
       * changing the current quickfix list. */
     cur_qf_start = qi->qf_lists[qi->qf_curlist].qf_start;
 #endif
diff --git a/src/screen.c b/src/screen.c
index 055a46d..cc8afa6 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -4044,7 +4044,7 @@
 
 		/* If a double-width char doesn't fit at the left side display
 		 * a '<' in the first column.  Don't do this for unprintable
-		 * charactes. */
+		 * characters. */
 		if (n_skip > 0 && mb_l > 1 && n_extra == 0)
 		{
 		    n_extra = 1;
diff --git a/src/search.c b/src/search.c
index f9a5b84..0e4f424 100644
--- a/src/search.c
+++ b/src/search.c
@@ -73,7 +73,7 @@
 {
     char_u	    *pat;	/* the pattern (in allocated memory) or NULL */
     int		    magic;	/* magicness of the pattern */
-    int		    no_scs;	/* no smarcase for this pattern */
+    int		    no_scs;	/* no smartcase for this pattern */
     struct soffset  off;
 };
 
@@ -3546,7 +3546,7 @@
 
 /*
  * Find block under the cursor, cursor at end.
- * "what" and "other" are two matching parenthesis/paren/etc.
+ * "what" and "other" are two matching parenthesis/brace/etc.
  */
     int
 current_block(oap, count, include, what, other)
diff --git a/src/spell.c b/src/spell.c
index ea47b1b..29356bf 100644
--- a/src/spell.c
+++ b/src/spell.c
@@ -4228,7 +4228,7 @@
     ga_init2(&ga, sizeof(langp_T), 2);
     clear_midword(wp);
 
-    /* Make a copy of 'spellang', the SpellFileMissing autocommands may change
+    /* Make a copy of 'spelllang', the SpellFileMissing autocommands may change
      * it under our fingers. */
     spl_copy = vim_strsave(wp->w_s->b_p_spl);
     if (spl_copy == NULL)
@@ -7645,7 +7645,7 @@
 
 	/* Compress both trees.  Either they both have many nodes, which makes
 	 * compression useful, or one of them is small, which means
-	 * compression goes fast.  But when filling the souldfold word tree
+	 * compression goes fast.  But when filling the soundfold word tree
 	 * there is no keep-case tree. */
 	wordtree_compress(spin, spin->si_foldroot);
 	if (affixID >= 0)
@@ -8671,7 +8671,7 @@
     unsigned	words_done = 0;
     int		wordcount[MAXWLEN];
 
-    /* We use si_foldroot for the souldfolded trie. */
+    /* We use si_foldroot for the soundfolded trie. */
     spin->si_foldroot = wordtree_alloc(spin);
     if (spin->si_foldroot == NULL)
 	return FAIL;
@@ -13019,7 +13019,7 @@
 
 /*
  * Combine the list of suggestions in su->su_ga and su->su_sga.
- * They are intwined.
+ * They are entwined.
  */
     static void
 score_combine(su)
@@ -13457,7 +13457,7 @@
 
 		/* Add a small penalty for changing the first letter from
 		 * lower to upper case.  Helps for "tath" -> "Kath", which is
-		 * less common thatn "tath" -> "path".  Don't do it when the
+		 * less common than "tath" -> "path".  Don't do it when the
 		 * letter is the same, that has already been counted. */
 		gc = PTR2CHAR(p);
 		if (SPELL_ISUPPER(gc))
diff --git a/src/structs.h b/src/structs.h
index 6305129..5db7720 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -1215,7 +1215,7 @@
 #ifdef FEAT_SYN_HL
     hashtab_T	b_keywtab;		/* syntax keywords hash table */
     hashtab_T	b_keywtab_ic;		/* idem, ignore case */
-    int		b_syn_error;		/* TRUE when error occured in HL */
+    int		b_syn_error;		/* TRUE when error occurred in HL */
     int		b_syn_ic;		/* ignore case for :syn cmds */
     int		b_syn_spell;		/* SYNSPL_ values */
     garray_T	b_syn_patterns;		/* table for syntax patterns */
diff --git a/src/syntax.c b/src/syntax.c
index 4c69769..ed68960 100644
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -6069,7 +6069,7 @@
     static int	depth = 0;
     int		r;
 
-    /* If spp has a "containedin" list and "cur_si" is in it, return TRUE. */
+    /* If ssp has a "containedin" list and "cur_si" is in it, return TRUE. */
     if (cur_si != NULL && ssp->cont_in_list != NULL
 					    && !(cur_si->si_flags & HL_MATCH))
     {
diff --git a/src/version.c b/src/version.c
index fc44086..fea150e 100644
--- a/src/version.c
+++ b/src/version.c
@@ -729,6 +729,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    925,
+/**/
     924,
 /**/
     923,
diff --git a/src/window.c b/src/window.c
index 2b059bc..7fd434e 100644
--- a/src/window.c
+++ b/src/window.c
@@ -3687,7 +3687,7 @@
 
 /*
  * Prepare for leaving the current tab page.
- * When autocomands change "curtab" we don't leave the tab page and return
+ * When autocommands change "curtab" we don't leave the tab page and return
  * FAIL.
  * Careful: When OK is returned need to get a new tab page very very soon!
  */
