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