diff options
Diffstat (limited to 'data/vim/patches/8.1.0083')
-rw-r--r-- | data/vim/patches/8.1.0083 | 196 |
1 files changed, 196 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.0083 b/data/vim/patches/8.1.0083 new file mode 100644 index 000000000..ec805d366 --- /dev/null +++ b/data/vim/patches/8.1.0083 @@ -0,0 +1,196 @@ +To: vim_dev@googlegroups.com +Subject: Patch 8.1.0083 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 8.1.0083 +Problem: "is" and "as" have trouble with quoted punctuation. +Solution: Check for punctuation before a quote. (Jason Franklin) +Files: src/search.c, src/testdir/test_textobjects.vim + + +*** ../vim-8.1.0082/src/search.c 2018-05-22 17:50:38.679980719 +0200 +--- src/search.c 2018-06-19 18:19:14.194486159 +0200 +*************** +*** 2707,2716 **** + } + + /* +! * findsent(dir, count) - Find the start of the next sentence in direction +! * "dir" Sentences are supposed to end in ".", "!" or "?" followed by white +! * space or a line break. Also stop at an empty line. +! * Return OK if the next sentence was found. + */ + int + findsent(int dir, long count) +--- 2707,2717 ---- + } + + /* +! * Find the start of the next sentence, searching in the direction specified +! * by the "dir" argument. The cursor is positioned on the start of the next +! * sentence when found. If the next sentence is found, return OK. Return FAIL +! * otherwise. See ":h sentence" for the precise definition of a "sentence" +! * text object. + */ + int + findsent(int dir, long count) +*************** +*** 2758,2783 **** + else if (dir == BACKWARD) + decl(&pos); + +! /* go back to the previous non-blank char */ + found_dot = FALSE; +! while ((c = gchar_pos(&pos)) == ' ' || c == '\t' || +! (dir == BACKWARD && vim_strchr((char_u *)".!?)]\"'", c) != NULL)) + { +! if (vim_strchr((char_u *)".!?", c) != NULL) +! { +! /* Only skip over a '.', '!' and '?' once. */ +! if (found_dot) +! break; + found_dot = TRUE; +! } +! if (decl(&pos) == -1) + break; +! /* when going forward: Stop in front of empty line */ +! if (LINEEMPTY(pos.lnum) && dir == FORWARD) +! { +! incl(&pos); +! goto found; +! } + } + + /* remember the line where the search started */ +--- 2759,2783 ---- + else if (dir == BACKWARD) + decl(&pos); + +! // go back to the previous non-white non-punctuation character + found_dot = FALSE; +! while (c = gchar_pos(&pos), VIM_ISWHITE(c) +! || vim_strchr((char_u *)".!?)]\"'", c) != NULL) + { +! tpos = pos; +! if (decl(&tpos) == -1 || (LINEEMPTY(tpos.lnum) && dir == FORWARD)) +! break; +! +! if (found_dot) +! break; +! if (vim_strchr((char_u *) ".!?", c) != NULL) + found_dot = TRUE; +! +! if (vim_strchr((char_u *) ")]\"'", c) != NULL +! && vim_strchr((char_u *) ".!?)]\"'", gchar_pos(&tpos)) == NULL) + break; +! +! decl(&pos); + } + + /* remember the line where the search started */ +*** ../vim-8.1.0082/src/testdir/test_textobjects.vim 2018-02-09 18:06:35.000000000 +0100 +--- src/testdir/test_textobjects.vim 2018-06-19 18:16:20.911420342 +0200 +*************** +*** 165,167 **** +--- 165,242 ---- + norm it + q! + endfunc ++ ++ func Test_sentence() ++ enew! ++ call setline(1, 'A sentence. A sentence? A sentence!') ++ ++ normal yis ++ call assert_equal('A sentence.', @") ++ normal yas ++ call assert_equal('A sentence. ', @") ++ ++ normal ) ++ ++ normal yis ++ call assert_equal('A sentence?', @") ++ normal yas ++ call assert_equal('A sentence? ', @") ++ ++ normal ) ++ ++ normal yis ++ call assert_equal('A sentence!', @") ++ normal yas ++ call assert_equal(' A sentence!', @") ++ ++ normal 0 ++ normal 2yis ++ call assert_equal('A sentence. ', @") ++ normal 3yis ++ call assert_equal('A sentence. A sentence?', @") ++ normal 2yas ++ call assert_equal('A sentence. A sentence? ', @") ++ ++ %delete _ ++ endfunc ++ ++ func Test_sentence_with_quotes() ++ enew! ++ call setline(1, 'A "sentence." A sentence.') ++ ++ normal yis ++ call assert_equal('A "sentence."', @") ++ normal yas ++ call assert_equal('A "sentence." ', @") ++ ++ normal ) ++ ++ normal yis ++ call assert_equal('A sentence.', @") ++ normal yas ++ call assert_equal(' A sentence.', @") ++ ++ %delete _ ++ endfunc ++ ++ func! Test_sentence_with_cursor_on_delimiter() ++ enew! ++ call setline(1, "A '([sentence.])' A sentence.") ++ ++ normal! 15|yis ++ call assert_equal("A '([sentence.])'", @") ++ normal! 15|yas ++ call assert_equal("A '([sentence.])' ", @") ++ ++ normal! 16|yis ++ call assert_equal("A '([sentence.])'", @") ++ normal! 16|yas ++ call assert_equal("A '([sentence.])' ", @") ++ ++ normal! 17|yis ++ call assert_equal("A '([sentence.])'", @") ++ normal! 17|yas ++ call assert_equal("A '([sentence.])' ", @") ++ ++ %delete _ ++ endfunc +*** ../vim-8.1.0082/src/version.c 2018-06-19 17:49:20.300015350 +0200 +--- src/version.c 2018-06-19 18:27:12.611837877 +0200 +*************** +*** 763,764 **** +--- 763,766 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 83, + /**/ + +-- +From "know your smileys": + y:-) Bad toupee + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// |