Since `curl -s` is used, the actual error (e.g. "curl: (6) Could not
resolve host: pypi.python.org") gets not reported anyway, and s:download
returns an error message with `s:shell_error` already.
This changes `s:download` to also include `a:url` in the error message
now.
It removes
> ERROR: Command error (7) curl -sL https://pypi.python.org/pypi/neovim/json:
And changes
> ERROR: HTTP request failed: error: curl error with https://pypi.python.org/pypi/neovim/json: 6
This helps to identify where the `neovim` module is coming from, e.g.
- INFO: python3-neovim version: 0.1.10 (outdated; from ~/Vcs/neovim-python-client/neovim)
- WARNING: Latest python3-neovim is NOT installed: 0.1.12
- s:version_info: return errors from the `import`
- skip report_ok for latest version, in case the current version was
not found. status contains the error that has been reported in that
case already.
* health: Handle backslash path separators.
* health: brevity, consistency
* health: Do not set bufhidden=wipe.
In the context of CheckHealth, bufhidden=wipe loses data for no reason.
I gone through every single line, renamed the variables to be more consistent
and reordered many lines. Information is now printed as soon as it's available
and errors lead to early returns.
I altered the suggestions for each condition to be more precise and checked that
they fail properly.
This also prevents invalid arguments getting passed to s:version_cmp().
- Improves compatibility with shell=tcsh.
- man.vim: split read_page into get_page, put_page. Do not split the
window until we know there is going to be output.
- By re-enabling code blocks (every line that doesn't begin with a "-" and is
indented by at least 4 spaces), we prevent the Markdown syntax to evaluate "_"
as beginning for italic text.
That's the case for `:CheckHealth deoplete` for instance. It would output:
$ cat /tmp/log_{PID}
Since the deoplete check gets run first, almost all of the following
`:CheckHealth` output would be italic.
- Since we re-enable code blocks, we now have to tell our custom syntax that it
can be part of markdownCodeBlock as well. Otherwise there would be no
highlithing for our keywords ERROR, INFO, etc. after 4 spaces of indent.
- Since we do the above anyway, we make it work for mkdListItemLine as well.
That's a highlight group from `plasticboy/vim-markdown` opposed to the shipped
markdown syntax (which essentially is `tpope/vim-markdown`). Before this patch
there was no highlighting at all in the `:CheckHealth` output.
This option simplifies the configuration options:
1) `g:python{,3}_host_prog` is not set.
Neovim tries its best to find a suitable interpreter. This means calling
exepath(), potentially multiple times, and a system('python -c ...') with
the first found interpreter, to get the Python version.
2) `g:python{,3}_host_prog` is set.
Avoids everything of the above. No safety checks, no training wheels. Fast
host startup time!
* health.vim: Include v:throwpoint in error message
* health/provider.vim: Check for ruby executable
* health/provider.vim: Combine subprocess stdout and stderr
* test: Updated CheckHealth test
We can now use help links like in normal help pages. The bars around them will
be concealed as well.
* Health: link string "SUCCESS" to ModeMsg
So far we linked "SUCCESS" to the Function highlight group.
The newly introduced healthHelp group links to Idenfifier as it does for links
in normal help pages.
Now the problem is that the Function group links again to Identifier as well, so
both, "SUCCESS" and help links, would use the same colors.
* Health: don't use Markdown code blocks
Every line indented by more than 4 spaces would lose its highlighting otherwise.
* Health: add helper health#help_to_link()
Never throw an error when provider/clipboard.vim is sourced for the first time.
Save the error instead and expose it via `provider#clipboard#Error()`, mimicking
provider/python.vim.
`:CheckHealth nvim` would always report an outdated manifest if symlinks were
used, because the manifest file contains unresolved paths that get compared
against resolved paths.
Now we resolve paths before they get written to the manifest file.
If multiple versions of a package are installed, the provider health check could
choose a wrong path:
/usr/local/lib/python3.5/site-packages/neovim-0.1.10-py3.5.egg-info/PKG-INFO
/usr/local/lib/python3.5/site-packages/neovim-0.1.9-py3.5.egg-info/PKG-INFO
Prior to this change :CheckHealth could falsely show 0.1.9 as the installed
version, since glob() doesn't enforce any predictable order.
Now we sort all potential paths numerically in descending order and just look at
the first path instead.
Compare current version number to that of the latest released neovim
rubygem, rather than a hard-coded version.
Note: The `gem list` command introduced here adds about 4 seconds to the
execution time of the CheckHealth command.
- fix synopsis highlighting in other locales. Cannot always rely on the first
line for the section in some locales; instead, use the file path and
explicitly set b:man_sect to the actual section.
- eliminate separate s:man_args function
- simplify logic: do not reuse buffer content
- introduce b:man_default_sects Fixes#5233
- introduce <Plug>(man_vsplit), <Plug>(man_tab)
- simplify regexps
This is necessary incase the buffer was previously opened in a different
tab, in which the window options there do not carry over. It is not
explicitly documented in ':help local-options' but that is how it works.
:silent does not silence this message, even :redir does not consume it.
But execute() _does_ consume it, which interferes with the current
implementation of health.vim. It's prudent to avoid it in any case, even
if the implementation of health.vim changes in the future.
We can add this later if it is proven necessary, but it should not be
because:
1. User can run a subset of checkers via `:CheckHealth plugin1, ...,`
2. Healthcheck is a very rare operation. Optimizing it is not worth the
code/API complexity.
To healthcheck the "foo" plugin:
:CheckHealth foo
To healthcheck the "foo" and "bar" plugins:
:CheckHealth foo bar
To run all auto-discovered healthchecks:
:CheckHealth
- Use execute() instead of redir
- Fixed logic on suboptimal pyenv/virtualenv checks.
- Move system calls from strings to lists. Fixes#5218
- Add highlighting
- Automatically discover health checkers
- Add tests
Helped-by: Shougo Matsushita <Shougo.Matsu@gmail.com>
Helped-by: Tommy Allen <tommy@esdf.io>
Closes#4932
Regression from #5168. Also changed the Man command's nargs to '+' so
that man#open_page does not need to handle 0 arguments, because that
will never occur.
- Smart autocomplete. It's automatically sorted, filtered for duplicates
and even formats the candidates based on what is needed. For example,
`:Man 1 printf<TAB>` will show the pages that are in section 1m as
'page(sect)' to let you know they are in a more specific section.
- Instead of trying to unset $MANPAGER we use the -P flag to set the
pager to cat
- Always use the section arg '-s', it makes the code much simpler
(see comment in s:man-args).
- A manpage name starting with '-' is invalid. It's fine for sections
because of the use of '-s'.
- The tagstack is an actual stack now, makes it much simpler.
- By using v:count and v:count1, the plugin can explicitly check whether
the user set a count, instead of relying on a default value (0) that
is actually a real manpage section.
- Extraction of a manpage reference is much more simple. No giant long
complicated regexes. Now, the plugin lets `man` handle the actual
validation. We merely extract the section and page. Syntax regexes are
a bit more specific though to prevent highlighting everything.
- Multilingual support in the syntax file. Removed the cruft that was only
relevent to vim. Also simplified and improved many of the regexes.
- Using shellescape when sending the page and sect as arguments
- In general, the code flow is much more obvious.
- man#get_page has been split up into smaller functions with explicit
responsibilties
- ':help' behavior in opening splits and manpages
- Comments explaining anything that needs explaining and isn't
immediately obvious.
- If a manpage has already been loaded but if it were to reloaded at the
current width which is the same as the width at which it was loaded at
previously, it is not reloaded.
- Use substitute to remove the backspaced instead of `col -b`, as the
latter doesn't work with other languages.
- Open paths to manpages
- It uses cWORD instead of cword to get the manpage under the cursor, this
helps with files that do not have (,) in iskeyword. It also means the
plugin does not set iskeyword locally anymore.
- <Plug>(Man) mapping for easy remapping
- Switched to single quotes wherever possible.
- Updated docs in $VIMRUNTIME/doc/filetype.txt (still need to update
user-manual)
- Always call tolower on section name. See comment in
s:extract_page_and_sect_fpage
- Formatting/consistency cleanup
- Automatically map q to ':q<CR>' when invoked as $MANPAGER
- It also fully supports being used as $MANPAGER. Setting the name and
stuff automatically.
- Split up the setlocals into multiple lines for easier readability
- Better detection of errors by redirecting stderr to /dev/null. If an
error occured, stdout will be empty.
- Functions return [sect, page] not [page, sect]. Makes more sense with
how man takes the arguments as sect and then page.
- Pretty prints errors on a single line.
- If no section is given, automatically finds the correct section for
the buffer name. It also gets the correct page. See the comment in
s:get_page
- If $MANWIDTH is not set, do not assign directly to $MANWIDTH because
then $MANWIDTH will always stay set to the same value as we only use
winwidth(0) when the global $MANWIDTH is empty. Instead we set it
locally for the command.
- Maintainer notes on all files.