provider: repurpose E319

In Vim (and some vestigial parts of Nvim) E319 was a placeholder for
ex_ni commands, i.e. commands that are only available in certain builds
of Vim.  That is obviously counter to Nvim's goals: all Nvim commands
are available on all platforms and build types (the remaining ex_ni
commands are actually just missing providers).

We need an error id for "missing provider", so it makes sense to use
E319 for that purpose.

ref #9344
ref #3577
This commit is contained in:
Justin M. Keyes
2018-12-12 00:17:27 +01:00
parent 2b01c3a8a8
commit 61d0dfee32
5 changed files with 24 additions and 15 deletions

View File

@@ -514,15 +514,6 @@ command. The script can then again read another script. This can continue
for about 14 levels. When more nesting is done, Vim assumes that there is a for about 14 levels. When more nesting is done, Vim assumes that there is a
recursive loop somewhere and stops with this error message. recursive loop somewhere and stops with this error message.
*E319* >
The command is not available in this version
You have used a command that is not present in the version of Vim you are
using. When compiling Vim, many different features can be enabled or
disabled. This depends on how big Vim has chosen to be and the operating
system. See |+feature-list| for when which feature is available. The
|:version| command shows which feature Vim was compiled with.
*E300* > *E300* >
Swap file already exists (symlink attack?) Swap file already exists (symlink attack?)

View File

@@ -4,14 +4,21 @@
NVIM REFERENCE MANUAL by Thiago de Arruda NVIM REFERENCE MANUAL by Thiago de Arruda
Providers *provider* Providers *provider*
Nvim delegates some features to dynamic "providers". Nvim delegates some features to dynamic "providers". This document describes
the providers and how to install them.
*E319*
Use of a feature requiring a missing provider is an error: >
E319: No "foo" provider found. Run ":checkhealth provider"
Run the |:checkhealth| command, and review the sections below.
Type |gO| to see the table of contents. Type |gO| to see the table of contents.
============================================================================== ==============================================================================
Python integration *provider-python* Python integration *provider-python*
Nvim supports Python |remote-plugin|s and the Vim legacy |python2| and Nvim supports Python |remote-plugin|s and the Vim legacy |python2| and
|python3| interfaces (which are implemented as remote-plugins). |python3| interfaces (which are implemented as remote-plugins).

View File

@@ -3830,7 +3830,8 @@ static void script_host_execute(char *name, exarg_T *eap)
tv_list_append_number(args, (int)eap->line2); tv_list_append_number(args, (int)eap->line2);
if (!eval_has_provider(name)) { if (!eval_has_provider(name)) {
emsgf("No \"%s\" provider found. Run \":checkhealth provider\"", name); emsgf("E319: No \"%s\" provider found. Run \":checkhealth provider\"",
name);
} else { } else {
(void)eval_call_provider(name, "execute", args); (void)eval_call_provider(name, "execute", args);
} }

View File

@@ -2,6 +2,7 @@ local helpers = require('test.functional.helpers')(after_each)
local eval, command, feed = helpers.eval, helpers.command, helpers.feed local eval, command, feed = helpers.eval, helpers.command, helpers.feed
local eq, clear, insert = helpers.eq, helpers.clear, helpers.insert local eq, clear, insert = helpers.eq, helpers.clear, helpers.insert
local expect, write_file = helpers.expect, helpers.write_file local expect, write_file = helpers.expect, helpers.write_file
local expect_err = helpers.expect_err
local feed_command = helpers.feed_command local feed_command = helpers.feed_command
local source = helpers.source local source = helpers.source
local missing_provider = helpers.missing_provider local missing_provider = helpers.missing_provider
@@ -9,7 +10,11 @@ local missing_provider = helpers.missing_provider
do do
clear() clear()
if missing_provider('python3') then if missing_provider('python3') then
pending('Python 3 (or the neovim module) is broken/missing', function() end) it(':python3 reports E319 if provider is missing', function()
expect_err([[Vim%(python3%):E319: No "python3" provider found.*]],
command, 'python3 print("foo")')
end)
pending('Python 3 (or the pynvim module) is broken/missing', function() end)
return return
end end
end end

View File

@@ -8,6 +8,7 @@ local funcs = helpers.funcs
local meths = helpers.meths local meths = helpers.meths
local insert = helpers.insert local insert = helpers.insert
local expect = helpers.expect local expect = helpers.expect
local expect_err = helpers.expect_err
local command = helpers.command local command = helpers.command
local exc_exec = helpers.exc_exec local exc_exec = helpers.exc_exec
local write_file = helpers.write_file local write_file = helpers.write_file
@@ -17,7 +18,11 @@ local missing_provider = helpers.missing_provider
do do
clear() clear()
if missing_provider('python') then if missing_provider('python') then
pending('Python 2 (or the neovim module) is broken/missing', function() end) it(':python reports E319 if provider is missing', function()
expect_err([[Vim%(python%):E319: No "python" provider found.*]],
command, 'python print("foo")')
end)
pending('Python 2 (or the pynvim module) is broken/missing', function() end)
return return
end end
end end