diff options
-rw-r--r-- | README.md | 24 | ||||
-rw-r--r-- | runtime/doc/deprecated.txt | 1 | ||||
-rw-r--r-- | src/nvim/mbyte.c | 2 | ||||
-rw-r--r-- | src/nvim/path.c | 33 | ||||
-rw-r--r-- | src/nvim/testdir/test_cmdline.vim | 8 | ||||
-rw-r--r-- | src/nvim/ui.c | 8 | ||||
-rw-r--r-- | src/nvim/version.c | 2 |
7 files changed, 49 insertions, 29 deletions
@@ -1,20 +1,24 @@ - +[](https://neovim.io) -[Website] | [Community] | [Wiki] | [Documentation] | [Mailing List] | [Twitter] | [Bountysource] +[Wiki](https://github.com/neovim/neovim/wiki) | +[Documentation](https://neovim.io/doc) | +[Twitter](https://twitter.com/Neovim) | +[Community](https://neovim.io/community/) | +[Gitter **Chat**](https://gitter.im/neovim/neovim) [](https://travis-ci.org/neovim/neovim) [](https://ci.appveyor.com/project/neovim/neovim/branch/master) [](https://waffle.io/neovim/neovim) [](https://coveralls.io/r/neovim/neovim) [](https://scan.coverity.com/projects/2227) -[](http://neovim.io/doc/reports/clang) -[](https://gitter.im/neovim/neovim?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) +[](https://neovim.io/doc/reports/clang) +<a href="https://buildd.debian.org/neovim"><img src="https://www.debian.org/logos/openlogo-nd-25.png" width="13" height="15">Debian</a> Neovim is a project that seeks to aggressively refactor Vim in order to: - Simplify maintenance and encourage [contributions](CONTRIBUTING.md) - Split the work between multiple developers -- Enable the implementation of new/modern UIs without modifications to the core +- Enable advanced [external UIs] without modifications to the core - Improve extensibility with a new [plugin architecture](https://github.com/neovim/neovim/wiki/Plugin-UI-architecture) For more details, see @@ -45,7 +49,7 @@ See the [Roadmap]. How do I get it? ---------------- -There is a formula for OSX/homebrew, a PKGBUILD for Arch Linux, RPM, deb, and +There is a Debian package, homebrew formula, PKGBUILD for Arch Linux, RPM, and more. See [the wiki](https://github.com/neovim/neovim/wiki/Installing-Neovim)! License @@ -74,15 +78,9 @@ See `LICENSE` for details. You can also sponsor the development of Vim. Vim sponsors can vote for features. The money goes to Uganda anyway. -[Website]: http://neovim.io -[Community]: http://neovim.io/community/ -[Wiki]: https://github.com/neovim/neovim/wiki -[Documentation]: http://neovim.io/doc -[Mailing List]: https://groups.google.com/forum/#!forum/neovim -[Twitter]: http://twitter.com/Neovim -[Bountysource]: https://www.bountysource.com/teams/neovim [license-commit]: https://github.com/neovim/neovim/commit/b17d9691a24099c9210289f16afb1a498a89d803 [nvim-features]: https://neovim.io/doc/user/vim_diff.html#nvim-features [Roadmap]: https://neovim.io/roadmap/ +[external UIs]: https://github.com/neovim/neovim/wiki/Related-projects#gui-projects <!-- vim: set tw=80: --> diff --git a/runtime/doc/deprecated.txt b/runtime/doc/deprecated.txt index d108aca62f..2b69929cfe 100644 --- a/runtime/doc/deprecated.txt +++ b/runtime/doc/deprecated.txt @@ -41,3 +41,4 @@ Options ~ *'vi'* *'viminfo'* Deprecated alias to 'shada' option. + vim:tw=78:ts=8:ft=help:norl: diff --git a/src/nvim/mbyte.c b/src/nvim/mbyte.c index c08b9e8fcf..e6312f9c00 100644 --- a/src/nvim/mbyte.c +++ b/src/nvim/mbyte.c @@ -1724,7 +1724,7 @@ int utf_class(int c) return 2; } -int utf_ambiguous_width(int c) +bool utf_ambiguous_width(int c) { return c >= 0x80 && (intable(ambiguous, ARRAY_SIZE(ambiguous), c) || intable(emoji_all, ARRAY_SIZE(emoji_all), c)); diff --git a/src/nvim/path.c b/src/nvim/path.c index a79b7139f1..6149e1ab99 100644 --- a/src/nvim/path.c +++ b/src/nvim/path.c @@ -903,17 +903,30 @@ static void uniquefy_paths(garray_T *gap, char_u *pattern) /* Shorten the filename while maintaining its uniqueness */ path_cutoff = get_path_cutoff(path, &path_ga); - /* we start at the end of the path */ - pathsep_p = path + len - 1; - - while (find_previous_pathsep(path, &pathsep_p)) - if (vim_regexec(®match, pathsep_p + 1, (colnr_T)0) - && is_unique(pathsep_p + 1, gap, i) - && path_cutoff != NULL && pathsep_p + 1 >= path_cutoff) { - sort_again = true; - memmove(path, pathsep_p + 1, STRLEN(pathsep_p)); - break; + // Don't assume all files can be reached without path when search + // pattern starts with **/, so only remove path_cutoff + // when possible. + if (pattern[0] == '*' && pattern[1] == '*' + && vim_ispathsep_nocolon(pattern[2]) + && path_cutoff != NULL + && vim_regexec(®match, path_cutoff, (colnr_T)0) + && is_unique(path_cutoff, gap, i)) { + sort_again = true; + memmove(path, path_cutoff, STRLEN(path_cutoff) + 1); + } else { + // Here all files can be reached without path, so get shortest + // unique path. We start at the end of the path. */ + pathsep_p = path + len - 1; + while (find_previous_pathsep(path, &pathsep_p)) { + if (vim_regexec(®match, pathsep_p + 1, (colnr_T)0) + && is_unique(pathsep_p + 1, gap, i) + && path_cutoff != NULL && pathsep_p + 1 >= path_cutoff) { + sort_again = true; + memmove(path, pathsep_p + 1, STRLEN(pathsep_p)); + break; + } } + } if (path_is_absolute_path(path)) { /* diff --git a/src/nvim/testdir/test_cmdline.vim b/src/nvim/testdir/test_cmdline.vim index 902ec1c05d..006f6b82a8 100644 --- a/src/nvim/testdir/test_cmdline.vim +++ b/src/nvim/testdir/test_cmdline.vim @@ -152,3 +152,11 @@ func Test_getcompletion() call assert_fails('call getcompletion("", "burp")', 'E475:') endfunc + +func Test_expand_star_star() + call mkdir('a/b', 'p') + call writefile(['asdfasdf'], 'a/b/fileXname') + call feedkeys(":find **/fileXname\<Tab>\<CR>", 'xt') + call assert_equal('find a/b/fileXname', getreg(':')) + call delete('a', 'rf') +endfunc diff --git a/src/nvim/ui.c b/src/nvim/ui.c index 648d633e07..eb500414a7 100644 --- a/src/nvim/ui.c +++ b/src/nvim/ui.c @@ -397,14 +397,14 @@ static void send_output(uint8_t **ptr) size_t clen = (size_t)mb_ptr2len(p); UI_CALL(put, p, (size_t)clen); col++; - if (utf_ambiguous_width(*p)) { - pending_cursor_update = true; - flush_cursor_update(); - } else if (mb_ptr2cells(p) > 1) { + if (mb_ptr2cells(p) > 1) { // double cell character, blank the next cell UI_CALL(put, NULL, 0); col++; } + if (utf_ambiguous_width(utf_ptr2char(p))) { + pending_cursor_update = true; + } if (col >= width) { ui_linefeed(); } diff --git a/src/nvim/version.c b/src/nvim/version.c index f2f81b5614..e6ad679f45 100644 --- a/src/nvim/version.c +++ b/src/nvim/version.c @@ -167,7 +167,7 @@ static int included_patches[] = { // 2277, // 2276, // 2275, - // 2274, + 2274, // 2273, // 2272, // 2271 NA |