diff src/if_python.c @ 18798:f0f9692d4487 v8.1.2387

patch 8.1.2387: using old C style comments Commit: https://github.com/vim/vim/commit/2ab2e8608f9b2c85432715bb9a7f226fdbf8cd35 Author: Bram Moolenaar <Bram@vim.org> Date: Wed Dec 4 21:24:53 2019 +0100 patch 8.1.2387: using old C style comments Problem: Using old C style comments. Solution: Use // comments where appropriate.
author Bram Moolenaar <Bram@vim.org>
date Wed, 04 Dec 2019 21:30:04 +0100
parents 831f9e74eded
children 4acb165ed0bc
line wrap: on
line diff
--- a/src/if_python.c
+++ b/src/if_python.c
@@ -21,16 +21,15 @@
 
 #include <limits.h>
 
-/* uncomment this if used with the debug version of python.
- * Checked on 2.7.4. */
-/* #define Py_DEBUG */
-/* Note: most of time you can add -DPy_DEBUG to CFLAGS in place of uncommenting
- */
-/* uncomment this if used with the debug version of python, but without its
- * allocator */
-/* #define Py_DEBUG_NO_PYMALLOC */
+// uncomment this if used with the debug version of python.
+// Checked on 2.7.4.
+// #define Py_DEBUG
+// Note: most of time you can add -DPy_DEBUG to CFLAGS in place of uncommenting
+// uncomment this if used with the debug version of python, but without its
+// allocator
+// #define Py_DEBUG_NO_PYMALLOC
 
-/* Python.h defines _POSIX_THREADS itself (if needed) */
+// Python.h defines _POSIX_THREADS itself (if needed)
 #ifdef _POSIX_THREADS
 # undef _POSIX_THREADS
 #endif
@@ -53,13 +52,13 @@
 # undef HAVE_PUTENV
 #endif
 #ifdef HAVE_STDARG_H
-# undef HAVE_STDARG_H	/* Python's config.h defines it as well. */
+# undef HAVE_STDARG_H	// Python's config.h defines it as well.
 #endif
 #ifdef _POSIX_C_SOURCE
-# undef _POSIX_C_SOURCE	/* pyconfig.h defines it as well. */
+# undef _POSIX_C_SOURCE	// pyconfig.h defines it as well.
 #endif
 #ifdef _XOPEN_SOURCE
-# undef _XOPEN_SOURCE	/* pyconfig.h defines it as well. */
+# undef _XOPEN_SOURCE	// pyconfig.h defines it as well.
 #endif
 
 #define PY_SSIZE_T_CLEAN
@@ -70,8 +69,8 @@
 # undef PY_SSIZE_T_CLEAN
 #endif
 
-#undef main /* Defined in python.h - aargh */
-#undef HAVE_FCNTL_H /* Clash with os_win32.h */
+#undef main // Defined in python.h - aargh
+#undef HAVE_FCNTL_H // Clash with os_win32.h
 
 // Perhaps leave this out for Python 2.6, which supports bytes?
 #define PyBytes_FromString      PyString_FromString
@@ -80,7 +79,7 @@
 #define PyBytes_FromStringAndSize   PyString_FromStringAndSize
 
 #if !defined(FEAT_PYTHON) && defined(PROTO)
-/* Use this to be able to generate prototypes without python being used. */
+// Use this to be able to generate prototypes without python being used.
 # define PyObject Py_ssize_t
 # define PyThreadState Py_ssize_t
 # define PyTypeObject Py_ssize_t
@@ -112,19 +111,19 @@ struct PyMethodDef { Py_ssize_t a; };
 #endif
 #define Py_bytes_fmt "s"
 
-/* Parser flags */
+// Parser flags
 #define single_input	256
 #define file_input	257
 #define eval_input	258
 
 #if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x020300F0
-  /* Python 2.3: can invoke ":python" recursively. */
+  // Python 2.3: can invoke ":python" recursively.
 # define PY_CAN_RECURSE
 #endif
 
 #if defined(DYNAMIC_PYTHON) || defined(PROTO)
 # ifndef DYNAMIC_PYTHON
-#  define HINSTANCE long_u		/* for generating prototypes */
+#  define HINSTANCE long_u		// for generating prototypes
 # endif
 
 # ifndef MSWIN
@@ -144,8 +143,8 @@ struct PyMethodDef { Py_ssize_t a; };
 #  define symbol_from_dll GetProcAddress
 # endif
 
-/* This makes if_python.c compile without warnings against Python 2.5
- * on Win32 and Win64. */
+// This makes if_python.c compile without warnings against Python 2.5
+// on Win32 and Win64.
 # undef PyRun_SimpleString
 # undef PyRun_String
 # undef PyArg_Parse
@@ -456,9 +455,9 @@ static void* (*dll_PyCObject_AsVoidPtr)(
 static int* dll_Py_NoSiteFlag;
 # endif
 
-static HINSTANCE hinstPython = 0; /* Instance of python.dll */
+static HINSTANCE hinstPython = 0; // Instance of python.dll
 
-/* Imported exception objects */
+// Imported exception objects
 static PyObject *imp_PyExc_AttributeError;
 static PyObject *imp_PyExc_IndexError;
 static PyObject *imp_PyExc_KeyError;
@@ -681,9 +680,9 @@ python_runtime_link_init(char *libname, 
 				   (PYTHON_PROC*)&py_PyUnicode_AsEncodedString;
 
 # if !(defined(PY_NO_RTLD_GLOBAL) && defined(PY3_NO_RTLD_GLOBAL)) && defined(UNIX) && defined(FEAT_PYTHON3)
-    /* Can't have Python and Python3 loaded at the same time.
-     * It cause a crash, because RTLD_GLOBAL is needed for
-     * standard C extension libraries of one or both python versions. */
+    // Can't have Python and Python3 loaded at the same time.
+    // It cause a crash, because RTLD_GLOBAL is needed for
+    // standard C extension libraries of one or both python versions.
     if (python3_loaded())
     {
 	if (verbose)
@@ -715,8 +714,8 @@ python_runtime_link_init(char *libname, 
 	}
     }
 
-    /* Load unicode functions separately as only the ucs2 or the ucs4 functions
-     * will be present in the library. */
+    // Load unicode functions separately as only the ucs2 or the ucs4 functions
+    // will be present in the library.
     *ucs_as_encoded_string = symbol_from_dll(hinstPython,
 					     "PyUnicodeUCS2_AsEncodedString");
     if (*ucs_as_encoded_string == NULL)
@@ -775,7 +774,7 @@ get_exceptions(void)
     Py_XINCREF(imp_PyExc_OverflowError);
     Py_XDECREF(exmod);
 }
-#endif /* DYNAMIC_PYTHON */
+#endif // DYNAMIC_PYTHON
 
 static int initialised = 0;
 #define PYINITIALISED initialised
@@ -830,18 +829,16 @@ typedef PySliceObject PySliceObject_T;
 #include "if_py_both.h"
 
 
-/******************************************************
- * Internal function prototypes.
- */
+///////////////////////////////////////////////////////
+// Internal function prototypes.
 
 static int PythonMod_Init(void);
 
 
-/******************************************************
- * 1. Python interpreter main program.
- */
+///////////////////////////////////////////////////////
+// 1. Python interpreter main program.
 
-#if PYTHON_API_VERSION < 1007 /* Python 1.4 */
+#if PYTHON_API_VERSION < 1007 // Python 1.4
 typedef PyObject PyThreadState;
 #endif
 
@@ -875,7 +872,7 @@ python_end(void)
 {
     static int recurse = 0;
 
-    /* If a crash occurs while doing this, don't try again. */
+    // If a crash occurs while doing this, don't try again.
     if (recurse != 0)
 	return;
 
@@ -888,7 +885,7 @@ python_end(void)
 # ifdef PY_CAN_RECURSE
 	PyGILState_Ensure();
 # else
-	Python_RestoreThread();	    /* enter python */
+	Python_RestoreThread();	    // enter python
 # endif
 	Py_Finalize();
     }
@@ -899,7 +896,7 @@ python_end(void)
 # ifdef PY_CAN_RECURSE
 	PyGILState_Ensure();
 # else
-	Python_RestoreThread();	    /* enter python */
+	Python_RestoreThread();	    // enter python
 # endif
 	Py_Finalize();
     }
@@ -937,7 +934,7 @@ Python_Init(void)
 
 	if (*p_pyhome != NUL)
 	{
-	    /* The string must not change later, make a copy in static memory. */
+	    // The string must not change later, make a copy in static memory.
 	    py_home_buf = (char *)vim_strsave(p_pyhome);
 	    if (py_home_buf != NULL)
 		Py_SetPythonHome(py_home_buf);
@@ -950,15 +947,15 @@ Python_Init(void)
 	init_structs();
 
 #if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02070000
-	/* Disable implicit 'import site', because it may cause Vim to exit
-	 * when it can't be found. */
+	// Disable implicit 'import site', because it may cause Vim to exit
+	// when it can't be found.
 	Py_NoSiteFlag++;
 #endif
 
 	Py_Initialize();
 
 #if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02070000
-	/* 'import site' explicitly. */
+	// 'import site' explicitly.
 	site = PyImport_ImportModule("site");
 	if (site == NULL)
 	{
@@ -968,10 +965,10 @@ Python_Init(void)
 	Py_DECREF(site);
 #endif
 
-	/* Initialise threads, and below save the state using
-	 * PyEval_SaveThread.  Without the call to PyEval_SaveThread, thread
-	 * specific state (such as the system trace hook), will be lost
-	 * between invocations of Python code. */
+	// Initialise threads, and below save the state using
+	// PyEval_SaveThread.  Without the call to PyEval_SaveThread, thread
+	// specific state (such as the system trace hook), will be lost
+	// between invocations of Python code.
 	PyEval_InitThreads();
 #ifdef DYNAMIC_PYTHON
 	get_exceptions();
@@ -985,19 +982,18 @@ Python_Init(void)
 
 	globals = PyModule_GetDict(PyImport_AddModule("__main__"));
 
-	/* Remove the element from sys.path that was added because of our
-	 * argv[0] value in PythonMod_Init().  Previously we used an empty
-	 * string, but depending on the OS we then get an empty entry or
-	 * the current directory in sys.path. */
+	// Remove the element from sys.path that was added because of our
+	// argv[0] value in PythonMod_Init().  Previously we used an empty
+	// string, but depending on the OS we then get an empty entry or
+	// the current directory in sys.path.
 	PyRun_SimpleString("import sys; sys.path = filter(lambda x: x != '/must>not&exist', sys.path)");
 
-	/* lock is created and acquired in PyEval_InitThreads() and thread
-	 * state is created in Py_Initialize()
-	 * there _PyGILState_NoteThreadState() also sets gilcounter to 1
-	 * (python must have threads enabled!)
-	 * so the following does both: unlock GIL and save thread state in TLS
-	 * without deleting thread state
-	 */
+	// lock is created and acquired in PyEval_InitThreads() and thread
+	// state is created in Py_Initialize()
+	// there _PyGILState_NoteThreadState() also sets gilcounter to 1
+	// (python must have threads enabled!)
+	// so the following does both: unlock GIL and save thread state in TLS
+	// without deleting thread state
 #ifndef PY_CAN_RECURSE
 	saved_python_thread =
 #endif
@@ -1009,11 +1005,10 @@ Python_Init(void)
     return 0;
 
 fail:
-    /* We call PythonIO_Flush() here to print any Python errors.
-     * This is OK, as it is possible to call this function even
-     * if PythonIO_Init_io() has not completed successfully (it will
-     * not do anything in this case).
-     */
+    // We call PythonIO_Flush() here to print any Python errors.
+    // This is OK, as it is possible to call this function even
+    // if PythonIO_Init_io() has not completed successfully (it will
+    // not do anything in this case).
     PythonIO_Flush();
     return -1;
 }
@@ -1050,16 +1045,16 @@ DoPyCommand(const char *cmd, rangeinitia
 
     init_range(arg);
 
-    Python_Release_Vim();	    /* leave vim */
+    Python_Release_Vim();	    // leave Vim
 
 #if defined(HAVE_LOCALE_H) || defined(X_LOCALE)
-    /* Python only works properly when the LC_NUMERIC locale is "C". */
+    // Python only works properly when the LC_NUMERIC locale is "C".
     saved_locale = setlocale(LC_NUMERIC, NULL);
     if (saved_locale == NULL || STRCMP(saved_locale, "C") == 0)
 	saved_locale = NULL;
     else
     {
-	/* Need to make a copy, value may change when setting new locale. */
+	// Need to make a copy, value may change when setting new locale.
 	saved_locale = (char *) PY_STRSAVE(saved_locale);
 	(void)setlocale(LC_NUMERIC, "C");
     }
@@ -1068,7 +1063,7 @@ DoPyCommand(const char *cmd, rangeinitia
 #ifdef PY_CAN_RECURSE
     pygilstate = PyGILState_Ensure();
 #else
-    Python_RestoreThread();	    /* enter python */
+    Python_RestoreThread();	    // enter python
 #endif
 
     run((char *) cmd, arg
@@ -1080,7 +1075,7 @@ DoPyCommand(const char *cmd, rangeinitia
 #ifdef PY_CAN_RECURSE
     PyGILState_Release(pygilstate);
 #else
-    Python_SaveThread();	    /* leave python */
+    Python_SaveThread();	    // leave python
 #endif
 
 #if defined(HAVE_LOCALE_H) || defined(X_LOCALE)
@@ -1091,7 +1086,7 @@ DoPyCommand(const char *cmd, rangeinitia
     }
 #endif
 
-    Python_Lock_Vim();		    /* enter vim */
+    Python_Lock_Vim();		    // enter vim
     PythonIO_Flush();
 
 theend:
@@ -1138,17 +1133,16 @@ ex_pyfile(exarg_T *eap)
     if (p_pyx == 0)
 	p_pyx = 2;
 
-    /* Have to do it like this. PyRun_SimpleFile requires you to pass a
-     * stdio file pointer, but Vim and the Python DLL are compiled with
-     * different options under Windows, meaning that stdio pointers aren't
-     * compatible between the two. Yuk.
-     *
-     * Put the string "execfile('file')" into buffer. But, we need to
-     * escape any backslashes or single quotes in the file name, so that
-     * Python won't mangle the file name.
-     */
+    // Have to do it like this. PyRun_SimpleFile requires you to pass a
+    // stdio file pointer, but Vim and the Python DLL are compiled with
+    // different options under Windows, meaning that stdio pointers aren't
+    // compatible between the two. Yuk.
+    //
+    // Put the string "execfile('file')" into buffer. But, we need to
+    // escape any backslashes or single quotes in the file name, so that
+    // Python won't mangle the file name.
     strcpy(buffer, "execfile('");
-    p = buffer + 10; /* size of "execfile('" */
+    p = buffer + 10; // size of "execfile('"
 
     while (*file && p < buffer + (BUFFER_SIZE - 3))
     {
@@ -1157,16 +1151,16 @@ ex_pyfile(exarg_T *eap)
 	*p++ = *file++;
     }
 
-    /* If we didn't finish the file name, we hit a buffer overflow */
+    // If we didn't finish the file name, we hit a buffer overflow
     if (*file != '\0')
 	return;
 
-    /* Put in the terminating "')" and a null */
+    // Put in the terminating "')" and a null
     *p++ = '\'';
     *p++ = ')';
     *p++ = '\0';
 
-    /* Execute the file */
+    // Execute the file
     DoPyCommand(buffer,
 	    (rangeinitializer) init_range_cmd,
 	    (runner) run_cmd,
@@ -1185,12 +1179,10 @@ ex_pydo(exarg_T *eap)
 	    (void *)eap);
 }
 
-/******************************************************
- * 2. Python output stream: writes output via [e]msg().
- */
+///////////////////////////////////////////////////////
+// 2. Python output stream: writes output via [e]msg().
 
-/* Implementation functions
- */
+// Implementation functions
 
     static PyObject *
 OutputGetattr(PyObject *self, char *name)
@@ -1206,53 +1198,47 @@ OutputGetattr(PyObject *self, char *name
     return Py_FindMethod(OutputMethods, self, name);
 }
 
-/******************************************************
- * 3. Implementation of the Vim module for Python
- */
+///////////////////////////////////////////////////////
+// 3. Implementation of the Vim module for Python
 
-/* Window type - Implementation functions
- * --------------------------------------
- */
+// Window type - Implementation functions
+// --------------------------------------
 
 #define WindowType_Check(obj) ((obj)->ob_type == &WindowType)
 
-/* Buffer type - Implementation functions
- * --------------------------------------
- */
+// Buffer type - Implementation functions
+// --------------------------------------
 
 #define BufferType_Check(obj) ((obj)->ob_type == &BufferType)
 
 static PyInt BufferAssItem(PyObject *, PyInt, PyObject *);
 static PyInt BufferAssSlice(PyObject *, PyInt, PyInt, PyObject *);
 
-/* Line range type - Implementation functions
- * --------------------------------------
- */
+// Line range type - Implementation functions
+// --------------------------------------
 
 #define RangeType_Check(obj) ((obj)->ob_type == &RangeType)
 
 static PyInt RangeAssItem(PyObject *, PyInt, PyObject *);
 static PyInt RangeAssSlice(PyObject *, PyInt, PyInt, PyObject *);
 
-/* Current objects type - Implementation functions
- * -----------------------------------------------
- */
+// Current objects type - Implementation functions
+// -----------------------------------------------
 
 static PySequenceMethods BufferAsSeq = {
-    (PyInquiry)		BufferLength,	    /* sq_length,    len(x)   */
-    (binaryfunc)	0,		    /* BufferConcat, sq_concat, x+y */
-    (PyIntArgFunc)	0,		    /* BufferRepeat, sq_repeat, x*n */
-    (PyIntArgFunc)	BufferItem,	    /* sq_item,      x[i]     */
-    (PyIntIntArgFunc)	BufferSlice,	    /* sq_slice,     x[i:j]   */
-    (PyIntObjArgProc)	BufferAssItem,	    /* sq_ass_item,  x[i]=v   */
-    (PyIntIntObjArgProc) BufferAssSlice,    /* sq_ass_slice, x[i:j]=v */
+    (PyInquiry)		BufferLength,	    // sq_length,    len(x)
+    (binaryfunc)	0,		    // BufferConcat, sq_concat, x+y
+    (PyIntArgFunc)	0,		    // BufferRepeat, sq_repeat, x*n
+    (PyIntArgFunc)	BufferItem,	    // sq_item,      x[i]
+    (PyIntIntArgFunc)	BufferSlice,	    // sq_slice,     x[i:j]
+    (PyIntObjArgProc)	BufferAssItem,	    // sq_ass_item,  x[i]=v
+    (PyIntIntObjArgProc) BufferAssSlice,    // sq_ass_slice, x[i:j]=v
     (objobjproc)	0,
     (binaryfunc)	0,
     0,
 };
 
-/* Buffer object - Implementation
- */
+// Buffer object - Implementation
 
     static PyObject *
 BufferGetattr(PyObject *self, char *name)
@@ -1272,7 +1258,7 @@ BufferGetattr(PyObject *self, char *name
 	return Py_FindMethod(BufferMethods, self, name);
 }
 
-/******************/
+//////////////////
 
     static PyInt
 BufferAssItem(PyObject *self, PyInt n, PyObject *val)
@@ -1287,13 +1273,13 @@ BufferAssSlice(PyObject *self, PyInt lo,
 }
 
 static PySequenceMethods RangeAsSeq = {
-    (PyInquiry)		RangeLength,	      /* sq_length,    len(x)   */
-    (binaryfunc)	0, /* RangeConcat, */ /* sq_concat,    x+y      */
-    (PyIntArgFunc)	0, /* RangeRepeat, */ /* sq_repeat,    x*n      */
-    (PyIntArgFunc)	RangeItem,	      /* sq_item,      x[i]     */
-    (PyIntIntArgFunc)	RangeSlice,	      /* sq_slice,     x[i:j]   */
-    (PyIntObjArgProc)	RangeAssItem,	      /* sq_ass_item,  x[i]=v   */
-    (PyIntIntObjArgProc) RangeAssSlice,	      /* sq_ass_slice, x[i:j]=v */
+    (PyInquiry)		RangeLength,	      // sq_length,    len(x)
+    (binaryfunc)	0, /* RangeConcat, */ // sq_concat,    x+y
+    (PyIntArgFunc)	0, /* RangeRepeat, */ // sq_repeat,    x*n
+    (PyIntArgFunc)	RangeItem,	      // sq_item,      x[i]
+    (PyIntIntArgFunc)	RangeSlice,	      // sq_slice,     x[i:j]
+    (PyIntObjArgProc)	RangeAssItem,	      // sq_ass_item,  x[i]=v
+    (PyIntIntObjArgProc) RangeAssSlice,	      // sq_ass_slice, x[i:j]=v
     (objobjproc)	0,
 #if PY_MAJOR_VERSION >= 2
     (binaryfunc)	0,
@@ -1301,8 +1287,7 @@ static PySequenceMethods RangeAsSeq = {
 #endif
 };
 
-/* Line range object - Implementation
- */
+// Line range object - Implementation
 
     static PyObject *
 RangeGetattr(PyObject *self, char *name)
@@ -1317,7 +1302,7 @@ RangeGetattr(PyObject *self, char *name)
 	return Py_FindMethod(RangeMethods, self, name);
 }
 
-/****************/
+////////////////
 
     static PyInt
 RangeAssItem(PyObject *self, PyInt n, PyObject *val)
@@ -1337,8 +1322,7 @@ RangeAssSlice(PyObject *self, PyInt lo, 
 		      &((RangeObject *)(self))->end);
 }
 
-/* TabPage object - Implementation
- */
+// TabPage object - Implementation
 
     static PyObject *
 TabPageGetattr(PyObject *self, char *name)
@@ -1358,8 +1342,7 @@ TabPageGetattr(PyObject *self, char *nam
 	return Py_FindMethod(TabPageMethods, self, name);
 }
 
-/* Window object - Implementation
- */
+// Window object - Implementation
 
     static PyObject *
 WindowGetattr(PyObject *self, char *name)
@@ -1379,17 +1362,16 @@ WindowGetattr(PyObject *self, char *name
 	return Py_FindMethod(WindowMethods, self, name);
 }
 
-/* Tab page list object - Definitions
- */
+// Tab page list object - Definitions
 
 static PySequenceMethods TabListAsSeq = {
-    (PyInquiry)		TabListLength,	    /* sq_length,    len(x)   */
-    (binaryfunc)	0,		    /* sq_concat,    x+y      */
-    (PyIntArgFunc)	0,		    /* sq_repeat,    x*n      */
-    (PyIntArgFunc)	TabListItem,	    /* 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 */
+    (PyInquiry)		TabListLength,	    // sq_length,    len(x)
+    (binaryfunc)	0,		    // sq_concat,    x+y
+    (PyIntArgFunc)	0,		    // sq_repeat,    x*n
+    (PyIntArgFunc)	TabListItem,	    // 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,
@@ -1397,17 +1379,16 @@ static PySequenceMethods TabListAsSeq = 
 #endif
 };
 
-/* Window list object - Definitions
- */
+// Window list object - Definitions
 
 static PySequenceMethods WinListAsSeq = {
-    (PyInquiry)		WinListLength,	    /* sq_length,    len(x)   */
-    (binaryfunc)	0,		    /* sq_concat,    x+y      */
-    (PyIntArgFunc)	0,		    /* sq_repeat,    x*n      */
-    (PyIntArgFunc)	WinListItem,	    /* 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 */
+    (PyInquiry)		WinListLength,	    // sq_length,    len(x)
+    (binaryfunc)	0,		    // sq_concat,    x+y
+    (PyIntArgFunc)	0,		    // sq_repeat,    x*n
+    (PyIntArgFunc)	WinListItem,	    // 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,
@@ -1415,8 +1396,7 @@ static PySequenceMethods WinListAsSeq = 
 #endif
 };
 
-/* External interface
- */
+// External interface
 
     void
 python_buffer_free(buf_T *buf)
@@ -1454,13 +1434,13 @@ python_tabpage_free(tabpage_T *tab)
     static int
 PythonMod_Init(void)
 {
-    /* The special value is removed from sys.path in Python_Init(). */
+    // The special value is removed from sys.path in Python_Init().
     static char	*(argv[2]) = {"/must>not&exist/foo", NULL};
 
     if (init_types())
 	return -1;
 
-    /* Set sys.argv[] to avoid a crash in warn(). */
+    // Set sys.argv[] to avoid a crash in warn().
     PySys_SetArgv(1, argv);
 
     vim_module = Py_InitModule4("vim", VimMethods, (char *)NULL,
@@ -1475,15 +1455,13 @@ PythonMod_Init(void)
     return 0;
 }
 
-/*************************************************************************
- * 4. Utility functions for handling the interface between Vim and Python.
- */
+//////////////////////////////////////////////////////////////////////////
+// 4. Utility functions for handling the interface between Vim and Python.
 
-/* Convert a Vim line into a Python string.
- * All internal newlines are replaced by null characters.
- *
- * On errors, the Python exception data is set, and NULL is returned.
- */
+// Convert a Vim line into a Python string.
+// All internal newlines are replaced by null characters.
+//
+// On errors, the Python exception data is set, and NULL is returned.
     static PyObject *
 LineToString(const char *str)
 {
@@ -1491,10 +1469,9 @@ LineToString(const char *str)
     PyInt len = strlen(str);
     char *p;
 
-    /* Allocate an Python string object, with uninitialised contents. We
-     * must do it this way, so that we can modify the string in place
-     * later. See the Python source, Objects/stringobject.c for details.
-     */
+    // Allocate an Python string object, with uninitialised contents. We
+    // must do it this way, so that we can modify the string in place
+    // later. See the Python source, Objects/stringobject.c for details.
     result = PyString_FromStringAndSize(NULL, len);
     if (result == NULL)
 	return NULL;
@@ -1568,8 +1545,8 @@ do_pyeval(char_u *str, typval_T *rettv)
     }
 }
 
-/* Don't generate a prototype for the next function, it generates an error on
- * newer Python versions. */
+// Don't generate a prototype for the next function, it generates an error on
+// newer Python versions.
 #if PYTHON_API_VERSION < 1007 /* Python 1.4 */ && !defined(PROTO)
 
     char *
@@ -1577,7 +1554,7 @@ Py_GetProgramName(void)
 {
     return "vim";
 }
-#endif /* Python 1.4 */
+#endif // Python 1.4
 
     int
 set_ref_in_python(int copyID)