Fix compilation with gcc-5

Gcc-5 seems to have a bug in its handling of template variable.

Fixes #2267
This commit is contained in:
Maxime Coste 2018-07-30 07:15:17 +01:00
parent bd9895ea86
commit d2509e54f2
2 changed files with 27 additions and 28 deletions

View File

@ -21,7 +21,7 @@ before_install:
install: install:
- if [ $TRAVIS_OS_NAME = linux ]; then - if [ $TRAVIS_OS_NAME = linux ]; then
if [ "$CXX" = "g++" ]; then if [ "$CXX" = "g++" ]; then
export CXX=g++-6; export CXX=g++-5;
fi; fi;
elif [ $TRAVIS_OS_NAME = osx ]; then elif [ $TRAVIS_OS_NAME = osx ]; then
brew outdated gcc || brew upgrade gcc; brew outdated gcc || brew upgrade gcc;
@ -35,8 +35,8 @@ addons:
sources: sources:
- ubuntu-toolchain-r-test - ubuntu-toolchain-r-test
packages: packages:
- libstdc++-6-dev - libstdc++-5-dev
- g++-6 - g++-5
- libncursesw5-dev - libncursesw5-dev
coverity_scan: coverity_scan:
project: project:

View File

@ -1498,33 +1498,32 @@ const CommandDesc declare_option_cmd = {
}; };
template<bool unmap> template<bool unmap>
static auto map_key_completer = static Completions map_key_completer(const Context& context, CompletionFlags flags,
[](const Context& context, CompletionFlags flags, CommandParameters params, size_t token_to_complete,
CommandParameters params, size_t token_to_complete, ByteCount pos_in_token)
ByteCount pos_in_token) -> Completions {
if (token_to_complete == 0)
return { 0_byte, params[0].length(),
complete(params[0], pos_in_token, scopes) };
if (token_to_complete == 1)
{ {
if (token_to_complete == 0) auto& user_modes = get_scope(params[0], context).keymaps().user_modes();
return { 0_byte, params[0].length(), return { 0_byte, params[1].length(),
complete(params[0], pos_in_token, scopes) }; complete(params[1], pos_in_token, concatenated(modes, user_modes) | gather<Vector<String>>()) };
if (token_to_complete == 1) }
{ if (unmap and token_to_complete == 2)
auto& user_modes = get_scope(params[0], context).keymaps().user_modes(); {
return { 0_byte, params[1].length(), KeymapManager& keymaps = get_scope(params[0], context).keymaps();
complete(params[1], pos_in_token, concatenated(modes, user_modes) | gather<Vector<String>>()) }; KeymapMode keymap_mode = parse_keymap_mode(params[1], keymaps.user_modes());
} KeyList keys = keymaps.get_mapped_keys(keymap_mode);
if (unmap and token_to_complete == 2)
{
KeymapManager& keymaps = get_scope(params[0], context).keymaps();
KeymapMode keymap_mode = parse_keymap_mode(params[1], keymaps.user_modes());
KeyList keys = keymaps.get_mapped_keys(keymap_mode);
return { 0_byte, params[2].length(), return { 0_byte, params[2].length(),
complete(params[2], pos_in_token, complete(params[2], pos_in_token,
keys | transform([](Key k) { return key_to_str(k); }) keys | transform([](Key k) { return key_to_str(k); })
| gather<Vector<String>>()) }; | gather<Vector<String>>()) };
} }
return {}; return {};
}; }
const CommandDesc map_key_cmd = { const CommandDesc map_key_cmd = {
"map", "map",