mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
doc/if_pyth: Cleanup
Much of this has been outdated for while. Helped-by: Florian Walch <florian@fwalch.com>
This commit is contained in:
parent
818f7aefd2
commit
a9aacb74f0
@ -14,14 +14,9 @@ The Python Interface to Vim *python* *Python*
|
||||
6. Tab page objects |python-tabpage|
|
||||
7. vim.bindeval objects |python-bindeval-objects|
|
||||
8. pyeval(), py3eval() Vim functions |python-pyeval|
|
||||
9. Dynamic loading |python-dynamic|
|
||||
10. Python 3 |python3|
|
||||
9. Python 3 |python3|
|
||||
|
||||
The Python 2.x interface is available only when Vim was compiled with the
|
||||
|+python| feature.
|
||||
The Python 3 interface is available only when Vim was compiled with the
|
||||
|+python3| feature.
|
||||
Both can be available at the same time, but read |python-2-and-3|.
|
||||
See |nvim-python| for more information. {Nvim}
|
||||
|
||||
==============================================================================
|
||||
1. Commands *python-commands*
|
||||
@ -36,9 +31,8 @@ Both can be available at the same time, but read |python-2-and-3|.
|
||||
{script}
|
||||
{endmarker}
|
||||
Execute Python script {script}.
|
||||
Note: This command doesn't work when the Python
|
||||
feature wasn't compiled in. To avoid errors, see
|
||||
|script-here|.
|
||||
Note: This command doesn't work when Python isn't
|
||||
available. To avoid errors, see |script-here|.
|
||||
|
||||
{endmarker} must NOT be preceded by any white space. If {endmarker} is
|
||||
omitted from after the "<<", a dot '.' must be used after {script}, like
|
||||
@ -697,24 +691,7 @@ To facilitate bi-directional interface, you can use |pyeval()| and |py3eval()|
|
||||
functions to evaluate Python expressions and pass their values to VimL.
|
||||
|
||||
==============================================================================
|
||||
9. Dynamic loading *python-dynamic*
|
||||
|
||||
On MS-Windows the Python library can be loaded dynamically. The |:version|
|
||||
output then includes |+python/dyn|.
|
||||
|
||||
This means that Vim will search for the Python DLL file only when needed.
|
||||
When you don't use the Python interface you don't need it, thus you can use
|
||||
Vim without this DLL file.
|
||||
|
||||
To use the Python interface the Python DLL must be in your search path. In a
|
||||
console window type "path" to see what directories are used.
|
||||
|
||||
The name of the DLL must match the Python version Vim was compiled with.
|
||||
Currently the name is "python24.dll". That is for Python 2.4. To know for
|
||||
sure edit "gvim.exe" and search for "python\d*.dll\c".
|
||||
|
||||
==============================================================================
|
||||
10. Python 3 *python3*
|
||||
9. Python 3 *python3*
|
||||
|
||||
*:py3* *:python3*
|
||||
The `:py3` and `:python3` commands work similar to `:python`. A simple check
|
||||
@ -725,47 +702,10 @@ The `:py3file` command works similar to `:pyfile`.
|
||||
*:py3do* *E863*
|
||||
The `:py3do` command works similar to `:pydo`.
|
||||
|
||||
|
||||
Vim can be built in four ways (:version output):
|
||||
1. No Python support (-python, -python3)
|
||||
2. Python 2 support only (+python or +python/dyn, -python3)
|
||||
3. Python 3 support only (-python, +python3 or +python3/dyn)
|
||||
4. Python 2 and 3 support (+python/dyn, +python3/dyn)
|
||||
|
||||
Some more details on the special case 4: *python-2-and-3*
|
||||
|
||||
When Python 2 and Python 3 are both supported they must be loaded dynamically.
|
||||
|
||||
When doing this on Linux/Unix systems and importing global symbols, this leads
|
||||
to a crash when the second Python version is used. So either global symbols
|
||||
are loaded but only one Python version is activated, or no global symbols are
|
||||
loaded. The latter makes Python's "import" fail on libraries that expect the
|
||||
symbols to be provided by Vim.
|
||||
*E836* *E837*
|
||||
Vim's configuration script makes a guess for all libraries based on one
|
||||
standard Python library (termios). If importing this library succeeds for
|
||||
both Python versions, then both will be made available in Vim at the same
|
||||
time. If not, only the version first used in a session will be enabled.
|
||||
When trying to use the other one you will get the E836 or E837 error message.
|
||||
|
||||
Here Vim's behavior depends on the system in which it was configured. In a
|
||||
system where both versions of Python were configured with --enable-shared,
|
||||
both versions of Python will be activated at the same time. There will still
|
||||
be problems with other third party libraries that were not linked to
|
||||
libPython.
|
||||
|
||||
To work around such problems there are these options:
|
||||
1. The problematic library is recompiled to link to the according
|
||||
libpython.so.
|
||||
2. Vim is recompiled for only one Python version.
|
||||
3. You undefine PY_NO_RTLD_GLOBAL in auto/config.h after configuration. This
|
||||
may crash Vim though.
|
||||
|
||||
*E880*
|
||||
Raising SystemExit exception in python isn't endorsed way to quit vim, use: >
|
||||
:py vim.command("qall!")
|
||||
<
|
||||
|
||||
*has-python*
|
||||
You can test what Python version is available with: >
|
||||
if has('python')
|
||||
@ -774,10 +714,8 @@ You can test what Python version is available with: >
|
||||
echo 'there is Python 3.x'
|
||||
endif
|
||||
|
||||
Note however, that when Python 2 and 3 are both available and loaded
|
||||
dynamically, these has() calls will try to load them. If only one can be
|
||||
loaded at a time, just checking if Python 2 or 3 are available will prevent
|
||||
the other one from being available.
|
||||
Note however, that if Python 2 and 3 are both available, but not loaded,
|
||||
these has() calls will try to load them.
|
||||
|
||||
==============================================================================
|
||||
vim:tw=78:ts=8:ft=help:norl:
|
||||
|
@ -380,9 +380,7 @@ N *+persistent_undo* Persistent undo |undo-persistence|
|
||||
N *+printer* |:hardcopy| command
|
||||
H *+profile* |:profile| command
|
||||
m *+python* Python 2 interface |python|
|
||||
m *+python/dyn* Python 2 interface |python-dynamic| |/dyn|
|
||||
m *+python3* Python 3 interface |python|
|
||||
m *+python3/dyn* Python 3 interface |python-dynamic| |/dyn|
|
||||
N *+quickfix* |:make| and |quickfix| commands
|
||||
N *+reltime* |reltime()| function, 'hlsearch'/'incsearch' timeout,
|
||||
'redrawtime' option
|
||||
|
Loading…
Reference in New Issue
Block a user