[vim/f14] - patchlevel 307

Karsten Hopp karsten at fedoraproject.org
Wed Sep 21 09:23:24 UTC 2011


commit 781234e4bb70da695e80c75eadb6f8fa526ad8fc
Author: Karsten Hopp <karsten at redhat.com>
Date:   Wed Sep 21 11:23:25 2011 +0200

    - patchlevel 307

 7.3.307 |  180 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 180 insertions(+), 0 deletions(-)
---
diff --git a/7.3.307 b/7.3.307
new file mode 100644
index 0000000..3fd95e1
--- /dev/null
+++ b/7.3.307
@@ -0,0 +1,180 @@
+To: vim_dev at googlegroups.com
+Subject: Patch 7.3.307
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.307
+Problem:    Python 3 doesn't support slice assignment.
+Solution:   Implement slices. (Brett Overesch, Roland Puntaier)
+Files:	    src/if_python3.c
+
+
+*** ../vim-7.3.306/src/if_python3.c	2011-08-28 16:00:14.000000000 +0200
+--- src/if_python3.c	2011-09-14 15:01:26.000000000 +0200
+***************
+*** 855,862 ****
+  
+  static Py_ssize_t BufferLength(PyObject *);
+  static PyObject *BufferItem(PyObject *, Py_ssize_t);
+! static PyObject* BufferSubscript(PyObject *self, PyObject* idx);
+! static Py_ssize_t BufferAsSubscript(PyObject *self, PyObject* idx, PyObject* val);
+  
+  
+  /* Line range type - Implementation functions
+--- 855,862 ----
+  
+  static Py_ssize_t BufferLength(PyObject *);
+  static PyObject *BufferItem(PyObject *, Py_ssize_t);
+! static PyObject* BufferSubscript(PyObject *self, PyObject *idx);
+! static Py_ssize_t BufferAsSubscript(PyObject *self, PyObject *idx, PyObject *val);
+  
+  
+  /* Line range type - Implementation functions
+***************
+*** 865,872 ****
+  
+  #define RangeType_Check(obj) ((obj)->ob_base.ob_type == &RangeType)
+  
+! static PyObject* RangeSubscript(PyObject *self, PyObject* idx);
+  static Py_ssize_t RangeAsItem(PyObject *, Py_ssize_t, PyObject *);
+  
+  /* Current objects type - Implementation functions
+   * -----------------------------------------------
+--- 865,873 ----
+  
+  #define RangeType_Check(obj) ((obj)->ob_base.ob_type == &RangeType)
+  
+! static PyObject* RangeSubscript(PyObject *self, PyObject *idx);
+  static Py_ssize_t RangeAsItem(PyObject *, Py_ssize_t, PyObject *);
++ static Py_ssize_t RangeAsSubscript(PyObject *self, PyObject *idx, PyObject *val);
+  
+  /* Current objects type - Implementation functions
+   * -----------------------------------------------
+***************
+*** 1035,1041 ****
+  	      &step, &slicelen) < 0) {
+  	    return NULL;
+  	}
+! 	return BufferSlice(self,start,stop);
+      } else {
+  	PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
+  	return NULL;
+--- 1036,1042 ----
+  	      &step, &slicelen) < 0) {
+  	    return NULL;
+  	}
+! 	return BufferSlice(self, start, stop);
+      } else {
+  	PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
+  	return NULL;
+***************
+*** 1084,1090 ****
+  PyMappingMethods RangeAsMapping = {
+      /* mp_length	*/ (lenfunc)RangeLength,
+      /* mp_subscript     */ (binaryfunc)RangeSubscript,
+!     /* mp_ass_subscript */ (objobjargproc)0,
+  };
+  
+  /* Line range object - Implementation
+--- 1085,1091 ----
+  PyMappingMethods RangeAsMapping = {
+      /* mp_length	*/ (lenfunc)RangeLength,
+      /* mp_subscript     */ (binaryfunc)RangeSubscript,
+!     /* mp_ass_subscript */ (objobjargproc)RangeAsSubscript,
+  };
+  
+  /* Line range object - Implementation
+***************
+*** 1123,1128 ****
+--- 1124,1138 ----
+  		    &((RangeObject *)(self))->end);
+  }
+  
++     static Py_ssize_t
++ RangeAsSlice(PyObject *self, Py_ssize_t lo, Py_ssize_t hi, PyObject *val)
++ {
++     return RBAsSlice(((RangeObject *)(self))->buf, lo, hi, val,
++ 		    ((RangeObject *)(self))->start,
++ 		    ((RangeObject *)(self))->end,
++ 		    &((RangeObject *)(self))->end);
++ }
++ 
+      static PyObject *
+  RangeSubscript(PyObject *self, PyObject* idx)
+  {
+***************
+*** 1138,1150 ****
+  		&step, &slicelen) < 0) {
+  	    return NULL;
+  	}
+! 	return RangeSlice(self,start,stop+1);
+      } else {
+  	PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
+  	return NULL;
+      }
+  }
+  
+  /* Buffer list object - Definitions
+   */
+  
+--- 1148,1183 ----
+  		&step, &slicelen) < 0) {
+  	    return NULL;
+  	}
+! 	return RangeSlice(self, start, stop);
+      } else {
+  	PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
+  	return NULL;
+      }
+  }
+  
++     static Py_ssize_t
++ RangeAsSubscript(PyObject *self, PyObject *idx, PyObject *val)
++ {
++     if (PyLong_Check(idx)) {
++ 	long n = PyLong_AsLong(idx);
++ 	return RangeAsItem(self, n, val);
++     } else if (PySlice_Check(idx)) {
++ 	Py_ssize_t start, stop, step, slicelen;
++ 
++ 	if (PySlice_GetIndicesEx((PySliceObject *)idx,
++ 		((RangeObject *)(self))->end-((RangeObject *)(self))->start+1,
++ 		&start, &stop,
++ 		&step, &slicelen) < 0) {
++ 	    return -1;
++ 	}
++ 	return RangeAsSlice(self, start, stop, val);
++     } else {
++ 	PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
++ 	return -1;
++     }
++ }
++ 
++ 
+  /* Buffer list object - Definitions
+   */
+  
+*** ../vim-7.3.306/src/version.c	2011-09-14 14:43:21.000000000 +0200
+--- src/version.c	2011-09-14 14:58:16.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     307,
+  /**/
+
+-- 
+The process for understanding customers primarily involves sitting around with
+other marketing people and talking about what you would to if you were dumb
+enough to be a customer.
+				(Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram at 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    ///


More information about the scm-commits mailing list