diff --git a/src/autocmd.c b/src/autocmd.c
index 6ed2971..7e8a692 100644
--- a/src/autocmd.c
+++ b/src/autocmd.c
@@ -1584,8 +1584,8 @@
 	    curbuf = curwin->w_buffer;
 	    if (win_valid(aco->save_prevwin))
 		prevwin = aco->save_prevwin;
-	    // In case the autocommand move the cursor to a position that that
-	    // not exist in curbuf.
+	    // In case the autocommand moves the cursor to a position that
+	    // does not exist in curbuf.
 	    check_cursor();
 	}
     }
diff --git a/src/buffer.c b/src/buffer.c
index 15fbc17..d190bdf 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -4951,7 +4951,7 @@
  * When resolving a link both "*sfname" and "*ffname" will point to the same
  * allocated memory.
  * The "*ffname" and "*sfname" pointer values on call will not be freed.
- * Note that the resulting "*ffname" pointer should be considered not allocaed.
+ * Note that the resulting "*ffname" pointer should be considered not allocated.
  */
     void
 fname_expand(
diff --git a/src/cindent.c b/src/cindent.c
index dd41672..c37682c 100644
--- a/src/cindent.c
+++ b/src/cindent.c
@@ -1778,10 +1778,10 @@
     // should be located.
     buf->b_ind_continuation = sw;
 
-    // Spaces from the indent of the line with an unclosed parentheses.
+    // Spaces from the indent of the line with an unclosed parenthesis.
     buf->b_ind_unclosed = sw * 2;
 
-    // Spaces from the indent of the line with an unclosed parentheses, which
+    // Spaces from the indent of the line with an unclosed parenthesis, which
     // itself is also unclosed.
     buf->b_ind_unclosed2 = sw;
 
@@ -1795,7 +1795,7 @@
     buf->b_ind_unclosed_wrapped = 0;
 
     // Suppress ignoring white space when lining up with the character after
-    // an unclosed parentheses.
+    // an unclosed parenthesis.
     buf->b_ind_unclosed_whiteok = 0;
 
     // Indent a closing parentheses under the line start of the matching
@@ -2725,7 +2725,7 @@
 		if (curwin->w_cursor.lnum <= ourscope)
 		{
 		    // We reached end of scope:
-		    // If looking for a enum or structure initialization
+		    // If looking for an enum or structure initialization
 		    // go further back:
 		    // If it is an initializer (enum xxx or xxx =), then
 		    // don't add ind_continuation, otherwise it is a variable
@@ -2785,7 +2785,7 @@
 			    if (terminated == ',')
 				break;
 
-			    // if it es a enum declaration or an assignment,
+			    // if it is an enum declaration or an assignment,
 			    // we are done.
 			    if (terminated != ';' && cin_isinit())
 				break;
@@ -3083,7 +3083,7 @@
 		//   123,
 		//   sizeof
 		//	  here
-		// Otherwise check whether it is a enumeration or structure
+		// Otherwise check whether it is an enumeration or structure
 		// initialisation (not indented) or a variable declaration
 		// (indented).
 		terminated = cin_isterminated(l, FALSE, TRUE);
diff --git a/src/crypt.c b/src/crypt.c
index 43a7167..729073a 100644
--- a/src/crypt.c
+++ b/src/crypt.c
@@ -206,7 +206,7 @@
 }
 
 /*
- * Get crypt method specifc length of the file header in bytes.
+ * Get crypt method specific length of the file header in bytes.
  */
     int
 crypt_get_header_len(int method_nr)
diff --git a/src/diff.c b/src/diff.c
index ece7bf5..120a544 100644
--- a/src/diff.c
+++ b/src/diff.c
@@ -419,7 +419,7 @@
 			off = 0;
 			if (last < line2)
 			{
-			    /* 2. delete at end of of diff */
+			    /* 2. delete at end of diff */
 			    dp->df_count[idx] -= last - lnum_deleted + 1;
 			    if (dp->df_next != NULL
 				    && dp->df_next->df_lnum[idx] - 1 <= line2)
diff --git a/src/getchar.c b/src/getchar.c
index 07383da..31843f6 100644
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -1504,7 +1504,7 @@
 }
 
 /*
- * updatescipt() is called when a character can be written into the script file
+ * updatescript() is called when a character can be written into the script file
  * or when we have waited some time for a character (c == 0)
  *
  * All the changed memfiles are synced if c == 0 or when the number of typed
diff --git a/src/globals.h b/src/globals.h
index d2c1e33..2244503 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -99,7 +99,7 @@
 // Array with size Rows x Columns containing zindex of popups.
 EXTERN short	*popup_mask INIT(= NULL);
 EXTERN short	*popup_mask_next INIT(= NULL);
-// Array with flags for tansparent cells of current popup.
+// Array with flags for transparent cells of current popup.
 EXTERN char	*popup_transparent INIT(= NULL);
 
 // Flag set to TRUE when popup_mask needs to be updated.
@@ -393,7 +393,7 @@
  * character just after the match in the last line.
  */
 EXTERN int	highlight_match INIT(= FALSE);	// show search match pos
-EXTERN linenr_T	search_match_lines;		// lines of of matched string
+EXTERN linenr_T	search_match_lines;		// lines of matched string
 EXTERN colnr_T	search_match_endcol;		// col nr of match end
 #ifdef FEAT_SEARCH_EXTRA
 EXTERN linenr_T	search_first_line INIT(= 0);	  // for :{FIRST},{last}s/pat
diff --git a/src/gui_gtk_x11.c b/src/gui_gtk_x11.c
index 1bf836f..d57cefa 100644
--- a/src/gui_gtk_x11.c
+++ b/src/gui_gtk_x11.c
@@ -2895,7 +2895,7 @@
      *
      * Naturally, configure events propagated to here like that are fallacious
      * and, as a matter of fact, they trigger a geometric collapse of
-     * gui.drawarea in fullscreen and miximized modes.
+     * gui.drawarea in fullscreen and maximized modes.
      *
      * To filter out such nuisance events, we are making use of the fact that
      * the field send_event of such GdkEventConfigures is set to FALSE in
diff --git a/src/highlight.c b/src/highlight.c
index 1333362..3c0eb19 100644
--- a/src/highlight.c
+++ b/src/highlight.c
@@ -3682,7 +3682,8 @@
 	return -1;
     if (id < -1 || id == 0)
     {
-	semsg(_("E799: Invalid ID: %d (must be greater than or equal to 1)"), id);
+	semsg(_("E799: Invalid ID: %d (must be greater than or equal to 1)"),
+									   id);
 	return -1;
     }
     if (id != -1)
@@ -4346,7 +4347,7 @@
  * After end, check for start/end of next match.
  * When another match, have to check for start again.
  * Watch out for matching an empty string!
- * Return the udpated search_attr.
+ * Return the updated search_attr.
  */
     int
 update_search_hl(
diff --git a/src/insexpand.c b/src/insexpand.c
index 31b952b..e42819a 100644
--- a/src/insexpand.c
+++ b/src/insexpand.c
@@ -1612,7 +1612,7 @@
 #ifdef FEAT_SPELL
 	spell_bad_len = 0;	// need to redetect bad word
 #endif
-	// Matches were cleared, need to search for them now.  Befor drawing
+	// Matches were cleared, need to search for them now.  Before drawing
 	// the popup menu display the changed text before the cursor.  Set
 	// "compl_restarting" to avoid that the first match is inserted.
 	pum_call_update_screen();
@@ -2858,7 +2858,7 @@
 
 	    //	Buffers other than curbuf are scanned from the beginning or the
 	    //	end but never from the middle, thus setting nowrapscan in this
-	    //	buffers is a good idea, on the other hand, we always set
+	    //	buffer is a good idea, on the other hand, we always set
 	    //	wrapscan for curbuf to avoid missing matches -- Acevedo,Webb
 	    save_p_ws = p_ws;
 	    if (ins_buf != curbuf)
diff --git a/src/macros.h b/src/macros.h
index f670046..5da0e5c 100644
--- a/src/macros.h
+++ b/src/macros.h
@@ -335,7 +335,7 @@
 	} \
     } while (0)
 
-/* Wether a command index indicates a user command. */
+/* Whether a command index indicates a user command. */
 #define IS_USER_CMDIDX(idx) ((int)(idx) < 0)
 
 // Give an error in curwin is a popup window and evaluate to TRUE.
diff --git a/src/map.c b/src/map.c
index 74fc60c..1b2660f 100644
--- a/src/map.c
+++ b/src/map.c
@@ -1924,7 +1924,7 @@
     save_name = sourcing_name;
     sourcing_name = (char_u *)"mappings"; // avoids giving error messages
 
-    // This this once for each buffer, and then once for global
+    // Do this once for each buffer, and then once for global
     // mappings/abbreviations with bp == NULL
     for (bp = firstbuf; ; bp = bp->b_next)
     {
diff --git a/src/memline.c b/src/memline.c
index 8772ad2..32cbb7e 100644
--- a/src/memline.c
+++ b/src/memline.c
@@ -2318,7 +2318,7 @@
 	ret = FALSE;
 
 #if defined(UNIX) || defined(MSWIN)
-    // process must known and not be running
+    // process must be known and not be running
     pid = char_to_long(b0.b0_pid);
     if (pid == 0L || mch_process_running(pid))
 	ret = FALSE;
diff --git a/src/message.c b/src/message.c
index 8af5d7b..4a3389c 100644
--- a/src/message.c
+++ b/src/message.c
@@ -1616,7 +1616,7 @@
 msg_outtrans_special(
     char_u	*strstart,
     int		from,	// TRUE for lhs of a mapping
-    int		maxlen) // screen columns, 0 for unlimeted
+    int		maxlen) // screen columns, 0 for unlimited
 {
     char_u	*str = strstart;
     int		retval = 0;
diff --git a/src/option.c b/src/option.c
index 1140a01..935ee2d 100644
--- a/src/option.c
+++ b/src/option.c
@@ -4877,7 +4877,7 @@
 	    home_replace(NULL, *valuep, buf, size, FALSE);
 
 	    // If the option value is longer than MAXPATHL, we need to append
-	    // earch comma separated part of the option separately, so that it
+	    // each comma separated part of the option separately, so that it
 	    // can be expanded when read back.
 	    if (size >= MAXPATHL && (flags & P_COMMA) != 0
 					   && vim_strchr(*valuep, ',') != NULL)
diff --git a/src/os_unix.c b/src/os_unix.c
index a3c09f7..e8fe90a 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -877,7 +877,7 @@
 static JMP_BUF lc_jump_env;
 
 # ifdef SIGHASARG
-// Caught signal number, 0 when no was signal caught; used for mch_libcall().
+// Caught signal number, 0 when no signal was caught; used for mch_libcall().
 // Volatile because it is used in signal handlers.
 static volatile sig_atomic_t lc_signal;
 # endif
@@ -3067,7 +3067,7 @@
 	return 0;
 #ifdef VMS
     /* Like on Unix system file can have executable rights but not necessarily
-     * be an executable, but on Unix is not a default for an ordianry file to
+     * be an executable, but on Unix is not a default for an ordinary file to
      * have an executable flag - on VMS it is in most cases.
      * Therefore, this check does not have any sense - let keep us to the
      * conventions instead:
diff --git a/src/pty.c b/src/pty.c
index a2162e2..86fbca2 100644
--- a/src/pty.c
+++ b/src/pty.c
@@ -15,7 +15,7 @@
  * The parts that are not used in Vim have been deleted.
  * See the "screen" sources for the complete stuff.
  *
- * This specific version is distibuted under the Vim license (attribution by
+ * This specific version is distributed under the Vim license (attribution by
  * Juergen Weigert), the GPL applies to the original version, see the
  * copyright notice below.
  */
diff --git a/src/quickfix.c b/src/quickfix.c
index 7b64f45..50da45f 100644
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -1861,7 +1861,7 @@
 
     // If the current entry is not the last entry, delete entries beyond
     // the current entry.  This makes it possible to browse in a tree-like
-    // way with ":grep'.
+    // way with ":grep".
     while (qi->qf_listcount > qi->qf_curlist + 1)
 	qf_free(&qi->qf_lists[--qi->qf_listcount]);
 
@@ -5224,7 +5224,7 @@
 	int		*errornr)
 {
     if (qf_entry_after_pos(qfp, pos, linewise))
-	// First entry is after postion 'pos'
+	// First entry is after position 'pos'
 	return qfp;
 
     // Find the entry just before or at the position 'pos'
diff --git a/src/regexp_nfa.c b/src/regexp_nfa.c
index 0712f4e..685a6d7 100644
--- a/src/regexp_nfa.c
+++ b/src/regexp_nfa.c
@@ -3213,7 +3213,7 @@
 
     if (nfa_calc_size == FALSE)
     {
-	// Allocate space for the stack. Max states on the stack: "nstate'.
+	// Allocate space for the stack. Max states on the stack: "nstate".
 	stack = ALLOC_MULT(Frag_T, nstate + 1);
 	if (stack == NULL)
 	    return NULL;
diff --git a/src/register.c b/src/register.c
index 554af82..2e83840 100644
--- a/src/register.c
+++ b/src/register.c
@@ -899,8 +899,8 @@
 	    *rp = ((clip_unnamed & CLIP_UNNAMED_PLUS) && clip_plus.available)
 								  ? '+' : '*';
 	else
-	    *rp = ((clip_unnamed_saved & CLIP_UNNAMED_PLUS) && clip_plus.available)
-								  ? '+' : '*';
+	    *rp = ((clip_unnamed_saved & CLIP_UNNAMED_PLUS)
+					   && clip_plus.available) ? '+' : '*';
     }
     if (!clip_star.available && *rp == '*')
 	*rp = 0;
@@ -1288,7 +1288,7 @@
 		&& !oap->block_mode
 		&& yanklines == 1)
 	    yanklines = 0;
-	// Some versions of Vi use ">=" here, some don't... 
+	// Some versions of Vi use ">=" here, some don't...
 	if (yanklines > p_report)
 	{
 	    char namebuf[100];
diff --git a/src/spellsuggest.c b/src/spellsuggest.c
index a5f8b92..9d6df79 100644
--- a/src/spellsuggest.c
+++ b/src/spellsuggest.c
@@ -990,7 +990,7 @@
     {
 	if (sps_flags & SPS_BEST)
 	    // Adjust the word score for the suggestions found so far for how
-	    // they sounds like.
+	    // they sound like.
 	    rescore_suggestions(su);
 
 	// While going through the soundfold tree "su_maxscore" is the score
diff --git a/src/structs.h b/src/structs.h
index 265f0c4..124b059 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -3497,7 +3497,7 @@
 #ifdef FEAT_GUI_MAC
 //  MenuHandle	id;
 //  short	index;		    // the item index within the father menu
-    short	menu_id;	    // the menu id to which this item belong
+    short	menu_id;	    // the menu id to which this item belongs
     short	submenu_id;	    // the menu id of the children (could be
 				    // get through some tricks)
     MenuHandle	menu_handle;
diff --git a/src/textprop.c b/src/textprop.c
index 7029daa..914b9e0 100644
--- a/src/textprop.c
+++ b/src/textprop.c
@@ -12,13 +12,12 @@
  *
  * TODO:
  * - Adjust text property column and length when text is inserted/deleted.
- *   -> :substitute with multiple matches, issue #4427
  *   -> a :substitute with a multi-line match
  *   -> search for changed_bytes() from misc1.c
  *   -> search for mark_col_adjust()
  * - Perhaps we only need TP_FLAG_CONT_NEXT and can drop TP_FLAG_CONT_PREV?
- * - Add an arrray for global_proptypes, to quickly lookup a prop type by ID
- * - Add an arrray for b_proptypes, to quickly lookup a prop type by ID
+ * - Add an array for global_proptypes, to quickly lookup a prop type by ID
+ * - Add an array for b_proptypes, to quickly lookup a prop type by ID
  * - Checking the text length to detect text properties is slow.  Use a flag in
  *   the index, like DB_MARKED?
  * - Also test line2byte() with many lines, so that ml_updatechunk() is taken
@@ -126,7 +125,7 @@
  * When the argument is not used or "bufnr" is not present then "buf" is
  * unchanged.
  * If "bufnr" is valid or not present return OK.
- * When "arg" is not a dict or "bufnr" is invalide return FAIL.
+ * When "arg" is not a dict or "bufnr" is invalid return FAIL.
  */
     static int
 get_bufnr_from_arg(typval_T *arg, buf_T **buf)
diff --git a/src/ui.c b/src/ui.c
index 0170df7..2d33f7b 100644
--- a/src/ui.c
+++ b/src/ui.c
@@ -913,7 +913,7 @@
 
     if (clip_did_set_selection)
     {
-	clip_unnamed = FALSE;
+	clip_unnamed = 0;
 	clip_did_set_selection = FALSE;
     }
 }
@@ -941,7 +941,7 @@
     {
 	clip_did_set_selection = TRUE;
 	clip_unnamed = clip_unnamed_saved;
-	clip_unnamed_saved = FALSE;
+	clip_unnamed_saved = 0;
 	if (clipboard_needs_update)
 	{
 	    /* only store something in the clipboard,
diff --git a/src/undo.c b/src/undo.c
index 64fb205..85c041e 100644
--- a/src/undo.c
+++ b/src/undo.c
@@ -341,7 +341,7 @@
 }
 
 /*
- * Get the undolevle value for the current buffer.
+ * Get the undolevel value for the current buffer.
  */
     static long
 get_undolevel(void)
diff --git a/src/version.c b/src/version.c
index 704eee0..4b1acc5 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2243,
+/**/
     2242,
 /**/
     2241,
diff --git a/src/vim.h b/src/vim.h
index de5873c..97c1f6c 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -325,7 +325,7 @@
 typedef unsigned int	int_u;
 
 // Older systems do not have support for long long
-// use a typedef instead of hadcoded long long
+// use a typedef instead of hard-coded long long
 #ifdef HAVE_NO_LONG_LONG
  typedef long long_long_T;
  typedef long unsigned long_long_u_T;
diff --git a/src/viminfo.c b/src/viminfo.c
index a49bb01..fd2be5f 100644
--- a/src/viminfo.c
+++ b/src/viminfo.c
@@ -2307,7 +2307,7 @@
 			else
 			{
 			    // No timestamp, must be written by an older Vim.
-			    // Assume all remaining buffers are older then
+			    // Assume all remaining buffers are older than
 			    // ours.
 			    while (count < num_marked_files
 					    && buflist_used < buflist->ga_len)
@@ -3201,7 +3201,7 @@
 	    {
 		if (st_old.st_uid != tmp_st.st_uid)
 		    // Changing the owner might fail, in which case the
-		    // file will now owned by the current user, oh well.
+		    // file will now be owned by the current user, oh well.
 		    vim_ignored = fchown(fileno(fp_out), st_old.st_uid, -1);
 		if (st_old.st_gid != tmp_st.st_gid
 			&& fchown(fileno(fp_out), -1, st_old.st_gid) == -1)
