diff --git a/runtime/plugin/matchparen.vim b/runtime/plugin/matchparen.vim
index c9cf903..2965ad1 100644
--- a/runtime/plugin/matchparen.vim
+++ b/runtime/plugin/matchparen.vim
@@ -5,7 +5,7 @@
 " Exit quickly when:
 " - this plugin was already loaded (or disabled)
 " - when 'compatible' is set
-" - the "CursorMoved" autocmd event is not availble.
+" - the "CursorMoved" autocmd event is not available.
 if exists("g:loaded_matchparen") || &cp || !exists("##CursorMoved")
   finish
 endif
diff --git a/runtime/tools/vim_vs_net.cmd b/runtime/tools/vim_vs_net.cmd
index 6307d95..bea6353 100644
--- a/runtime/tools/vim_vs_net.cmd
+++ b/runtime/tools/vim_vs_net.cmd
@@ -7,12 +7,12 @@
 @rem      Arguments - +$(CurLine) $(ItemPath)
 @rem      Init Dir  - Empty
 @rem
-@rem Coutesy of Brian Sturk
+@rem Courtesy of Brian Sturk
 @rem
 @rem --remote-silent +%1 is a command +954, move ahead 954 lines
 @rem --remote-silent %2 full path to file
 @rem In Vim
-@rem    :h --remote-silent for mor details
+@rem    :h --remote-silent for more details
 @rem
 @rem --servername VS_NET
 @rem This will create a new instance of vim called VS_NET.  So if you
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!
  */
diff --git a/vimtutor.com b/vimtutor.com
index 0e6854b..71fdba4 100755
--- a/vimtutor.com
+++ b/vimtutor.com
@@ -30,7 +30,7 @@
 $ !
 $	if f$search ("vim:vim.exe") .eqs. ""
 $	then
-$	    write sys$error "Error - Can't run tutoral. VIM not found."
+$	    write sys$error "Error - Can't run tutorial. VIM not found."
 $	    exit
 $	endif
 $ !
