diff options
author | Justin M. Keyes <justinkz@gmail.com> | 2015-12-13 00:35:09 -0500 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2015-12-13 00:35:09 -0500 |
commit | 3c9d8ac99e0df7701855f5b534b4202aa0a21bb2 (patch) | |
tree | cb0e0588ceebe368aee048fc12f1e753bba94f17 /src/nvim/search.c | |
parent | 014d692013c58e31a1456d218d2b38b857e6cef3 (diff) | |
parent | cfa2107e33e98c35a2f08236ef6816fbae7cc8f1 (diff) | |
download | rneovim-3c9d8ac99e0df7701855f5b534b4202aa0a21bb2.tar.gz rneovim-3c9d8ac99e0df7701855f5b534b4202aa0a21bb2.tar.bz2 rneovim-3c9d8ac99e0df7701855f5b534b4202aa0a21bb2.zip |
Merge #3718 'vim-patch:7.4.655'
Diffstat (limited to 'src/nvim/search.c')
-rw-r--r-- | src/nvim/search.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/src/nvim/search.c b/src/nvim/search.c index cb461c9ef2..fb7dfa350b 100644 --- a/src/nvim/search.c +++ b/src/nvim/search.c @@ -918,7 +918,7 @@ static int first_submatch(regmmatch_T *rp) * Careful: If spats[0].off.line == TRUE and spats[0].off.off == 0 this * makes the movement linewise without moving the match position. * - * return 0 for failure, 1 for found, 2 for found and line offset added + * Return 0 for failure, 1 for found, 2 for found and line offset added. */ int do_search( oparg_T *oap, /* can be NULL */ @@ -3193,6 +3193,7 @@ current_tagblock ( int do_include = include; bool save_p_ws = p_ws; int retval = FAIL; + int is_inclusive = true; p_ws = false; @@ -3287,9 +3288,16 @@ again: if (inc_cursor() < 0) break; } else { - /* Exclude the '<' of the end tag. */ - if (*get_cursor_pos_ptr() == '<') + char_u *c = get_cursor_pos_ptr(); + // Exclude the '<' of the end tag. + // If the closing tag is on new line, do not decrement cursor, but make + // operation exclusive, so that the linefeed will be selected + if (*c == '<' && !VIsual_active && curwin->w_cursor.col == 0) { + // do not decrement cursor + is_inclusive = false; + } else if (*c == '<') { dec_cursor(); + } } end_pos = curwin->w_cursor; @@ -3334,8 +3342,9 @@ again: * on an empty area. */ curwin->w_cursor = start_pos; oap->inclusive = false; - } else - oap->inclusive = true; + } else { + oap->inclusive = is_inclusive; + } } retval = OK; |