|
Karsten Hopp |
ae61a4 |
To: vim_dev@googlegroups.com
|
|
Karsten Hopp |
ae61a4 |
Subject: Patch 7.3.996
|
|
Karsten Hopp |
ae61a4 |
Fcc: outbox
|
|
Karsten Hopp |
ae61a4 |
From: Bram Moolenaar <Bram@moolenaar.net>
|
|
Karsten Hopp |
ae61a4 |
Mime-Version: 1.0
|
|
Karsten Hopp |
ae61a4 |
Content-Type: text/plain; charset=UTF-8
|
|
Karsten Hopp |
ae61a4 |
Content-Transfer-Encoding: 8bit
|
|
Karsten Hopp |
ae61a4 |
------------
|
|
Karsten Hopp |
ae61a4 |
|
|
Karsten Hopp |
ae61a4 |
Patch 7.3.996
|
|
Karsten Hopp |
ae61a4 |
Problem: Python: Can't check types of what is returned by bindeval().
|
|
Karsten Hopp |
ae61a4 |
Solution: Add vim.List, vim.Dictionary and vim.Function types. (ZyX)
|
|
Karsten Hopp |
ae61a4 |
Files: runtime/doc/if_pyth.txt, src/if_py_both.h, src/testdir/test86.in,
|
|
Karsten Hopp |
ae61a4 |
src/testdir/test86.ok, src/testdir/test87.in,
|
|
Karsten Hopp |
ae61a4 |
src/testdir/test87.ok
|
|
Karsten Hopp |
ae61a4 |
|
|
Karsten Hopp |
ae61a4 |
|
|
Karsten Hopp |
ae61a4 |
*** ../vim-7.3.995/runtime/doc/if_pyth.txt 2013-05-17 16:39:59.000000000 +0200
|
|
Karsten Hopp |
ae61a4 |
--- runtime/doc/if_pyth.txt 2013-05-21 19:21:58.000000000 +0200
|
|
Karsten Hopp |
ae61a4 |
***************
|
|
Karsten Hopp |
ae61a4 |
*** 11,19 ****
|
|
Karsten Hopp |
ae61a4 |
3. Buffer objects |python-buffer|
|
|
Karsten Hopp |
ae61a4 |
4. Range objects |python-range|
|
|
Karsten Hopp |
ae61a4 |
5. Window objects |python-window|
|
|
Karsten Hopp |
ae61a4 |
! 6. pyeval(), py3eval() Vim functions |python-pyeval|
|
|
Karsten Hopp |
ae61a4 |
! 7. Dynamic loading |python-dynamic|
|
|
Karsten Hopp |
ae61a4 |
! 8. Python 3 |python3|
|
|
Karsten Hopp |
ae61a4 |
|
|
Karsten Hopp |
ae61a4 |
{Vi does not have any of these commands}
|
|
Karsten Hopp |
ae61a4 |
|
|
Karsten Hopp |
ae61a4 |
--- 11,20 ----
|
|
Karsten Hopp |
ae61a4 |
3. Buffer objects |python-buffer|
|
|
Karsten Hopp |
ae61a4 |
4. Range objects |python-range|
|
|
Karsten Hopp |
ae61a4 |
5. Window objects |python-window|
|
|
Karsten Hopp |
ae61a4 |
! 6. Tab page objects |python-tabpage|
|
|
Karsten Hopp |
ae61a4 |
! 7. pyeval(), py3eval() Vim functions |python-pyeval|
|
|
Karsten Hopp |
ae61a4 |
! 8. Dynamic loading |python-dynamic|
|
|
Karsten Hopp |
ae61a4 |
! 9. Python 3 |python3|
|
|
Karsten Hopp |
ae61a4 |
|
|
Karsten Hopp |
ae61a4 |
{Vi does not have any of these commands}
|
|
Karsten Hopp |
ae61a4 |
|
|
Karsten Hopp |
ae61a4 |
***************
|
|
Karsten Hopp |
ae61a4 |
*** 176,182 ****
|
|
Karsten Hopp |
ae61a4 |
list or dictionary. Thus modifications to these objects imply
|
|
Karsten Hopp |
ae61a4 |
modifications of the original.
|
|
Karsten Hopp |
ae61a4 |
|
|
Karsten Hopp |
ae61a4 |
! Additionally, vimlist and vimdictionary type have read-write
|
|
Karsten Hopp |
ae61a4 |
`.locked` attribute that returns
|
|
Karsten Hopp |
ae61a4 |
Value Meaning ~
|
|
Karsten Hopp |
ae61a4 |
zero Variable is not locked
|
|
Karsten Hopp |
ae61a4 |
--- 177,183 ----
|
|
Karsten Hopp |
ae61a4 |
list or dictionary. Thus modifications to these objects imply
|
|
Karsten Hopp |
ae61a4 |
modifications of the original.
|
|
Karsten Hopp |
ae61a4 |
|
|
Karsten Hopp |
ae61a4 |
! Additionally, vim.List and vim.Dictionary type have read-write
|
|
Karsten Hopp |
ae61a4 |
`.locked` attribute that returns
|
|
Karsten Hopp |
ae61a4 |
Value Meaning ~
|
|
Karsten Hopp |
ae61a4 |
zero Variable is not locked
|
|
Karsten Hopp |
ae61a4 |
***************
|
|
Karsten Hopp |
ae61a4 |
*** 189,202 ****
|
|
Karsten Hopp |
ae61a4 |
case these locks are ignored by anything except |:let|: |extend()|
|
|
Karsten Hopp |
ae61a4 |
does not care, neither does python interface).
|
|
Karsten Hopp |
ae61a4 |
|
|
Karsten Hopp |
ae61a4 |
! Vimdictionary type also supports `.scope` attribute which is one of
|
|
Karsten Hopp |
ae61a4 |
Value Meaning ~
|
|
Karsten Hopp |
ae61a4 |
zero Dictionary is not a scope one
|
|
Karsten Hopp |
ae61a4 |
vim.VAR_DEF_SCOPE Function-local or global scope dictionary
|
|
Karsten Hopp |
ae61a4 |
vim.VAR_SCOPE Other scope dictionary
|
|
Karsten Hopp |
ae61a4 |
|
|
Karsten Hopp |
ae61a4 |
2. if expression evaluates to a function reference, then it returns
|
|
Karsten Hopp |
ae61a4 |
! callable vimfunction object. Use self keyword argument to assign
|
|
Karsten Hopp |
ae61a4 |
|self| object for dictionary functions.
|
|
Karsten Hopp |
ae61a4 |
|
|
Karsten Hopp |
ae61a4 |
Note: this function has the same behavior as |lua-eval| (except that
|
|
Karsten Hopp |
ae61a4 |
--- 190,204 ----
|
|
Karsten Hopp |
ae61a4 |
case these locks are ignored by anything except |:let|: |extend()|
|
|
Karsten Hopp |
ae61a4 |
does not care, neither does python interface).
|
|
Karsten Hopp |
ae61a4 |
|
|
Karsten Hopp |
ae61a4 |
! vim.Dictionary type also supports `.scope` attribute which is one
|
|
Karsten Hopp |
ae61a4 |
! of
|
|
Karsten Hopp |
ae61a4 |
Value Meaning ~
|
|
Karsten Hopp |
ae61a4 |
zero Dictionary is not a scope one
|
|
Karsten Hopp |
ae61a4 |
vim.VAR_DEF_SCOPE Function-local or global scope dictionary
|
|
Karsten Hopp |
ae61a4 |
vim.VAR_SCOPE Other scope dictionary
|
|
Karsten Hopp |
ae61a4 |
|
|
Karsten Hopp |
ae61a4 |
2. if expression evaluates to a function reference, then it returns
|
|
Karsten Hopp |
ae61a4 |
! callable vim.Function object. Use self keyword argument to assign
|
|
Karsten Hopp |
ae61a4 |
|self| object for dictionary functions.
|
|
Karsten Hopp |
ae61a4 |
|
|
Karsten Hopp |
ae61a4 |
Note: this function has the same behavior as |lua-eval| (except that
|
|
Karsten Hopp |
ae61a4 |
***************
|
|
Karsten Hopp |
ae61a4 |
*** 205,210 ****
|
|
Karsten Hopp |
ae61a4 |
--- 207,216 ----
|
|
Karsten Hopp |
ae61a4 |
relying on outputs of vim.eval() being a copy of original or
|
|
Karsten Hopp |
ae61a4 |
vim.eval("1") returning a string.
|
|
Karsten Hopp |
ae61a4 |
|
|
Karsten Hopp |
ae61a4 |
+ You can use "List", "Dictionary" and "Function" vim module attributes
|
|
Karsten Hopp |
ae61a4 |
+ to test whether object has given type. These types are currently not
|
|
Karsten Hopp |
ae61a4 |
+ subclassable, neither they contain constructors, so you can use them
|
|
Karsten Hopp |
ae61a4 |
+ only for checks like `isinstance(obj, vim.List)`.
|
|
Karsten Hopp |
ae61a4 |
|
|
Karsten Hopp |
ae61a4 |
|
|
Karsten Hopp |
ae61a4 |
Error object of the "vim" module
|
|
Karsten Hopp |
ae61a4 |
***************
|
|
Karsten Hopp |
ae61a4 |
*** 302,307 ****
|
|
Karsten Hopp |
ae61a4 |
--- 308,316 ----
|
|
Karsten Hopp |
ae61a4 |
buffer-local options and |python-window| objects to access to
|
|
Karsten Hopp |
ae61a4 |
window-local options.
|
|
Karsten Hopp |
ae61a4 |
|
|
Karsten Hopp |
ae61a4 |
+ Type of this object is available via "Options" attribute of vim
|
|
Karsten Hopp |
ae61a4 |
+ module.
|
|
Karsten Hopp |
ae61a4 |
+
|
|
Karsten Hopp |
ae61a4 |
Output from Python *python-output*
|
|
Karsten Hopp |
ae61a4 |
Vim displays all Python code output in the Vim message area. Normal
|
|
Karsten Hopp |
ae61a4 |
output appears as information messages, and error output appears as
|
|
Karsten Hopp |
ae61a4 |
***************
|
|
Karsten Hopp |
ae61a4 |
*** 371,376 ****
|
|
Karsten Hopp |
ae61a4 |
--- 380,387 ----
|
|
Karsten Hopp |
ae61a4 |
A trailing '\n' is allowed and ignored, so that you can do: >
|
|
Karsten Hopp |
ae61a4 |
:py b.append(f.readlines())
|
|
Karsten Hopp |
ae61a4 |
|
|
Karsten Hopp |
ae61a4 |
+ Buffer object type is available using "Buffer" attribute of vim module.
|
|
Karsten Hopp |
ae61a4 |
+
|
|
Karsten Hopp |
ae61a4 |
Examples (assume b is the current buffer) >
|
|
Karsten Hopp |
ae61a4 |
:py print b.name # write the buffer file name
|
|
Karsten Hopp |
ae61a4 |
:py b[0] = "hello!!!" # replace the top line
|
|
Karsten Hopp |
ae61a4 |
***************
|
|
Karsten Hopp |
ae61a4 |
*** 412,417 ****
|
|
Karsten Hopp |
ae61a4 |
--- 423,430 ----
|
|
Karsten Hopp |
ae61a4 |
for Python's built-in list objects.
|
|
Karsten Hopp |
ae61a4 |
r.append(list, nr) Idem, after line "nr"
|
|
Karsten Hopp |
ae61a4 |
|
|
Karsten Hopp |
ae61a4 |
+ Range object type is available using "Range" attribute of vim module.
|
|
Karsten Hopp |
ae61a4 |
+
|
|
Karsten Hopp |
ae61a4 |
Example (assume r is the current range):
|
|
Karsten Hopp |
ae61a4 |
# Send all lines in a range to the default printer
|
|
Karsten Hopp |
ae61a4 |
vim.command("%d,%dhardcopy!" % (r.start+1,r.end+1))
|
|
Karsten Hopp |
ae61a4 |
***************
|
|
Karsten Hopp |
ae61a4 |
*** 456,461 ****
|
|
Karsten Hopp |
ae61a4 |
--- 469,476 ----
|
|
Karsten Hopp |
ae61a4 |
The height attribute is writable only if the screen is split horizontally.
|
|
Karsten Hopp |
ae61a4 |
The width attribute is writable only if the screen is split vertically.
|
|
Karsten Hopp |
ae61a4 |
|
|
Karsten Hopp |
ae61a4 |
+ Window object type is available using "Window" attribute of vim module.
|
|
Karsten Hopp |
ae61a4 |
+
|
|
Karsten Hopp |
ae61a4 |
==============================================================================
|
|
Karsten Hopp |
ae61a4 |
6. Tab page objects *python-tabpage*
|
|
Karsten Hopp |
ae61a4 |
|
|
Karsten Hopp |
ae61a4 |
***************
|
|
Karsten Hopp |
ae61a4 |
*** 474,487 ****
|
|
Karsten Hopp |
ae61a4 |
vars The tab page |t:| variables.
|
|
Karsten Hopp |
ae61a4 |
window Current tabpage window.
|
|
Karsten Hopp |
ae61a4 |
|
|
Karsten Hopp |
ae61a4 |
==============================================================================
|
|
Karsten Hopp |
ae61a4 |
! 6. pyeval() and py3eval() Vim functions *python-pyeval*
|
|
Karsten Hopp |
ae61a4 |
|
|
Karsten Hopp |
ae61a4 |
To facilitate bi-directional interface, you can use |pyeval()| and |py3eval()|
|
|
Karsten Hopp |
ae61a4 |
functions to evaluate Python expressions and pass their values to VimL.
|
|
Karsten Hopp |
ae61a4 |
|
|
Karsten Hopp |
ae61a4 |
==============================================================================
|
|
Karsten Hopp |
ae61a4 |
! 7. Dynamic loading *python-dynamic*
|
|
Karsten Hopp |
ae61a4 |
|
|
Karsten Hopp |
ae61a4 |
On MS-Windows the Python library can be loaded dynamically. The |:version|
|
|
Karsten Hopp |
ae61a4 |
output then includes |+python/dyn|.
|
|
Karsten Hopp |
ae61a4 |
--- 489,504 ----
|
|
Karsten Hopp |
ae61a4 |
vars The tab page |t:| variables.
|
|
Karsten Hopp |
ae61a4 |
window Current tabpage window.
|
|
Karsten Hopp |
ae61a4 |
|
|
Karsten Hopp |
ae61a4 |
+ TabPage object type is available using "TabPage" attribute of vim module.
|
|
Karsten Hopp |
ae61a4 |
+
|
|
Karsten Hopp |
ae61a4 |
==============================================================================
|
|
Karsten Hopp |
ae61a4 |
! 7. pyeval() and py3eval() Vim functions *python-pyeval*
|
|
Karsten Hopp |
ae61a4 |
|
|
Karsten Hopp |
ae61a4 |
To facilitate bi-directional interface, you can use |pyeval()| and |py3eval()|
|
|
Karsten Hopp |
ae61a4 |
functions to evaluate Python expressions and pass their values to VimL.
|
|
Karsten Hopp |
ae61a4 |
|
|
Karsten Hopp |
ae61a4 |
==============================================================================
|
|
Karsten Hopp |
ae61a4 |
! 8. Dynamic loading *python-dynamic*
|
|
Karsten Hopp |
ae61a4 |
|
|
Karsten Hopp |
ae61a4 |
On MS-Windows the Python library can be loaded dynamically. The |:version|
|
|
Karsten Hopp |
ae61a4 |
output then includes |+python/dyn|.
|
|
Karsten Hopp |
ae61a4 |
***************
|
|
Karsten Hopp |
ae61a4 |
*** 498,504 ****
|
|
Karsten Hopp |
ae61a4 |
sure edit "gvim.exe" and search for "python\d*.dll\c".
|
|
Karsten Hopp |
ae61a4 |
|
|
Karsten Hopp |
ae61a4 |
==============================================================================
|
|
Karsten Hopp |
ae61a4 |
! 8. Python 3 *python3*
|
|
Karsten Hopp |
ae61a4 |
|
|
Karsten Hopp |
ae61a4 |
*:py3* *:python3*
|
|
Karsten Hopp |
ae61a4 |
The `:py3` and `:python3` commands work similar to `:python`. A simple check
|
|
Karsten Hopp |
ae61a4 |
--- 515,521 ----
|
|
Karsten Hopp |
ae61a4 |
sure edit "gvim.exe" and search for "python\d*.dll\c".
|
|
Karsten Hopp |
ae61a4 |
|
|
Karsten Hopp |
ae61a4 |
==============================================================================
|
|
Karsten Hopp |
ae61a4 |
! 9. Python 3 *python3*
|
|
Karsten Hopp |
ae61a4 |
|
|
Karsten Hopp |
ae61a4 |
*:py3* *:python3*
|
|
Karsten Hopp |
ae61a4 |
The `:py3` and `:python3` commands work similar to `:python`. A simple check
|
|
Karsten Hopp |
ae61a4 |
*** ../vim-7.3.995/src/if_py_both.h 2013-05-21 19:10:56.000000000 +0200
|
|
Karsten Hopp |
ae61a4 |
--- src/if_py_both.h 2013-05-21 19:21:58.000000000 +0200
|
|
Karsten Hopp |
ae61a4 |
***************
|
|
Karsten Hopp |
ae61a4 |
*** 4245,4250 ****
|
|
Karsten Hopp |
ae61a4 |
--- 4245,4259 ----
|
|
Karsten Hopp |
ae61a4 |
{"windows", (PyObject *)(void *)&TheWindowList},
|
|
Karsten Hopp |
ae61a4 |
{"tabpages", (PyObject *)(void *)&TheTabPageList},
|
|
Karsten Hopp |
ae61a4 |
{"current", (PyObject *)(void *)&TheCurrent},
|
|
Karsten Hopp |
ae61a4 |
+
|
|
Karsten Hopp |
ae61a4 |
+ {"Buffer", (PyObject *)&BufferType},
|
|
Karsten Hopp |
ae61a4 |
+ {"Range", (PyObject *)&RangeType},
|
|
Karsten Hopp |
ae61a4 |
+ {"Window", (PyObject *)&WindowType},
|
|
Karsten Hopp |
ae61a4 |
+ {"TabPage", (PyObject *)&TabPageType},
|
|
Karsten Hopp |
ae61a4 |
+ {"Dictionary", (PyObject *)&DictionaryType},
|
|
Karsten Hopp |
ae61a4 |
+ {"List", (PyObject *)&ListType},
|
|
Karsten Hopp |
ae61a4 |
+ {"Function", (PyObject *)&FunctionType},
|
|
Karsten Hopp |
ae61a4 |
+ {"Options", (PyObject *)&OptionsType},
|
|
Karsten Hopp |
ae61a4 |
};
|
|
Karsten Hopp |
ae61a4 |
|
|
Karsten Hopp |
ae61a4 |
typedef int (*object_adder)(PyObject *, const char *, PyObject *);
|
|
Karsten Hopp |
ae61a4 |
*** ../vim-7.3.995/src/testdir/test86.in 2013-05-17 13:37:57.000000000 +0200
|
|
Karsten Hopp |
ae61a4 |
--- src/testdir/test86.in 2013-05-21 19:21:58.000000000 +0200
|
|
Karsten Hopp |
ae61a4 |
***************
|
|
Karsten Hopp |
ae61a4 |
*** 631,640 ****
|
|
Karsten Hopp |
ae61a4 |
cb.append('Current line: ' + repr(vim.current.line))
|
|
Karsten Hopp |
ae61a4 |
for b in vim.buffers:
|
|
Karsten Hopp |
ae61a4 |
if b is not cb:
|
|
Karsten Hopp |
ae61a4 |
! vim.command('bwipeout! ' + b.number)
|
|
Karsten Hopp |
ae61a4 |
EOF
|
|
Karsten Hopp |
ae61a4 |
:tabonly!
|
|
Karsten Hopp |
ae61a4 |
:only!
|
|
Karsten Hopp |
ae61a4 |
:endfun
|
|
Karsten Hopp |
ae61a4 |
:"
|
|
Karsten Hopp |
ae61a4 |
:call Test()
|
|
Karsten Hopp |
ae61a4 |
--- 631,656 ----
|
|
Karsten Hopp |
ae61a4 |
cb.append('Current line: ' + repr(vim.current.line))
|
|
Karsten Hopp |
ae61a4 |
for b in vim.buffers:
|
|
Karsten Hopp |
ae61a4 |
if b is not cb:
|
|
Karsten Hopp |
ae61a4 |
! vim.command('bwipeout! ' + str(b.number))
|
|
Karsten Hopp |
ae61a4 |
EOF
|
|
Karsten Hopp |
ae61a4 |
:tabonly!
|
|
Karsten Hopp |
ae61a4 |
:only!
|
|
Karsten Hopp |
ae61a4 |
+ :"
|
|
Karsten Hopp |
ae61a4 |
+ :" Test types
|
|
Karsten Hopp |
ae61a4 |
+ py << EOF
|
|
Karsten Hopp |
ae61a4 |
+ for expr, attr in (
|
|
Karsten Hopp |
ae61a4 |
+ ('vim.vars', 'Dictionary'),
|
|
Karsten Hopp |
ae61a4 |
+ ('vim.options', 'Options'),
|
|
Karsten Hopp |
ae61a4 |
+ ('vim.bindeval("{}")', 'Dictionary'),
|
|
Karsten Hopp |
ae61a4 |
+ ('vim.bindeval("[]")', 'List'),
|
|
Karsten Hopp |
ae61a4 |
+ ('vim.bindeval("function(\'tr\')")', 'Function'),
|
|
Karsten Hopp |
ae61a4 |
+ ('vim.current.buffer', 'Buffer'),
|
|
Karsten Hopp |
ae61a4 |
+ ('vim.current.range', 'Range'),
|
|
Karsten Hopp |
ae61a4 |
+ ('vim.current.window', 'Window'),
|
|
Karsten Hopp |
ae61a4 |
+ ('vim.current.tabpage', 'TabPage'),
|
|
Karsten Hopp |
ae61a4 |
+ ):
|
|
Karsten Hopp |
ae61a4 |
+ cb.append(expr + ':' + attr + ':' + repr(type(eval(expr)) is getattr(vim, attr)))
|
|
Karsten Hopp |
ae61a4 |
+ EOF
|
|
Karsten Hopp |
ae61a4 |
:endfun
|
|
Karsten Hopp |
ae61a4 |
:"
|
|
Karsten Hopp |
ae61a4 |
:call Test()
|
|
Karsten Hopp |
ae61a4 |
*** ../vim-7.3.995/src/testdir/test86.ok 2013-05-17 16:18:27.000000000 +0200
|
|
Karsten Hopp |
ae61a4 |
--- src/testdir/test86.ok 2013-05-21 19:21:58.000000000 +0200
|
|
Karsten Hopp |
ae61a4 |
***************
|
|
Karsten Hopp |
ae61a4 |
*** 333,339 ****
|
|
Karsten Hopp |
ae61a4 |
Current tab pages:
|
|
Karsten Hopp |
ae61a4 |
<tabpage 0>(1): 1 windows, current is <window object (unknown)>
|
|
Karsten Hopp |
ae61a4 |
Windows:
|
|
Karsten Hopp |
ae61a4 |
! <window object (unknown)>(1): displays buffer <buffer test86.in>; cursor is at (954, 0)
|
|
Karsten Hopp |
ae61a4 |
<tabpage 1>(2): 1 windows, current is <window object (unknown)>
|
|
Karsten Hopp |
ae61a4 |
Windows:
|
|
Karsten Hopp |
ae61a4 |
<window object (unknown)>(1): displays buffer <buffer 0>; cursor is at (1, 0)
|
|
Karsten Hopp |
ae61a4 |
--- 333,339 ----
|
|
Karsten Hopp |
ae61a4 |
Current tab pages:
|
|
Karsten Hopp |
ae61a4 |
<tabpage 0>(1): 1 windows, current is <window object (unknown)>
|
|
Karsten Hopp |
ae61a4 |
Windows:
|
|
Karsten Hopp |
ae61a4 |
! <window object (unknown)>(1): displays buffer <buffer test86.in>; cursor is at (970, 0)
|
|
Karsten Hopp |
ae61a4 |
<tabpage 1>(2): 1 windows, current is <window object (unknown)>
|
|
Karsten Hopp |
ae61a4 |
Windows:
|
|
Karsten Hopp |
ae61a4 |
<window object (unknown)>(1): displays buffer <buffer 0>; cursor is at (1, 0)
|
|
Karsten Hopp |
ae61a4 |
***************
|
|
Karsten Hopp |
ae61a4 |
*** 359,361 ****
|
|
Karsten Hopp |
ae61a4 |
--- 359,370 ----
|
|
Karsten Hopp |
ae61a4 |
Current window: <window 0>
|
|
Karsten Hopp |
ae61a4 |
Current buffer: <buffer test86.in>
|
|
Karsten Hopp |
ae61a4 |
Current line: 'Type error at assigning None to vim.current.buffer'
|
|
Karsten Hopp |
ae61a4 |
+ vim.vars:Dictionary:True
|
|
Karsten Hopp |
ae61a4 |
+ vim.options:Options:True
|
|
Karsten Hopp |
ae61a4 |
+ vim.bindeval("{}"):Dictionary:True
|
|
Karsten Hopp |
ae61a4 |
+ vim.bindeval("[]"):List:True
|
|
Karsten Hopp |
ae61a4 |
+ vim.bindeval("function('tr')"):Function:True
|
|
Karsten Hopp |
ae61a4 |
+ vim.current.buffer:Buffer:True
|
|
Karsten Hopp |
ae61a4 |
+ vim.current.range:Range:True
|
|
Karsten Hopp |
ae61a4 |
+ vim.current.window:Window:True
|
|
Karsten Hopp |
ae61a4 |
+ vim.current.tabpage:TabPage:True
|
|
Karsten Hopp |
ae61a4 |
*** ../vim-7.3.995/src/testdir/test87.in 2013-05-17 13:37:57.000000000 +0200
|
|
Karsten Hopp |
ae61a4 |
--- src/testdir/test87.in 2013-05-21 19:21:58.000000000 +0200
|
|
Karsten Hopp |
ae61a4 |
***************
|
|
Karsten Hopp |
ae61a4 |
*** 622,627 ****
|
|
Karsten Hopp |
ae61a4 |
--- 622,643 ----
|
|
Karsten Hopp |
ae61a4 |
EOF
|
|
Karsten Hopp |
ae61a4 |
:tabonly!
|
|
Karsten Hopp |
ae61a4 |
:only!
|
|
Karsten Hopp |
ae61a4 |
+ :"
|
|
Karsten Hopp |
ae61a4 |
+ :" Test types
|
|
Karsten Hopp |
ae61a4 |
+ py3 << EOF
|
|
Karsten Hopp |
ae61a4 |
+ for expr, attr in (
|
|
Karsten Hopp |
ae61a4 |
+ ('vim.vars', 'Dictionary'),
|
|
Karsten Hopp |
ae61a4 |
+ ('vim.options', 'Options'),
|
|
Karsten Hopp |
ae61a4 |
+ ('vim.bindeval("{}")', 'Dictionary'),
|
|
Karsten Hopp |
ae61a4 |
+ ('vim.bindeval("[]")', 'List'),
|
|
Karsten Hopp |
ae61a4 |
+ ('vim.bindeval("function(\'tr\')")', 'Function'),
|
|
Karsten Hopp |
ae61a4 |
+ ('vim.current.buffer', 'Buffer'),
|
|
Karsten Hopp |
ae61a4 |
+ ('vim.current.range', 'Range'),
|
|
Karsten Hopp |
ae61a4 |
+ ('vim.current.window', 'Window'),
|
|
Karsten Hopp |
ae61a4 |
+ ('vim.current.tabpage', 'TabPage'),
|
|
Karsten Hopp |
ae61a4 |
+ ):
|
|
Karsten Hopp |
ae61a4 |
+ cb.append(expr + ':' + attr + ':' + repr(type(eval(expr)) is getattr(vim, attr)))
|
|
Karsten Hopp |
ae61a4 |
+ EOF
|
|
Karsten Hopp |
ae61a4 |
:endfun
|
|
Karsten Hopp |
ae61a4 |
:"
|
|
Karsten Hopp |
ae61a4 |
:call Test()
|
|
Karsten Hopp |
ae61a4 |
*** ../vim-7.3.995/src/testdir/test87.ok 2013-05-21 18:19:33.000000000 +0200
|
|
Karsten Hopp |
ae61a4 |
--- src/testdir/test87.ok 2013-05-21 19:21:58.000000000 +0200
|
|
Karsten Hopp |
ae61a4 |
***************
|
|
Karsten Hopp |
ae61a4 |
*** 322,328 ****
|
|
Karsten Hopp |
ae61a4 |
Current tab pages:
|
|
Karsten Hopp |
ae61a4 |
<tabpage 0>(1): 1 windows, current is <window object (unknown)>
|
|
Karsten Hopp |
ae61a4 |
Windows:
|
|
Karsten Hopp |
ae61a4 |
! <window object (unknown)>(1): displays buffer <buffer test87.in>; cursor is at (930, 0)
|
|
Karsten Hopp |
ae61a4 |
<tabpage 1>(2): 1 windows, current is <window object (unknown)>
|
|
Karsten Hopp |
ae61a4 |
Windows:
|
|
Karsten Hopp |
ae61a4 |
<window object (unknown)>(1): displays buffer <buffer 0>; cursor is at (1, 0)
|
|
Karsten Hopp |
ae61a4 |
--- 322,328 ----
|
|
Karsten Hopp |
ae61a4 |
Current tab pages:
|
|
Karsten Hopp |
ae61a4 |
<tabpage 0>(1): 1 windows, current is <window object (unknown)>
|
|
Karsten Hopp |
ae61a4 |
Windows:
|
|
Karsten Hopp |
ae61a4 |
! <window object (unknown)>(1): displays buffer <buffer test87.in>; cursor is at (946, 0)
|
|
Karsten Hopp |
ae61a4 |
<tabpage 1>(2): 1 windows, current is <window object (unknown)>
|
|
Karsten Hopp |
ae61a4 |
Windows:
|
|
Karsten Hopp |
ae61a4 |
<window object (unknown)>(1): displays buffer <buffer 0>; cursor is at (1, 0)
|
|
Karsten Hopp |
ae61a4 |
***************
|
|
Karsten Hopp |
ae61a4 |
*** 348,350 ****
|
|
Karsten Hopp |
ae61a4 |
--- 348,359 ----
|
|
Karsten Hopp |
ae61a4 |
Current window: <window 0>
|
|
Karsten Hopp |
ae61a4 |
Current buffer: <buffer test87.in>
|
|
Karsten Hopp |
ae61a4 |
Current line: 'Type error at assigning None to vim.current.buffer'
|
|
Karsten Hopp |
ae61a4 |
+ vim.vars:Dictionary:True
|
|
Karsten Hopp |
ae61a4 |
+ vim.options:Options:True
|
|
Karsten Hopp |
ae61a4 |
+ vim.bindeval("{}"):Dictionary:True
|
|
Karsten Hopp |
ae61a4 |
+ vim.bindeval("[]"):List:True
|
|
Karsten Hopp |
ae61a4 |
+ vim.bindeval("function('tr')"):Function:True
|
|
Karsten Hopp |
ae61a4 |
+ vim.current.buffer:Buffer:True
|
|
Karsten Hopp |
ae61a4 |
+ vim.current.range:Range:True
|
|
Karsten Hopp |
ae61a4 |
+ vim.current.window:Window:True
|
|
Karsten Hopp |
ae61a4 |
+ vim.current.tabpage:TabPage:True
|
|
Karsten Hopp |
ae61a4 |
*** ../vim-7.3.995/src/version.c 2013-05-21 19:10:56.000000000 +0200
|
|
Karsten Hopp |
ae61a4 |
--- src/version.c 2013-05-21 19:48:38.000000000 +0200
|
|
Karsten Hopp |
ae61a4 |
***************
|
|
Karsten Hopp |
ae61a4 |
*** 730,731 ****
|
|
Karsten Hopp |
ae61a4 |
--- 730,733 ----
|
|
Karsten Hopp |
ae61a4 |
{ /* Add new patch number below this line */
|
|
Karsten Hopp |
ae61a4 |
+ /**/
|
|
Karsten Hopp |
ae61a4 |
+ 996,
|
|
Karsten Hopp |
ae61a4 |
/**/
|
|
Karsten Hopp |
ae61a4 |
|
|
Karsten Hopp |
ae61a4 |
--
|
|
Karsten Hopp |
ae61a4 |
SUPERIMPOSE "England AD 787". After a few more seconds we hear hoofbeats in
|
|
Karsten Hopp |
ae61a4 |
the distance. They come slowly closer. Then out of the mist comes KING
|
|
Karsten Hopp |
ae61a4 |
ARTHUR followed by a SERVANT who is banging two half coconuts together.
|
|
Karsten Hopp |
ae61a4 |
"Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
|
|
Karsten Hopp |
ae61a4 |
|
|
Karsten Hopp |
ae61a4 |
/// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
|
|
Karsten Hopp |
ae61a4 |
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
|
|
Karsten Hopp |
ae61a4 |
\\\ an exciting new programming language -- http://www.Zimbu.org ///
|
|
Karsten Hopp |
ae61a4 |
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
|