diff --git a/src/buffer.c b/src/buffer.c
index 60b7c80..dc279ff 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -1570,14 +1570,10 @@
      */
     if (action == DOBUF_SPLIT)	    // split window first
     {
-	// If 'switchbuf' contains "useopen": jump to first window containing
-	// "buf" if one exists
-	if ((swb_flags & SWB_USEOPEN) && buf_jump_open_win(buf))
+	// If 'switchbuf' is set jump to the window containing "buf".
+	if (swbuf_goto_win_with_buf(buf) != NULL)
 	    return OK;
-	// If 'switchbuf' contains "usetab": jump to first window in any tab
-	// page containing "buf" if one exists
-	if ((swb_flags & SWB_USETAB) && buf_jump_open_tab(buf))
-	    return OK;
+
 	if (win_split(0, 0) == FAIL)
 	    return FAIL;
     }
@@ -2492,15 +2488,8 @@
 
     if (options & GETF_SWITCH)
     {
-	// If 'switchbuf' contains "useopen": jump to first window containing
-	// "buf" if one exists
-	if (swb_flags & SWB_USEOPEN)
-	    wp = buf_jump_open_win(buf);
-
-	// 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);
+	// If 'switchbuf' is set jump to the window containing "buf".
+	wp = swbuf_goto_win_with_buf(buf);
 
 	// If 'switchbuf' contains "split", "vsplit" or "newtab" and the
 	// current buffer isn't empty: open new tab or window
diff --git a/src/proto/window.pro b/src/proto/window.pro
index d1108af..72612b8 100644
--- a/src/proto/window.pro
+++ b/src/proto/window.pro
@@ -1,6 +1,7 @@
 /* window.c */
 int window_layout_locked(enum CMD_index cmd);
 win_T *prevwin_curwin(void);
+win_T *swbuf_goto_win_with_buf(buf_T *buf);
 void do_window(int nchar, long Prenum, int xchar);
 void get_wincmd_addr_type(char_u *arg, exarg_T *eap);
 int win_split(int size, int flags);
diff --git a/src/tag.c b/src/tag.c
index 86f8ac4..1ee67b4 100644
--- a/src/tag.c
+++ b/src/tag.c
@@ -3816,18 +3816,10 @@
 
 	if (existing_buf != NULL)
 	{
-	    win_T *wp = NULL;
-
-	    if (swb_flags & SWB_USEOPEN)
-		wp = buf_jump_open_win(existing_buf);
-
-	    // If 'switchbuf' contains "usetab": jump to first window in any tab
-	    // page containing "existing_buf" if one exists
-	    if (wp == NULL && (swb_flags & SWB_USETAB))
-		wp = buf_jump_open_tab(existing_buf);
-	    // We've switched to the buffer, the usual loading of the file must
-	    // be skipped.
-	    if (wp != NULL)
+	    // If 'switchbuf' is set jump to the window containing "buf".
+	    if (swbuf_goto_win_with_buf(existing_buf) != NULL)
+		// We've switched to the buffer, the usual loading of the file
+		// must be skipped.
 		getfile_result = GETFILE_SAME_FILE;
 	}
     }
diff --git a/src/version.c b/src/version.c
index ed51a81..8620f97 100644
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1554,
+/**/
     1553,
 /**/
     1552,
diff --git a/src/window.c b/src/window.c
index b4b23d3..18f07b1 100644
--- a/src/window.c
+++ b/src/window.c
@@ -168,6 +168,32 @@
 }
 
 /*
+ * If the 'switchbuf' option contains "useopen" or "usetab", then try to jump
+ * to a window containing "buf".
+ * Returns the pointer to the window that was jumped to or NULL.
+ */
+    win_T *
+swbuf_goto_win_with_buf(buf_T *buf)
+{
+    win_T   *wp = NULL;
+
+    if (buf == NULL)
+	return wp;
+
+    // If 'switchbuf' contains "useopen": jump to first window in the current
+    // tab page containing "buf" if one exists.
+    if (swb_flags & SWB_USEOPEN)
+	wp = buf_jump_open_win(buf);
+
+    // 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);
+
+    return wp;
+}
+
+/*
  * All CTRL-W window commands are handled here, called from normal_cmd().
  */
     void
@@ -586,21 +612,7 @@
 		    wp = NULL;
 		    if ((swb_flags & (SWB_USEOPEN | SWB_USETAB))
 						&& cmdmod.cmod_tab == 0)
-		    {
-			buf_T *existing_buf = buflist_findname_exp(ptr);
-
-			if (existing_buf != NULL)
-			{
-			    if (swb_flags & SWB_USEOPEN)
-				wp = buf_jump_open_win(existing_buf);
-
-			    // If 'switchbuf' contains "usetab": jump to first
-			    // window in any tab page containing "existing_buf"
-			    // if one exists.
-			    if (wp == NULL && (swb_flags & SWB_USETAB))
-				wp = buf_jump_open_tab(existing_buf);
-			}
-		    }
+			wp = swbuf_goto_win_with_buf(buflist_findname_exp(ptr));
 
 		    if (wp == NULL && win_split(0, 0) == OK)
 		    {
