mirror of
https://github.com/neovim/neovim.git
synced 2026-04-01 13:22:08 +00:00
feat(spell): opt-out of confirm when downloading spellfiles #36836
This commit is contained in:
@@ -185,6 +185,8 @@ The plugin can be disabled by setting `g:loaded_spellfile_plugin = 1`.
|
|||||||
otherwise https://ftp.nluug.nl/pub/vim/runtime/spell.
|
otherwise https://ftp.nluug.nl/pub/vim/runtime/spell.
|
||||||
• {timeout_ms} (`integer`, default: 15000) Number of milliseconds after
|
• {timeout_ms} (`integer`, default: 15000) Number of milliseconds after
|
||||||
which the |vim.net.request()| times out.
|
which the |vim.net.request()| times out.
|
||||||
|
• {confirm} (`boolean`, default: `true`) Whether to ask user to
|
||||||
|
confirm download.
|
||||||
|
|
||||||
|
|
||||||
config({opts}) *spellfile.config()*
|
config({opts}) *spellfile.config()*
|
||||||
|
|||||||
@@ -25,11 +25,16 @@ local M = {}
|
|||||||
--- Number of milliseconds after which the [vim.net.request()] times out.
|
--- Number of milliseconds after which the [vim.net.request()] times out.
|
||||||
--- (default: 15000)
|
--- (default: 15000)
|
||||||
--- @field timeout_ms integer
|
--- @field timeout_ms integer
|
||||||
|
---
|
||||||
|
--- Whether to ask user to confirm download.
|
||||||
|
--- (default: `true`)
|
||||||
|
--- @field confirm boolean
|
||||||
|
|
||||||
--- @type nvim.spellfile.Opts
|
--- @type nvim.spellfile.Opts
|
||||||
local config = {
|
local config = {
|
||||||
url = vim.g.spellfile_URL or 'https://ftp.nluug.nl/pub/vim/runtime/spell',
|
url = vim.g.spellfile_URL or 'https://ftp.nluug.nl/pub/vim/runtime/spell',
|
||||||
timeout_ms = 15000,
|
timeout_ms = 15000,
|
||||||
|
confirm = true,
|
||||||
}
|
}
|
||||||
|
|
||||||
--- Configure spellfile download options. For example:
|
--- Configure spellfile download options. For example:
|
||||||
@@ -270,18 +275,22 @@ function M.get(lang)
|
|||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local prompt = ('No spell file found for %s (%s). Download? [y/N] '):format(
|
if config.confirm then
|
||||||
info.lang,
|
local prompt = ('No spell file found for %s (%s). Download? [y/N] '):format(
|
||||||
info.encoding
|
info.lang,
|
||||||
)
|
info.encoding
|
||||||
vim.ui.input({ prompt = prompt }, function(input)
|
)
|
||||||
-- properly clear the message window
|
vim.ui.input({ prompt = prompt }, function(input)
|
||||||
vim.api.nvim_echo({ { ' ' } }, false, { kind = 'empty' })
|
-- properly clear the message window
|
||||||
if not input or input:lower() ~= 'y' then
|
vim.api.nvim_echo({ { ' ' } }, false, { kind = 'empty' })
|
||||||
return
|
if not input or input:lower() ~= 'y' then
|
||||||
end
|
return
|
||||||
|
end
|
||||||
|
download(info)
|
||||||
|
end)
|
||||||
|
else
|
||||||
download(info)
|
download(info)
|
||||||
end)
|
end
|
||||||
|
|
||||||
return info
|
return info
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ local n = require('test.functional.testnvim')()
|
|||||||
local t = require('test.testutil')
|
local t = require('test.testutil')
|
||||||
|
|
||||||
local eq = t.eq
|
local eq = t.eq
|
||||||
|
local neq = t.neq
|
||||||
local exec_lua = n.exec_lua
|
local exec_lua = n.exec_lua
|
||||||
|
|
||||||
describe('nvim.spellfile', function()
|
describe('nvim.spellfile', function()
|
||||||
@@ -40,7 +41,10 @@ describe('nvim.spellfile', function()
|
|||||||
vim.fn.input = function() prompted = true; return 'n' end
|
vim.fn.input = function() prompted = true; return 'n' end
|
||||||
|
|
||||||
local requests = 0
|
local requests = 0
|
||||||
vim.net.request = function(...) requests = requests + 1 end
|
vim.net.request = function(_, _, cb)
|
||||||
|
requests = requests + 1
|
||||||
|
cb()
|
||||||
|
end
|
||||||
|
|
||||||
s.get('en_gb')
|
s.get('en_gb')
|
||||||
|
|
||||||
@@ -148,4 +152,35 @@ describe('nvim.spellfile', function()
|
|||||||
eq(true, out.done)
|
eq(true, out.done)
|
||||||
eq(false, out.did_reload)
|
eq(false, out.did_reload)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
it('no confirmation when using confirm = false', function()
|
||||||
|
local out = exec_lua(
|
||||||
|
[[
|
||||||
|
local rtp_dir = ...
|
||||||
|
local s = require('nvim.spellfile')
|
||||||
|
|
||||||
|
vim.fn.input = function(...)
|
||||||
|
error('prompt was triggered')
|
||||||
|
return 'n'
|
||||||
|
end
|
||||||
|
|
||||||
|
local requests = 0
|
||||||
|
vim.net.request = function(_, _, cb)
|
||||||
|
requests = requests + 1
|
||||||
|
cb()
|
||||||
|
end
|
||||||
|
|
||||||
|
s.config({ confirm = false })
|
||||||
|
s.get('en_gb')
|
||||||
|
|
||||||
|
-- Reset value
|
||||||
|
s.config({ confirm = true })
|
||||||
|
|
||||||
|
return { requests = requests }
|
||||||
|
]],
|
||||||
|
rtp_dir
|
||||||
|
)
|
||||||
|
|
||||||
|
neq(0, out.requests)
|
||||||
|
end)
|
||||||
end)
|
end)
|
||||||
|
|||||||
Reference in New Issue
Block a user