From 8d37201ed29a4149ff87b17e7ade209a0981986a Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Sun, 10 Apr 2016 02:20:53 -0400 Subject: [PATCH] spell: Fix argument and avoid redundant prompt. In #3027 we deferred the "missing spell file" prompt until VimEnter, but we were sending the wrong argument (should be "en", not "en_us"). This also caused redundant prompts if user answers "No" to the download prompt invoked by the SpellFileMissing event. Closes #3966 Closes #4406 --- runtime/plugin/spellfile.vim | 7 ------- src/nvim/spell.c | 13 ++++++++----- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/runtime/plugin/spellfile.vim b/runtime/plugin/spellfile.vim index 437296090c..e03659d6d6 100644 --- a/runtime/plugin/spellfile.vim +++ b/runtime/plugin/spellfile.vim @@ -1,15 +1,8 @@ " Vim plugin for downloading spell files -" Maintainer: Bram Moolenaar -" Last Change: 2006 Feb 01 -" Exit quickly when: -" - this plugin was already loaded -" - when 'compatible' is set -" - some autocommands are already taking care of spell files if exists("loaded_spellfile_plugin") || &cp || exists("#SpellFileMissing") finish endif let loaded_spellfile_plugin = 1 -" The function is in the autoload directory. autocmd SpellFileMissing * call spellfile#LoadFile(expand('')) diff --git a/src/nvim/spell.c b/src/nvim/spell.c index cc7dc6210c..fdae89b84c 100644 --- a/src/nvim/spell.c +++ b/src/nvim/spell.c @@ -2332,14 +2332,17 @@ static void spell_load_lang(char_u *lang) if (r == FAIL) { if (starting) { - // Some startup file sets &spell, but the necessary files don't exist: - // try to prompt the user at VimEnter. Also set spell again. #3027 - do_cmdline_cmd( - "autocmd VimEnter * call spellfile#LoadFile(&spelllang)|set spell"); + // Prompt the user at VimEnter if spell files are missing. #3027 + // Plugins aren't loaded yet, so spellfile.vim cannot handle this case. + char autocmd_buf[128] = { 0 }; + snprintf(autocmd_buf, sizeof(autocmd_buf), + "autocmd VimEnter * call spellfile#LoadFile('%s')|set spell", + lang); + do_cmdline_cmd(autocmd_buf); } else { smsg( _("Warning: Cannot find word list \"%s.%s.spl\" or \"%s.ascii.spl\""), - lang, spell_enc(), lang); + lang, spell_enc(), lang); } } else if (sl.sl_slang != NULL) { // At least one file was loaded, now load ALL the additions.