home *** CD-ROM | disk | FTP | other *** search
- To: vim_dev@googlegroups.com
- Subject: Patch 7.3.945
- Fcc: outbox
- From: Bram Moolenaar <Bram@moolenaar.net>
- Mime-Version: 1.0
- Content-Type: text/plain; charset=UTF-8
- Content-Transfer-Encoding: 8bit
- ------------
-
- Patch 7.3.945
- Problem: Python: List of buffers is not very useful.
- Solution: Make vim.buffers a map. No iterator yet. (ZyX)
- Files: runtime/doc/if_pyth.txt, src/if_py_both.h, src/if_python3.c,
- src/if_python.c, src/testdir/test86.ok, src/testdir/test87.ok
-
-
- *** ../vim-7.3.944/runtime/doc/if_pyth.txt 2013-05-12 19:30:27.000000000 +0200
- --- runtime/doc/if_pyth.txt 2013-05-15 13:34:06.000000000 +0200
- ***************
- *** 209,220 ****
- to which the variables referred.
-
- vim.buffers *python-buffers*
- ! A sequence object providing access to the list of vim buffers. The
- object supports the following operations: >
- :py b = vim.buffers[i] # Indexing (read-only)
- :py b in vim.buffers # Membership test
- :py n = len(vim.buffers) # Number of elements
- - :py for b in vim.buffers: # Sequential access
- <
- vim.windows *python-windows*
- A sequence object providing access to the list of vim windows. The
- --- 209,219 ----
- to which the variables referred.
-
- vim.buffers *python-buffers*
- ! A mapping object providing access to the list of vim buffers. The
- object supports the following operations: >
- :py b = vim.buffers[i] # Indexing (read-only)
- :py b in vim.buffers # Membership test
- :py n = len(vim.buffers) # Number of elements
- <
- vim.windows *python-windows*
- A sequence object providing access to the list of vim windows. The
- *** ../vim-7.3.944/src/if_py_both.h 2013-05-12 21:16:17.000000000 +0200
- --- src/if_py_both.h 2013-05-15 13:34:06.000000000 +0200
- ***************
- *** 534,549 ****
- * Buffer list object - Implementation
- */
-
- ! static PyTypeObject BufListType;
- ! static PySequenceMethods BufListAsSeq;
-
- typedef struct
- {
- PyObject_HEAD
- ! } BufListObject;
-
- static PyInt
- ! BufListLength(PyObject *self UNUSED)
- {
- buf_T *b = firstbuf;
- PyInt n = 0;
- --- 534,548 ----
- * Buffer list object - Implementation
- */
-
- ! static PyTypeObject BufMapType;
-
- typedef struct
- {
- PyObject_HEAD
- ! } BufMapObject;
-
- static PyInt
- ! BufMapLength(PyObject *self UNUSED)
- {
- buf_T *b = firstbuf;
- PyInt n = 0;
- ***************
- *** 558,577 ****
- }
-
- static PyObject *
- ! BufListItem(PyObject *self UNUSED, PyInt n)
- {
- ! buf_T *b;
-
- ! for (b = firstbuf; b; b = b->b_next, --n)
- {
- ! if (n == 0)
- ! return BufferNew(b);
- }
-
- ! PyErr_SetString(PyExc_IndexError, _("no such buffer"));
- ! return NULL;
- }
-
- typedef struct pylinkedlist_S {
- struct pylinkedlist_S *pll_next;
- struct pylinkedlist_S *pll_prev;
- --- 557,597 ----
- }
-
- static PyObject *
- ! BufMapItem(PyObject *self UNUSED, PyObject *keyObject)
- {
- ! buf_T *b;
- ! int bnr;
-
- ! #if PY_MAJOR_VERSION < 3
- ! if (PyInt_Check(keyObject))
- ! bnr = PyInt_AsLong(keyObject);
- ! else
- ! #endif
- ! if (PyLong_Check(keyObject))
- ! bnr = PyLong_AsLong(keyObject);
- ! else
- {
- ! PyErr_SetString(PyExc_ValueError, _("key must be integer"));
- ! return NULL;
- }
-
- ! b = buflist_findnr(bnr);
- !
- ! if (b)
- ! return BufferNew(b);
- ! else
- ! {
- ! PyErr_SetString(PyExc_KeyError, _("no such buffer"));
- ! return NULL;
- ! }
- }
-
- + static PyMappingMethods BufMapAsMapping = {
- + (lenfunc) BufMapLength,
- + (binaryfunc) BufMapItem,
- + (objobjargproc) 0,
- + };
- +
- typedef struct pylinkedlist_S {
- struct pylinkedlist_S *pll_next;
- struct pylinkedlist_S *pll_prev;
- ***************
- *** 3401,3411 ****
- WindowType.tp_setattr = WindowSetattr;
- #endif
-
- ! vim_memset(&BufListType, 0, sizeof(BufListType));
- ! BufListType.tp_name = "vim.bufferlist";
- ! BufListType.tp_basicsize = sizeof(BufListObject);
- ! BufListType.tp_as_sequence = &BufListAsSeq;
- ! BufListType.tp_flags = Py_TPFLAGS_DEFAULT;
- BufferType.tp_doc = "vim buffer list";
-
- vim_memset(&WinListType, 0, sizeof(WinListType));
- --- 3421,3431 ----
- WindowType.tp_setattr = WindowSetattr;
- #endif
-
- ! vim_memset(&BufMapType, 0, sizeof(BufMapType));
- ! BufMapType.tp_name = "vim.bufferlist";
- ! BufMapType.tp_basicsize = sizeof(BufMapObject);
- ! BufMapType.tp_as_mapping = &BufMapAsMapping;
- ! BufMapType.tp_flags = Py_TPFLAGS_DEFAULT;
- BufferType.tp_doc = "vim buffer list";
-
- vim_memset(&WinListType, 0, sizeof(WinListType));
- *** ../vim-7.3.944/src/if_python3.c 2013-05-12 21:16:17.000000000 +0200
- --- src/if_python3.c 2013-05-15 13:34:06.000000000 +0200
- ***************
- *** 1272,1293 ****
- }
- }
-
- - /* Buffer list object - Definitions
- - */
- -
- - static PySequenceMethods BufListAsSeq = {
- - (lenfunc) BufListLength, /* sq_length, len(x) */
- - (binaryfunc) 0, /* sq_concat, x+y */
- - (ssizeargfunc) 0, /* sq_repeat, x*n */
- - (ssizeargfunc) BufListItem, /* sq_item, x[i] */
- - 0, /* was_sq_slice, x[i:j] */
- - (ssizeobjargproc) 0, /* sq_as_item, x[i]=v */
- - 0, /* sq_ass_slice, x[i:j]=v */
- - 0, /* sq_contains */
- - 0, /* sq_inplace_concat */
- - 0, /* sq_inplace_repeat */
- - };
- -
- /* Window object - Implementation
- */
-
- --- 1272,1277 ----
- ***************
- *** 1512,1520 ****
- }
- #endif
-
- ! static BufListObject TheBufferList =
- {
- ! PyObject_HEAD_INIT(&BufListType)
- };
-
- static WinListObject TheWindowList =
- --- 1496,1504 ----
- }
- #endif
-
- ! static BufMapObject TheBufferMap =
- {
- ! PyObject_HEAD_INIT(&BufMapType)
- };
-
- static WinListObject TheWindowList =
- ***************
- *** 1538,1544 ****
- PyType_Ready(&BufferType);
- PyType_Ready(&RangeType);
- PyType_Ready(&WindowType);
- ! PyType_Ready(&BufListType);
- PyType_Ready(&WinListType);
- PyType_Ready(&CurrentType);
- PyType_Ready(&DictionaryType);
- --- 1522,1528 ----
- PyType_Ready(&BufferType);
- PyType_Ready(&RangeType);
- PyType_Ready(&WindowType);
- ! PyType_Ready(&BufMapType);
- PyType_Ready(&WinListType);
- PyType_Ready(&CurrentType);
- PyType_Ready(&DictionaryType);
- ***************
- *** 1557,1564 ****
- Py_INCREF(VimError);
-
- PyModule_AddObject(mod, "error", VimError);
- ! Py_INCREF((PyObject *)(void *)&TheBufferList);
- ! PyModule_AddObject(mod, "buffers", (PyObject *)(void *)&TheBufferList);
- Py_INCREF((PyObject *)(void *)&TheCurrent);
- PyModule_AddObject(mod, "current", (PyObject *)(void *)&TheCurrent);
- Py_INCREF((PyObject *)(void *)&TheWindowList);
- --- 1541,1548 ----
- Py_INCREF(VimError);
-
- PyModule_AddObject(mod, "error", VimError);
- ! Py_INCREF((PyObject *)(void *)&TheBufferMap);
- ! PyModule_AddObject(mod, "buffers", (PyObject *)(void *)&TheBufferMap);
- Py_INCREF((PyObject *)(void *)&TheCurrent);
- PyModule_AddObject(mod, "current", (PyObject *)(void *)&TheCurrent);
- Py_INCREF((PyObject *)(void *)&TheWindowList);
- *** ../vim-7.3.944/src/if_python.c 2013-05-12 20:36:09.000000000 +0200
- --- src/if_python.c 2013-05-15 13:34:06.000000000 +0200
- ***************
- *** 1131,1154 ****
- &((RangeObject *)(self))->end);
- }
-
- - /* Buffer list object - Definitions
- - */
- -
- - static PySequenceMethods BufListAsSeq = {
- - (PyInquiry) BufListLength, /* sq_length, len(x) */
- - (binaryfunc) 0, /* sq_concat, x+y */
- - (PyIntArgFunc) 0, /* sq_repeat, x*n */
- - (PyIntArgFunc) BufListItem, /* sq_item, x[i] */
- - (PyIntIntArgFunc) 0, /* sq_slice, x[i:j] */
- - (PyIntObjArgProc) 0, /* sq_ass_item, x[i]=v */
- - (PyIntIntObjArgProc) 0, /* sq_ass_slice, x[i:j]=v */
- - (objobjproc) 0,
- - #if PY_MAJOR_VERSION >= 2
- - (binaryfunc) 0,
- - 0,
- - #endif
- - };
- -
- /* Window object - Implementation
- */
-
- --- 1131,1136 ----
- ***************
- *** 1212,1220 ****
- }
- #endif
-
- ! static BufListObject TheBufferList =
- {
- ! PyObject_HEAD_INIT(&BufListType)
- };
-
- static WinListObject TheWindowList =
- --- 1194,1202 ----
- }
- #endif
-
- ! static BufMapObject TheBufferMap =
- {
- ! PyObject_HEAD_INIT(&BufMapType)
- };
-
- static WinListObject TheWindowList =
- ***************
- *** 1240,1246 ****
- PyType_Ready(&BufferType);
- PyType_Ready(&RangeType);
- PyType_Ready(&WindowType);
- ! PyType_Ready(&BufListType);
- PyType_Ready(&WinListType);
- PyType_Ready(&CurrentType);
- PyType_Ready(&OptionsType);
- --- 1222,1228 ----
- PyType_Ready(&BufferType);
- PyType_Ready(&RangeType);
- PyType_Ready(&WindowType);
- ! PyType_Ready(&BufMapType);
- PyType_Ready(&WinListType);
- PyType_Ready(&CurrentType);
- PyType_Ready(&OptionsType);
- ***************
- *** 1254,1260 ****
- VimError = Py_BuildValue("s", "vim.error");
-
- PyDict_SetItemString(dict, "error", VimError);
- ! PyDict_SetItemString(dict, "buffers", (PyObject *)(void *)&TheBufferList);
- PyDict_SetItemString(dict, "current", (PyObject *)(void *)&TheCurrent);
- PyDict_SetItemString(dict, "windows", (PyObject *)(void *)&TheWindowList);
- tmp = DictionaryNew(&globvardict);
- --- 1236,1242 ----
- VimError = Py_BuildValue("s", "vim.error");
-
- PyDict_SetItemString(dict, "error", VimError);
- ! PyDict_SetItemString(dict, "buffers", (PyObject *)(void *)&TheBufferMap);
- PyDict_SetItemString(dict, "current", (PyObject *)(void *)&TheCurrent);
- PyDict_SetItemString(dict, "windows", (PyObject *)(void *)&TheWindowList);
- tmp = DictionaryNew(&globvardict);
- *** ../vim-7.3.944/src/testdir/test86.ok 2013-05-12 21:16:17.000000000 +0200
- --- src/testdir/test86.ok 2013-05-15 13:34:06.000000000 +0200
- ***************
- *** 226,238 ****
- p/bopts1: False
- inv: 2! ValueError
- G: 0
- ! W: 1:1 2:1 3:0 4:0
- ! B: 1:1 2:1 3:0 4:0
- del wopts3! KeyError
- del bopts3! ValueError
- G: 0
- ! W: 1:1 2:1 3:0 4:0
- ! B: 1:1 2:1 3:0 4:0
- >>> iminsert
- p/gopts1! KeyError
- inv: 3! KeyError
- --- 226,238 ----
- p/bopts1: False
- inv: 2! ValueError
- G: 0
- ! W: 1:0 2:1 3:0 4:1
- ! B: 1:0 2:1 3:0 4:1
- del wopts3! KeyError
- del bopts3! ValueError
- G: 0
- ! W: 1:0 2:1 3:0 4:1
- ! B: 1:0 2:1 3:0 4:1
- >>> iminsert
- p/gopts1! KeyError
- inv: 3! KeyError
- ***************
- *** 244,256 ****
- wopts3! KeyError
- p/bopts1: 2
- G: 1
- ! W: 1:2 2:1 3:0 4:2
- ! B: 1:2 2:1 3:0 4:2
- del wopts3! KeyError
- del bopts3! ValueError
- G: 1
- ! W: 1:2 2:1 3:0 4:2
- ! B: 1:2 2:1 3:0 4:2
- >>> omnifunc
- p/gopts1! KeyError
- inv: 1! KeyError
- --- 244,256 ----
- wopts3! KeyError
- p/bopts1: 2
- G: 1
- ! W: 1:0 2:2 3:2 4:1
- ! B: 1:0 2:2 3:2 4:1
- del wopts3! KeyError
- del bopts3! ValueError
- G: 1
- ! W: 1:0 2:2 3:2 4:1
- ! B: 1:0 2:2 3:2 4:1
- >>> omnifunc
- p/gopts1! KeyError
- inv: 1! KeyError
- ***************
- *** 263,275 ****
- p/bopts1: ''
- inv: 1! ValueError
- G: ''
- ! W: 1:'B' 2:'C' 3:'A' 4:''
- ! B: 1:'B' 2:'C' 3:'A' 4:''
- del wopts3! KeyError
- del bopts3! ValueError
- G: ''
- ! W: 1:'B' 2:'C' 3:'A' 4:''
- ! B: 1:'B' 2:'C' 3:'A' 4:''
- >>> preserveindent
- p/gopts1! KeyError
- inv: 2! KeyError
- --- 263,275 ----
- p/bopts1: ''
- inv: 1! ValueError
- G: ''
- ! W: 1:'A' 2:'B' 3:'' 4:'C'
- ! B: 1:'A' 2:'B' 3:'' 4:'C'
- del wopts3! KeyError
- del bopts3! ValueError
- G: ''
- ! W: 1:'A' 2:'B' 3:'' 4:'C'
- ! B: 1:'A' 2:'B' 3:'' 4:'C'
- >>> preserveindent
- p/gopts1! KeyError
- inv: 2! KeyError
- ***************
- *** 282,294 ****
- p/bopts1: False
- inv: 2! ValueError
- G: 0
- ! W: 1:1 2:1 3:0 4:0
- ! B: 1:1 2:1 3:0 4:0
- del wopts3! KeyError
- del bopts3! ValueError
- G: 0
- ! W: 1:1 2:1 3:0 4:0
- ! B: 1:1 2:1 3:0 4:0
- >>> path
- p/gopts1: '.,/usr/include,,'
- inv: 0! ValueError
- --- 282,294 ----
- p/bopts1: False
- inv: 2! ValueError
- G: 0
- ! W: 1:0 2:1 3:0 4:1
- ! B: 1:0 2:1 3:0 4:1
- del wopts3! KeyError
- del bopts3! ValueError
- G: 0
- ! W: 1:0 2:1 3:0 4:1
- ! B: 1:0 2:1 3:0 4:1
- >>> path
- p/gopts1: '.,/usr/include,,'
- inv: 0! ValueError
- ***************
- *** 300,311 ****
- p/bopts1: None
- inv: 0! ValueError
- G: '.,,'
- ! W: 1:',,' 2:'.' 3:'.,,' 4:'.,,'
- ! B: 1:',,' 2:'.' 3:'.,,' 4:'.,,'
- del wopts3! KeyError
- G: '.,,'
- ! W: 1:',,' 2:'.,,' 3:'.,,' 4:'.,,'
- ! B: 1:',,' 2:'.,,' 3:'.,,' 4:'.,,'
- First line
- First line
- def
- --- 300,311 ----
- p/bopts1: None
- inv: 0! ValueError
- G: '.,,'
- ! W: 1:'.,,' 2:',,' 3:'.,,' 4:'.'
- ! B: 1:'.,,' 2:',,' 3:'.,,' 4:'.'
- del wopts3! KeyError
- G: '.,,'
- ! W: 1:'.,,' 2:',,' 3:'.,,' 4:'.,,'
- ! B: 1:'.,,' 2:',,' 3:'.,,' 4:'.,,'
- First line
- First line
- def
- *** ../vim-7.3.944/src/testdir/test87.ok 2013-05-12 21:16:17.000000000 +0200
- --- src/testdir/test87.ok 2013-05-15 13:34:06.000000000 +0200
- ***************
- *** 215,227 ****
- p/bopts1: False
- inv: 2! ValueError
- G: 0
- ! W: 1:1 2:1 3:0 4:0
- ! B: 1:1 2:1 3:0 4:0
- del wopts3! KeyError
- del bopts3! ValueError
- G: 0
- ! W: 1:1 2:1 3:0 4:0
- ! B: 1:1 2:1 3:0 4:0
- >>> iminsert
- p/gopts1! KeyError
- inv: 3! KeyError
- --- 215,227 ----
- p/bopts1: False
- inv: 2! ValueError
- G: 0
- ! W: 1:0 2:1 3:0 4:1
- ! B: 1:0 2:1 3:0 4:1
- del wopts3! KeyError
- del bopts3! ValueError
- G: 0
- ! W: 1:0 2:1 3:0 4:1
- ! B: 1:0 2:1 3:0 4:1
- >>> iminsert
- p/gopts1! KeyError
- inv: 3! KeyError
- ***************
- *** 233,245 ****
- wopts3! KeyError
- p/bopts1: 2
- G: 1
- ! W: 1:2 2:1 3:0 4:2
- ! B: 1:2 2:1 3:0 4:2
- del wopts3! KeyError
- del bopts3! ValueError
- G: 1
- ! W: 1:2 2:1 3:0 4:2
- ! B: 1:2 2:1 3:0 4:2
- >>> omnifunc
- p/gopts1! KeyError
- inv: 1! KeyError
- --- 233,245 ----
- wopts3! KeyError
- p/bopts1: 2
- G: 1
- ! W: 1:0 2:2 3:2 4:1
- ! B: 1:0 2:2 3:2 4:1
- del wopts3! KeyError
- del bopts3! ValueError
- G: 1
- ! W: 1:0 2:2 3:2 4:1
- ! B: 1:0 2:2 3:2 4:1
- >>> omnifunc
- p/gopts1! KeyError
- inv: 1! KeyError
- ***************
- *** 252,264 ****
- p/bopts1: b''
- inv: 1! ValueError
- G: ''
- ! W: 1:'B' 2:'C' 3:'A' 4:''
- ! B: 1:'B' 2:'C' 3:'A' 4:''
- del wopts3! KeyError
- del bopts3! ValueError
- G: ''
- ! W: 1:'B' 2:'C' 3:'A' 4:''
- ! B: 1:'B' 2:'C' 3:'A' 4:''
- >>> preserveindent
- p/gopts1! KeyError
- inv: 2! KeyError
- --- 252,264 ----
- p/bopts1: b''
- inv: 1! ValueError
- G: ''
- ! W: 1:'A' 2:'B' 3:'' 4:'C'
- ! B: 1:'A' 2:'B' 3:'' 4:'C'
- del wopts3! KeyError
- del bopts3! ValueError
- G: ''
- ! W: 1:'A' 2:'B' 3:'' 4:'C'
- ! B: 1:'A' 2:'B' 3:'' 4:'C'
- >>> preserveindent
- p/gopts1! KeyError
- inv: 2! KeyError
- ***************
- *** 271,283 ****
- p/bopts1: False
- inv: 2! ValueError
- G: 0
- ! W: 1:1 2:1 3:0 4:0
- ! B: 1:1 2:1 3:0 4:0
- del wopts3! KeyError
- del bopts3! ValueError
- G: 0
- ! W: 1:1 2:1 3:0 4:0
- ! B: 1:1 2:1 3:0 4:0
- >>> path
- p/gopts1: b'.,/usr/include,,'
- inv: 0! ValueError
- --- 271,283 ----
- p/bopts1: False
- inv: 2! ValueError
- G: 0
- ! W: 1:0 2:1 3:0 4:1
- ! B: 1:0 2:1 3:0 4:1
- del wopts3! KeyError
- del bopts3! ValueError
- G: 0
- ! W: 1:0 2:1 3:0 4:1
- ! B: 1:0 2:1 3:0 4:1
- >>> path
- p/gopts1: b'.,/usr/include,,'
- inv: 0! ValueError
- ***************
- *** 289,300 ****
- p/bopts1: None
- inv: 0! ValueError
- G: '.,,'
- ! W: 1:',,' 2:'.' 3:'.,,' 4:'.,,'
- ! B: 1:',,' 2:'.' 3:'.,,' 4:'.,,'
- del wopts3! KeyError
- G: '.,,'
- ! W: 1:',,' 2:'.,,' 3:'.,,' 4:'.,,'
- ! B: 1:',,' 2:'.,,' 3:'.,,' 4:'.,,'
- First line
- First line
- def
- --- 289,300 ----
- p/bopts1: None
- inv: 0! ValueError
- G: '.,,'
- ! W: 1:'.,,' 2:',,' 3:'.,,' 4:'.'
- ! B: 1:'.,,' 2:',,' 3:'.,,' 4:'.'
- del wopts3! KeyError
- G: '.,,'
- ! W: 1:'.,,' 2:',,' 3:'.,,' 4:'.,,'
- ! B: 1:'.,,' 2:',,' 3:'.,,' 4:'.,,'
- First line
- First line
- def
- *** ../vim-7.3.944/src/version.c 2013-05-13 20:26:47.000000000 +0200
- --- src/version.c 2013-05-15 13:37:08.000000000 +0200
- ***************
- *** 730,731 ****
- --- 730,733 ----
- { /* Add new patch number below this line */
- + /**/
- + 945,
- /**/
-
- --
- ARTHUR: A scratch? Your arm's off!
- BLACK KNIGHT: No, it isn't.
- ARTHUR: Well, what's that then?
- BLACK KNIGHT: I've had worse.
- The Quest for the Holy Grail (Monty Python)
-
- /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
- /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
- \\\ an exciting new programming language -- http://www.Zimbu.org ///
- \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
-