patch 9.0.1237: code is indented more than necessary

Problem:    Code is indented more than necessary.
Solution:   Use an early return where it makes sense. (Yegappan Lakshmanan,
            closes #11858)
diff --git a/src/search.c b/src/search.c
index 8809f5d..9c8cf95 100644
--- a/src/search.c
+++ b/src/search.c
@@ -220,26 +220,26 @@
      */
     len = (unsigned)STRLEN(s);
     rev = alloc(len + 1);
-    if (rev != NULL)
+    if (rev == NULL)
+	return NULL;
+
+    rev_i = len;
+    for (s_i = 0; s_i < len; ++s_i)
     {
-	rev_i = len;
-	for (s_i = 0; s_i < len; ++s_i)
+	if (has_mbyte)
 	{
-	    if (has_mbyte)
-	    {
-		int	mb_len;
+	    int	mb_len;
 
-		mb_len = (*mb_ptr2len)(s + s_i);
-		rev_i -= mb_len;
-		mch_memmove(rev + rev_i, s + s_i, mb_len);
-		s_i += mb_len - 1;
-	    }
-	    else
-		rev[--rev_i] = s[s_i];
-
+	    mb_len = (*mb_ptr2len)(s + s_i);
+	    rev_i -= mb_len;
+	    mch_memmove(rev + rev_i, s + s_i, mb_len);
+	    s_i += mb_len - 1;
 	}
-	rev[len] = NUL;
+	else
+	    rev[--rev_i] = s[s_i];
+
     }
+    rev[len] = NUL;
     return rev;
 }
 #endif
@@ -247,20 +247,20 @@
     void
 save_re_pat(int idx, char_u *pat, int magic)
 {
-    if (spats[idx].pat != pat)
-    {
-	vim_free(spats[idx].pat);
-	spats[idx].pat = vim_strsave(pat);
-	spats[idx].magic = magic;
-	spats[idx].no_scs = no_smartcase;
-	last_idx = idx;
+    if (spats[idx].pat == pat)
+	return;
+
+    vim_free(spats[idx].pat);
+    spats[idx].pat = vim_strsave(pat);
+    spats[idx].magic = magic;
+    spats[idx].no_scs = no_smartcase;
+    last_idx = idx;
 #ifdef FEAT_SEARCH_EXTRA
-	// If 'hlsearch' set and search pat changed: need redraw.
-	if (p_hls)
-	    redraw_all_later(UPD_SOME_VALID);
-	set_no_hlsearch(FALSE);
+    // If 'hlsearch' set and search pat changed: need redraw.
+    if (p_hls)
+	redraw_all_later(UPD_SOME_VALID);
+    set_no_hlsearch(FALSE);
 #endif
-    }
 }
 
 /*
@@ -272,44 +272,44 @@
     void
 save_search_patterns(void)
 {
-    if (save_level++ == 0)
-    {
-	saved_spats[0] = spats[0];
-	if (spats[0].pat != NULL)
-	    saved_spats[0].pat = vim_strsave(spats[0].pat);
-	saved_spats[1] = spats[1];
-	if (spats[1].pat != NULL)
-	    saved_spats[1].pat = vim_strsave(spats[1].pat);
-	if (mr_pattern == NULL)
-	    saved_mr_pattern = NULL;
-	else
-	    saved_mr_pattern = vim_strsave(mr_pattern);
+    if (save_level++ != 0)
+	return;
+
+    saved_spats[0] = spats[0];
+    if (spats[0].pat != NULL)
+	saved_spats[0].pat = vim_strsave(spats[0].pat);
+    saved_spats[1] = spats[1];
+    if (spats[1].pat != NULL)
+	saved_spats[1].pat = vim_strsave(spats[1].pat);
+    if (mr_pattern == NULL)
+	saved_mr_pattern = NULL;
+    else
+	saved_mr_pattern = vim_strsave(mr_pattern);
 #ifdef FEAT_SEARCH_EXTRA
-	saved_spats_last_idx = last_idx;
-	saved_spats_no_hlsearch = no_hlsearch;
+    saved_spats_last_idx = last_idx;
+    saved_spats_no_hlsearch = no_hlsearch;
 #endif
-    }
 }
 
     void
 restore_search_patterns(void)
 {
-    if (--save_level == 0)
-    {
-	vim_free(spats[0].pat);
-	spats[0] = saved_spats[0];
+    if (--save_level != 0)
+	return;
+
+    vim_free(spats[0].pat);
+    spats[0] = saved_spats[0];
 #if defined(FEAT_EVAL)
-	set_vv_searchforward();
+    set_vv_searchforward();
 #endif
-	vim_free(spats[1].pat);
-	spats[1] = saved_spats[1];
-	vim_free(mr_pattern);
-	mr_pattern = saved_mr_pattern;
+    vim_free(spats[1].pat);
+    spats[1] = saved_spats[1];
+    vim_free(mr_pattern);
+    mr_pattern = saved_mr_pattern;
 #ifdef FEAT_SEARCH_EXTRA
-	last_idx = saved_spats_last_idx;
-	set_no_hlsearch(saved_spats_no_hlsearch);
+    last_idx = saved_spats_last_idx;
+    set_no_hlsearch(saved_spats_no_hlsearch);
 #endif
-    }
 }
 
 #if defined(EXITFREE) || defined(PROTO)
@@ -2791,61 +2791,68 @@
 	return;
 
     if ((lpos = findmatch(NULL, NUL)) == NULL)	    // no match, so beep
-	vim_beep(BO_MATCH);
-    else if (lpos->lnum >= curwin->w_topline && lpos->lnum < curwin->w_botline)
     {
-	if (!curwin->w_p_wrap)
-	    getvcol(curwin, lpos, NULL, &vcol, NULL);
-	if (curwin->w_p_wrap || (vcol >= curwin->w_leftcol
-			       && vcol < curwin->w_leftcol + curwin->w_width))
-	{
-	    mpos = *lpos;    // save the pos, update_screen() may change it
-	    save_cursor = curwin->w_cursor;
-	    save_so = *so;
-	    save_siso = *siso;
-	    // Handle "$" in 'cpo': If the ')' is typed on top of the "$",
-	    // stop displaying the "$".
-	    if (dollar_vcol >= 0 && dollar_vcol == curwin->w_virtcol)
-		dollar_vcol = -1;
-	    ++curwin->w_virtcol;	// do display ')' just before "$"
-	    update_screen(UPD_VALID);	// show the new char first
-
-	    save_dollar_vcol = dollar_vcol;
-#ifdef CURSOR_SHAPE
-	    save_state = State;
-	    State = MODE_SHOWMATCH;
-	    ui_cursor_shape();		// may show different cursor shape
-#endif
-	    curwin->w_cursor = mpos;	// move to matching char
-	    *so = 0;			// don't use 'scrolloff' here
-	    *siso = 0;			// don't use 'sidescrolloff' here
-	    showruler(FALSE);
-	    setcursor();
-	    cursor_on();		// make sure that the cursor is shown
-	    out_flush_cursor(TRUE, FALSE);
-
-	    // Restore dollar_vcol(), because setcursor() may call curs_rows()
-	    // which resets it if the matching position is in a previous line
-	    // and has a higher column number.
-	    dollar_vcol = save_dollar_vcol;
-
-	    /*
-	     * brief pause, unless 'm' is present in 'cpo' and a character is
-	     * available.
-	     */
-	    if (vim_strchr(p_cpo, CPO_SHOWMATCH) != NULL)
-		ui_delay(p_mat * 100L + 8, TRUE);
-	    else if (!char_avail())
-		ui_delay(p_mat * 100L + 9, FALSE);
-	    curwin->w_cursor = save_cursor;	// restore cursor position
-	    *so = save_so;
-	    *siso = save_siso;
-#ifdef CURSOR_SHAPE
-	    State = save_state;
-	    ui_cursor_shape();		// may show different cursor shape
-#endif
-	}
+	vim_beep(BO_MATCH);
+	return;
     }
+
+    if (lpos->lnum < curwin->w_topline || lpos->lnum >= curwin->w_botline)
+	return;
+
+    if (!curwin->w_p_wrap)
+	getvcol(curwin, lpos, NULL, &vcol, NULL);
+
+    int col_visible = (curwin->w_p_wrap
+	    || (vcol >= curwin->w_leftcol
+		&& vcol < curwin->w_leftcol + curwin->w_width));
+    if (!col_visible)
+	return;
+
+    mpos = *lpos;    // save the pos, update_screen() may change it
+    save_cursor = curwin->w_cursor;
+    save_so = *so;
+    save_siso = *siso;
+    // Handle "$" in 'cpo': If the ')' is typed on top of the "$",
+    // stop displaying the "$".
+    if (dollar_vcol >= 0 && dollar_vcol == curwin->w_virtcol)
+	dollar_vcol = -1;
+    ++curwin->w_virtcol;	// do display ')' just before "$"
+    update_screen(UPD_VALID);	// show the new char first
+
+    save_dollar_vcol = dollar_vcol;
+#ifdef CURSOR_SHAPE
+    save_state = State;
+    State = MODE_SHOWMATCH;
+    ui_cursor_shape();		// may show different cursor shape
+#endif
+    curwin->w_cursor = mpos;	// move to matching char
+    *so = 0;			// don't use 'scrolloff' here
+    *siso = 0;			// don't use 'sidescrolloff' here
+    showruler(FALSE);
+    setcursor();
+    cursor_on();		// make sure that the cursor is shown
+    out_flush_cursor(TRUE, FALSE);
+
+    // Restore dollar_vcol(), because setcursor() may call curs_rows()
+    // which resets it if the matching position is in a previous line
+    // and has a higher column number.
+    dollar_vcol = save_dollar_vcol;
+
+    /*
+     * brief pause, unless 'm' is present in 'cpo' and a character is
+     * available.
+     */
+    if (vim_strchr(p_cpo, CPO_SHOWMATCH) != NULL)
+	ui_delay(p_mat * 100L + 8, TRUE);
+    else if (!char_avail())
+	ui_delay(p_mat * 100L + 9, FALSE);
+    curwin->w_cursor = save_cursor;	// restore cursor position
+    *so = save_so;
+    *siso = save_siso;
+#ifdef CURSOR_SHAPE
+    State = save_state;
+    ui_cursor_shape();		// may show different cursor shape
+#endif
 }
 
 /*
@@ -3101,60 +3108,60 @@
 
     update_search_stat(dirc, pos, cursor_pos, &stat, recompute, maxcount,
 								      timeout);
-    if (stat.cur > 0)
-    {
-	char	t[SEARCH_STAT_BUF_LEN];
-	size_t	len;
+    if (stat.cur <= 0)
+	return;
+
+    char	t[SEARCH_STAT_BUF_LEN];
+    size_t	len;
 
 #ifdef FEAT_RIGHTLEFT
-	if (curwin->w_p_rl && *curwin->w_p_rlc == 's')
-	{
-	    if (stat.incomplete == 1)
-		vim_snprintf(t, SEARCH_STAT_BUF_LEN, "[?/??]");
-	    else if (stat.cnt > maxcount && stat.cur > maxcount)
-		vim_snprintf(t, SEARCH_STAT_BUF_LEN, "[>%d/>%d]",
-							   maxcount, maxcount);
-	    else if (stat.cnt > maxcount)
-		vim_snprintf(t, SEARCH_STAT_BUF_LEN, "[>%d/%d]",
-							   maxcount, stat.cur);
-	    else
-		vim_snprintf(t, SEARCH_STAT_BUF_LEN, "[%d/%d]",
-							   stat.cnt, stat.cur);
-	}
+    if (curwin->w_p_rl && *curwin->w_p_rlc == 's')
+    {
+	if (stat.incomplete == 1)
+	    vim_snprintf(t, SEARCH_STAT_BUF_LEN, "[?/??]");
+	else if (stat.cnt > maxcount && stat.cur > maxcount)
+	    vim_snprintf(t, SEARCH_STAT_BUF_LEN, "[>%d/>%d]",
+		    maxcount, maxcount);
+	else if (stat.cnt > maxcount)
+	    vim_snprintf(t, SEARCH_STAT_BUF_LEN, "[>%d/%d]",
+		    maxcount, stat.cur);
 	else
-#endif
-	{
-	    if (stat.incomplete == 1)
-		vim_snprintf(t, SEARCH_STAT_BUF_LEN, "[?/??]");
-	    else if (stat.cnt > maxcount && stat.cur > maxcount)
-		vim_snprintf(t, SEARCH_STAT_BUF_LEN, "[>%d/>%d]",
-							   maxcount, maxcount);
-	    else if (stat.cnt > maxcount)
-		vim_snprintf(t, SEARCH_STAT_BUF_LEN, "[%d/>%d]",
-							   stat.cur, maxcount);
-	    else
-		vim_snprintf(t, SEARCH_STAT_BUF_LEN, "[%d/%d]",
-							   stat.cur, stat.cnt);
-	}
-
-	len = STRLEN(t);
-	if (show_top_bot_msg && len + 2 < SEARCH_STAT_BUF_LEN)
-	{
-	    mch_memmove(t + 2, t, len);
-	    t[0] = 'W';
-	    t[1] = ' ';
-	    len += 2;
-	}
-
-	mch_memmove(msgbuf + STRLEN(msgbuf) - len, t, len);
-	if (dirc == '?' && stat.cur == maxcount + 1)
-	    stat.cur = -1;
-
-	// keep the message even after redraw, but don't put in history
-	msg_hist_off = TRUE;
-	give_warning(msgbuf, FALSE);
-	msg_hist_off = FALSE;
+	    vim_snprintf(t, SEARCH_STAT_BUF_LEN, "[%d/%d]",
+		    stat.cnt, stat.cur);
     }
+    else
+#endif
+    {
+	if (stat.incomplete == 1)
+	    vim_snprintf(t, SEARCH_STAT_BUF_LEN, "[?/??]");
+	else if (stat.cnt > maxcount && stat.cur > maxcount)
+	    vim_snprintf(t, SEARCH_STAT_BUF_LEN, "[>%d/>%d]",
+		    maxcount, maxcount);
+	else if (stat.cnt > maxcount)
+	    vim_snprintf(t, SEARCH_STAT_BUF_LEN, "[%d/>%d]",
+		    stat.cur, maxcount);
+	else
+	    vim_snprintf(t, SEARCH_STAT_BUF_LEN, "[%d/%d]",
+		    stat.cur, stat.cnt);
+    }
+
+    len = STRLEN(t);
+    if (show_top_bot_msg && len + 2 < SEARCH_STAT_BUF_LEN)
+    {
+	mch_memmove(t + 2, t, len);
+	t[0] = 'W';
+	t[1] = ' ';
+	len += 2;
+    }
+
+    mch_memmove(msgbuf + STRLEN(msgbuf) - len, t, len);
+    if (dirc == '?' && stat.cur == maxcount + 1)
+	stat.cur = -1;
+
+    // keep the message even after redraw, but don't put in history
+    msg_hist_off = TRUE;
+    give_warning(msgbuf, FALSE);
+    msg_hist_off = FALSE;
 }
 
 /*