diff --git a/src/arglist.c b/src/arglist.c
index fbd99af..5c22369 100644
--- a/src/arglist.c
+++ b/src/arglist.c
@@ -969,9 +969,9 @@
     old_curwin = curwin;
     old_curtab = curtab;
 
-# ifdef FEAT_GUI
+#ifdef FEAT_GUI
     need_mouse_correct = TRUE;
-# endif
+#endif
 
     // Try closing all windows that are not in the argument list.
     // Also close windows that are not full width;
diff --git a/src/change.c b/src/change.c
index 9f1705f..25a0841 100644
--- a/src/change.c
+++ b/src/change.c
@@ -1638,9 +1638,9 @@
 #ifdef FEAT_CINDENT
     // May do indenting after opening a new line.
     do_cindent = !p_paste && (curbuf->b_p_cin
-#  ifdef FEAT_EVAL
+# ifdef FEAT_EVAL
 		    || *curbuf->b_p_inde != NUL
-#  endif
+# endif
 		)
 	    && in_cinkeys(dir == FORWARD
 		? KEY_OPEN_FORW
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index d9d532c..91a2fa7 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -99,9 +99,9 @@
 	    IObuff[len++] = ' ';
 	IObuff[len++] = '<';
 	if (enc_utf8 && utf_iscomposing(c)
-# ifdef USE_GUI
+#ifdef USE_GUI
 		&& !gui.in_use
-# endif
+#endif
 		)
 	    IObuff[len++] = ' '; // draw composing char on top of a space
 	len += (*mb_char2bytes)(c, IObuff + len);
diff --git a/src/gui.c b/src/gui.c
index 0cce1f1..fb589fc 100644
--- a/src/gui.c
+++ b/src/gui.c
@@ -292,11 +292,11 @@
     }
     // Child
 
-#ifdef FEAT_GUI_GTK
+# ifdef FEAT_GUI_GTK
     // Call gtk_init_check() here after fork(). See gui_init_check().
     if (gui_mch_init_check() != OK)
 	getout_preserve_modified(1);
-#endif
+# endif
 
 # if defined(HAVE_SETSID) || defined(HAVE_SETPGID)
     /*
@@ -348,11 +348,11 @@
 gui_read_child_pipe(int fd)
 {
     long	bytes_read;
-#define READ_BUFFER_SIZE 10
+# define READ_BUFFER_SIZE 10
     char	buffer[READ_BUFFER_SIZE];
 
     bytes_read = read_eintr(fd, buffer, READ_BUFFER_SIZE - 1);
-#undef READ_BUFFER_SIZE
+# undef READ_BUFFER_SIZE
     close(fd);
     if (bytes_read < 0)
 	return GUI_CHILD_IO_ERROR;
@@ -459,7 +459,7 @@
     gui.scrollbar_width = gui.scrollbar_height = SB_DEFAULT_WIDTH;
     gui.prev_wrap = -1;
 
-# ifdef FEAT_GUI_GTK
+#ifdef FEAT_GUI_GTK
     CLEAR_FIELD(gui.ligatures_map);
 #endif
 
@@ -1435,7 +1435,7 @@
 	text_area_y += gui.menu_height;
 #endif
 
-# if defined(FEAT_GUI_TABLINE) && (defined(FEAT_GUI_MSWIN) \
+#if defined(FEAT_GUI_TABLINE) && (defined(FEAT_GUI_MSWIN) \
 	|| defined(FEAT_GUI_MOTIF))
     if (gui_has_tabline())
 	text_area_y += gui.tabline_height;
@@ -1453,7 +1453,7 @@
     }
 #endif
 
-# if defined(FEAT_GUI_TABLINE) && defined(FEAT_GUI_HAIKU)
+#if defined(FEAT_GUI_TABLINE) && defined(FEAT_GUI_HAIKU)
     gui_mch_set_tabline_pos(0, text_area_y,
     gui.menu_width, gui.tabline_height);
     if (gui_has_tabline())
@@ -5235,10 +5235,10 @@
     {
 	if (has_cursormoved())
 	    apply_autocmds(EVENT_CURSORMOVED, NULL, NULL, FALSE, curbuf);
-#ifdef FEAT_PROP_POPUP
+# ifdef FEAT_PROP_POPUP
 	if (popup_visible)
 	    popup_check_cursor_pos();
-#endif
+# endif
 # ifdef FEAT_CONCEAL
 	if (curwin->w_p_cole > 0)
 	{
diff --git a/src/hashtab.c b/src/hashtab.c
index 482d830..a7470ec 100644
--- a/src/hashtab.c
+++ b/src/hashtab.c
@@ -189,13 +189,13 @@
     void
 hash_debug_results(void)
 {
-#ifdef HT_DEBUG
+# ifdef HT_DEBUG
     fprintf(stderr, "\r\n\r\n\r\n\r\n");
     fprintf(stderr, "Number of hashtable lookups: %ld\r\n", hash_count_lookup);
     fprintf(stderr, "Number of perturb loops: %ld\r\n", hash_count_perturb);
     fprintf(stderr, "Percentage of perturb loops: %ld%%\r\n",
 				hash_count_perturb * 100 / hash_count_lookup);
-#endif
+# endif
 }
 #endif
 
diff --git a/src/indent.c b/src/indent.c
index 8e9b0d1..b62308d 100644
--- a/src/indent.c
+++ b/src/indent.c
@@ -2173,7 +2173,7 @@
     void
 f_lispindent(typval_T *argvars UNUSED, typval_T *rettv)
 {
-#ifdef FEAT_LISP
+# ifdef FEAT_LISP
     pos_T	pos;
     linenr_T	lnum;
 
@@ -2191,7 +2191,7 @@
     else if (in_vim9script())
 	semsg(_(e_invalid_line_number_nr), lnum);
     else
-#endif
+# endif
 	rettv->vval.v_number = -1;
 }
 #endif
diff --git a/src/ops.c b/src/ops.c
index 418c46d..8c46303 100644
--- a/src/ops.c
+++ b/src/ops.c
@@ -3667,9 +3667,9 @@
 		curbuf->b_visual.vi_mode = VIsual_mode;
 		restore_visual_mode();
 		curbuf->b_visual.vi_curswant = curwin->w_curswant;
-# ifdef FEAT_EVAL
+#ifdef FEAT_EVAL
 		curbuf->b_visual_mode_eval = VIsual_mode;
-# endif
+#endif
 	    }
 
 	    // In Select mode, a linewise selection is operated upon like a
diff --git a/src/os_win32.c b/src/os_win32.c
index 36b2cf1..18b9e59 100644
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -241,11 +241,11 @@
 
 static BOOL win8_or_later = FALSE;
 
-# if defined(__GNUC__) && !defined(__MINGW32__)  && !defined(__CYGWIN__)
-#  define UChar UnicodeChar
-# else
-#  define UChar uChar.UnicodeChar
-# endif
+#if defined(__GNUC__) && !defined(__MINGW32__)  && !defined(__CYGWIN__)
+# define UChar UnicodeChar
+#else
+# define UChar uChar.UnicodeChar
+#endif
 
 #if !defined(FEAT_GUI_MSWIN) || defined(VIMDLL)
 // Dynamic loading for portability
@@ -2077,13 +2077,13 @@
 	buf[len++] = typeahead[0];
 	mch_memmove(typeahead, typeahead + 1, --typeaheadlen);
     }
-#  ifdef FEAT_JOB_CHANNEL
+# ifdef FEAT_JOB_CHANNEL
     if (len > 0)
     {
 	buf[len] = NUL;
 	ch_log(NULL, "raw key input: \"%s\"", buf);
     }
-#  endif
+# endif
     return len;
 
 #else // FEAT_GUI_MSWIN
@@ -7874,12 +7874,12 @@
     vtp_sgr_bulks(1, args);
 }
 
-#define FAST256(x) \
+# define FAST256(x) \
     if ((*p-- = "0123456789"[(n = x % 10)]) \
 	    && x >= 10 && (*p-- = "0123456789"[((m = x % 100) - n) / 10]) \
 	    && x >= 100 && (*p-- = "012"[((x & 0xff) - m) / 100]));
 
-#define FAST256CASE(x) \
+# define FAST256CASE(x) \
     case x: \
 	FAST256(newargs[x - 1]);
 
@@ -7888,8 +7888,8 @@
     int argc,
     int *args)
 {
-#define MAXSGR 16
-#define SGRBUFSIZE 2 + 4 * MAXSGR + 1 // '\033[' + SGR + 'm'
+# define MAXSGR 16
+# define SGRBUFSIZE 2 + 4 * MAXSGR + 1 // '\033[' + SGR + 'm'
     char_u  buf[SGRBUFSIZE];
     char_u  *p;
     int	    in, out;
diff --git a/src/version.c b/src/version.c
index b53b4eb..cc4e7d2 100644
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    4288,
+/**/
     4287,
 /**/
     4286,
