aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md24
-rw-r--r--runtime/doc/deprecated.txt1
-rw-r--r--src/nvim/mbyte.c2
-rw-r--r--src/nvim/path.c33
-rw-r--r--src/nvim/testdir/test_cmdline.vim8
-rw-r--r--src/nvim/ui.c8
-rw-r--r--src/nvim/version.c2
7 files changed, 49 insertions, 29 deletions
diff --git a/README.md b/README.md
index 03d478d42c..2d3d18a721 100644
--- a/README.md
+++ b/README.md
@@ -1,20 +1,24 @@
-![Neovim](https://raw.githubusercontent.com/neovim/neovim.github.io/master/logos/neovim-logo.png)
+[![Neovim](https://raw.githubusercontent.com/neovim/neovim.github.io/master/logos/neovim-logo.png)](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)
[![Travis Build Status](https://travis-ci.org/neovim/neovim.svg?branch=master)](https://travis-ci.org/neovim/neovim)
[![AppVeyor Build status](https://ci.appveyor.com/api/projects/status/cf1jwc29198748we/branch/master?svg=true)](https://ci.appveyor.com/project/neovim/neovim/branch/master)
[![Pull requests waiting for review](https://badge.waffle.io/neovim/neovim.svg?label=RFC&title=RFCs)](https://waffle.io/neovim/neovim)
[![Coverage Status](https://img.shields.io/coveralls/neovim/neovim.svg)](https://coveralls.io/r/neovim/neovim)
[![Coverity Scan Build](https://scan.coverity.com/projects/2227/badge.svg)](https://scan.coverity.com/projects/2227)
-[![Clang Scan Build](http://neovim.io/doc/reports/clang/badge.svg)](http://neovim.io/doc/reports/clang)
-[![Gitter chat](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/neovim/neovim?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
+[![Clang Scan Build](https://neovim.io/doc/reports/clang/badge.svg)](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(&regmatch, 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(&regmatch, 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(&regmatch, 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