0
0
mirror of https://github.com/vim/vim.git synced 2025-07-26 11:04:33 -04:00

updated for version 7.1-320

This commit is contained in:
Bram Moolenaar 2008-06-20 14:32:41 +00:00
parent 48be32b61e
commit e7cb9cf672
2 changed files with 106 additions and 88 deletions

View File

@ -50,11 +50,11 @@
#if !defined(FEAT_PYTHON) && defined(PROTO) #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 int # define PyObject Py_ssize_t
# define PyThreadState int # define PyThreadState Py_ssize_t
# define PyTypeObject int # define PyTypeObject Py_ssize_t
struct PyMethodDef { int a; }; struct PyMethodDef { Py_ssize_t a; };
# define PySequenceMethods int # define PySequenceMethods Py_ssize_t
#endif #endif
#if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02050000 #if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02050000
@ -64,6 +64,7 @@ struct PyMethodDef { int a; };
# define PyIntIntArgFunc ssizessizeargfunc # define PyIntIntArgFunc ssizessizeargfunc
# define PyIntObjArgProc ssizeobjargproc # define PyIntObjArgProc ssizeobjargproc
# define PyIntIntObjArgProc ssizessizeobjargproc # define PyIntIntObjArgProc ssizessizeobjargproc
# define Py_ssize_t_fmt "n"
#else #else
# define PyInt int # define PyInt int
# define PyInquiry inquiry # define PyInquiry inquiry
@ -71,6 +72,7 @@ struct PyMethodDef { int a; };
# define PyIntIntArgFunc intintargfunc # define PyIntIntArgFunc intintargfunc
# define PyIntObjArgProc intobjargproc # define PyIntObjArgProc intobjargproc
# define PyIntIntObjArgProc intintobjargproc # define PyIntIntObjArgProc intintobjargproc
# define Py_ssize_t_fmt "i"
#endif #endif
/* Parser flags */ /* Parser flags */
@ -85,9 +87,18 @@ struct PyMethodDef { int a; };
#if defined(DYNAMIC_PYTHON) || defined(PROTO) #if defined(DYNAMIC_PYTHON) || defined(PROTO)
# ifndef DYNAMIC_PYTHON # ifndef DYNAMIC_PYTHON
# define HINSTANCE int /* for generating prototypes */ # define HINSTANCE long_u /* for generating prototypes */
# endif # endif
/* This makes if_python.c compile without warnings against Python 2.5
* on Win32 and Win64. */
#undef PyRun_SimpleString
#undef PyArg_Parse
#undef PyArg_ParseTuple
#undef Py_BuildValue
#undef Py_InitModule4
#undef Py_InitModule4_64
/* /*
* Wrapper defines * Wrapper defines
*/ */
@ -269,7 +280,11 @@ static struct
{"PyType_Type", (PYTHON_PROC*)&dll_PyType_Type}, {"PyType_Type", (PYTHON_PROC*)&dll_PyType_Type},
{"Py_BuildValue", (PYTHON_PROC*)&dll_Py_BuildValue}, {"Py_BuildValue", (PYTHON_PROC*)&dll_Py_BuildValue},
{"Py_FindMethod", (PYTHON_PROC*)&dll_Py_FindMethod}, {"Py_FindMethod", (PYTHON_PROC*)&dll_Py_FindMethod},
# if (PY_VERSION_HEX >= 0x02050000) && SIZEOF_SIZE_T != SIZEOF_INT
{"Py_InitModule4_64", (PYTHON_PROC*)&dll_Py_InitModule4},
# else
{"Py_InitModule4", (PYTHON_PROC*)&dll_Py_InitModule4}, {"Py_InitModule4", (PYTHON_PROC*)&dll_Py_InitModule4},
# endif
{"Py_Initialize", (PYTHON_PROC*)&dll_Py_Initialize}, {"Py_Initialize", (PYTHON_PROC*)&dll_Py_Initialize},
{"Py_Finalize", (PYTHON_PROC*)&dll_Py_Finalize}, {"Py_Finalize", (PYTHON_PROC*)&dll_Py_Finalize},
{"Py_IsInitialized", (PYTHON_PROC*)&dll_Py_IsInitialized}, {"Py_IsInitialized", (PYTHON_PROC*)&dll_Py_IsInitialized},
@ -339,8 +354,7 @@ python_runtime_link_init(char *libname, int verbose)
* TRUE, else FALSE. * TRUE, else FALSE.
*/ */
int int
python_enabled(verbose) python_enabled(int verbose)
int verbose;
{ {
return python_runtime_link_init(DYNAMIC_PYTHON_DLL, verbose) == OK; return python_runtime_link_init(DYNAMIC_PYTHON_DLL, verbose) == OK;
} }
@ -374,8 +388,8 @@ get_exceptions()
*/ */
static void DoPythonCommand(exarg_T *, const char *); static void DoPythonCommand(exarg_T *, const char *);
static int RangeStart; static PyInt RangeStart;
static int RangeEnd; static PyInt RangeEnd;
static void PythonIO_Flush(void); static void PythonIO_Flush(void);
static int PythonIO_Init(void); static int PythonIO_Init(void);
@ -384,12 +398,12 @@ static int PythonMod_Init(void);
/* Utility functions for the vim/python interface /* Utility functions for the vim/python interface
* ---------------------------------------------- * ----------------------------------------------
*/ */
static PyObject *GetBufferLine(buf_T *, int); static PyObject *GetBufferLine(buf_T *, PyInt);
static PyObject *GetBufferLineList(buf_T *, PyInt, PyInt); static PyObject *GetBufferLineList(buf_T *, PyInt, PyInt);
static int SetBufferLine(buf_T *, int, PyObject *, int *); static int SetBufferLine(buf_T *, PyInt, PyObject *, PyInt *);
static int SetBufferLineList(buf_T *, PyInt, PyInt, PyObject *, int *); static int SetBufferLineList(buf_T *, PyInt, PyInt, PyObject *, PyInt *);
static int InsertBufferLines(buf_T *, int, PyObject *, int *); static int InsertBufferLines(buf_T *, PyInt, PyObject *, PyInt *);
static PyObject *LineToString(const char *); static PyObject *LineToString(const char *);
static char *StringToLine(PyObject *); static char *StringToLine(PyObject *);
@ -690,7 +704,7 @@ static PyObject *OutputWrite(PyObject *, PyObject *);
static PyObject *OutputWritelines(PyObject *, PyObject *); static PyObject *OutputWritelines(PyObject *, PyObject *);
typedef void (*writefn)(char_u *); typedef void (*writefn)(char_u *);
static void writer(writefn fn, char_u *str, int n); static void writer(writefn fn, char_u *str, PyInt n);
/* Output object definition /* Output object definition
*/ */
@ -812,7 +826,7 @@ OutputWritelines(PyObject *self, PyObject *args)
{ {
PyObject *line = PyList_GetItem(list, i); PyObject *line = PyList_GetItem(list, i);
char *str; char *str;
int len; PyInt len;
if (!PyArg_Parse(line, "s#", &str, &len)) { if (!PyArg_Parse(line, "s#", &str, &len)) {
PyErr_SetString(PyExc_TypeError, _("writelines() requires list of strings")); PyErr_SetString(PyExc_TypeError, _("writelines() requires list of strings"));
@ -836,15 +850,15 @@ OutputWritelines(PyObject *self, PyObject *args)
*/ */
static char_u *buffer = NULL; static char_u *buffer = NULL;
static int buffer_len = 0; static PyInt buffer_len = 0;
static int buffer_size = 0; static PyInt buffer_size = 0;
static writefn old_fn = NULL; static writefn old_fn = NULL;
static void static void
buffer_ensure(int n) buffer_ensure(PyInt n)
{ {
int new_size; PyInt new_size;
char_u *new_buffer; char_u *new_buffer;
if (n < buffer_size) if (n < buffer_size)
@ -884,7 +898,7 @@ PythonIO_Flush(void)
} }
static void static void
writer(writefn fn, char_u *str, int n) writer(writefn fn, char_u *str, PyInt n)
{ {
char_u *ptr; char_u *ptr;
@ -895,7 +909,7 @@ writer(writefn fn, char_u *str, int n)
while (n > 0 && (ptr = memchr(str, '\n', n)) != NULL) while (n > 0 && (ptr = memchr(str, '\n', n)) != NULL)
{ {
int len = ptr - str; PyInt len = ptr - str;
buffer_ensure(buffer_len + len + 1); buffer_ensure(buffer_len + len + 1);
@ -1022,14 +1036,14 @@ typedef struct
{ {
PyObject_HEAD PyObject_HEAD
BufferObject *buf; BufferObject *buf;
int start; PyInt start;
int end; PyInt end;
} }
RangeObject; RangeObject;
#define RangeType_Check(obj) ((obj)->ob_type == &RangeType) #define RangeType_Check(obj) ((obj)->ob_type == &RangeType)
static PyObject *RangeNew(buf_T *, int, int); static PyObject *RangeNew(buf_T *, PyInt, PyInt);
static void RangeDestructor(PyObject *); static void RangeDestructor(PyObject *);
static PyObject *RangeGetattr(PyObject *, char *); static PyObject *RangeGetattr(PyObject *, char *);
@ -1069,8 +1083,8 @@ static int CurrentSetattr(PyObject *, char *, PyObject *);
static struct PyMethodDef VimMethods[] = { static struct PyMethodDef VimMethods[] = {
/* name, function, calling, documentation */ /* name, function, calling, documentation */
{"command", VimCommand, 1, "" }, {"command", VimCommand, 1, "Execute a Vim ex-mode command" },
{"eval", VimEval, 1, "" }, {"eval", VimEval, 1, "Evaluate an expression using Vim evaluator" },
{ NULL, NULL, 0, NULL } { NULL, NULL, 0, NULL }
}; };
@ -1110,7 +1124,7 @@ VimCommand(PyObject *self, PyObject *args)
* Function to translate a typval_T into a PyObject; this will recursively * Function to translate a typval_T into a PyObject; this will recursively
* translate lists/dictionaries into their Python equivalents. * translate lists/dictionaries into their Python equivalents.
* *
* The depth parameter is too avoid infinite recursion, set it to 1 when * The depth parameter is to avoid infinite recursion, set it to 1 when
* you call VimToPython. * you call VimToPython.
*/ */
static PyObject * static PyObject *
@ -1130,7 +1144,7 @@ VimToPython(typval_T *our_tv, int depth, PyObject *lookupDict)
/* Check if we run into a recursive loop. The item must be in lookupDict /* Check if we run into a recursive loop. The item must be in lookupDict
* then and we can use it again. */ * then and we can use it again. */
sprintf(ptrBuf, "%ld", (long)our_tv); sprintf(ptrBuf, PRINTF_DECIMAL_LONG_U, (long_u)our_tv);
result = PyDict_GetItemString(lookupDict, ptrBuf); result = PyDict_GetItemString(lookupDict, ptrBuf);
if (result != NULL) if (result != NULL)
Py_INCREF(result); Py_INCREF(result);
@ -1184,7 +1198,7 @@ VimToPython(typval_T *our_tv, int depth, PyObject *lookupDict)
if (our_tv->vval.v_dict != NULL) if (our_tv->vval.v_dict != NULL)
{ {
hashtab_T *ht = &our_tv->vval.v_dict->dv_hashtab; hashtab_T *ht = &our_tv->vval.v_dict->dv_hashtab;
int todo = ht->ht_used; long_u todo = ht->ht_used;
hashitem_T *hi; hashitem_T *hi;
dictitem_T *di; dictitem_T *di;
@ -1273,7 +1287,7 @@ CheckBuffer(BufferObject *this)
} }
static PyObject * static PyObject *
RBItem(BufferObject *self, PyInt n, int start, int end) RBItem(BufferObject *self, PyInt n, PyInt start, PyInt end)
{ {
if (CheckBuffer(self)) if (CheckBuffer(self))
return NULL; return NULL;
@ -1288,7 +1302,7 @@ RBItem(BufferObject *self, PyInt n, int start, int end)
} }
static PyObject * static PyObject *
RBSlice(BufferObject *self, PyInt lo, PyInt hi, int start, int end) RBSlice(BufferObject *self, PyInt lo, PyInt hi, PyInt start, PyInt end)
{ {
PyInt size; PyInt size;
@ -1312,9 +1326,9 @@ RBSlice(BufferObject *self, PyInt lo, PyInt hi, int start, int end)
} }
static PyInt static PyInt
RBAssItem(BufferObject *self, PyInt n, PyObject *val, int start, int end, int *new_end) RBAssItem(BufferObject *self, PyInt n, PyObject *val, PyInt start, PyInt end, PyInt *new_end)
{ {
int len_change; PyInt len_change;
if (CheckBuffer(self)) if (CheckBuffer(self))
return -1; return -1;
@ -1335,10 +1349,10 @@ RBAssItem(BufferObject *self, PyInt n, PyObject *val, int start, int end, int *n
} }
static PyInt static PyInt
RBAssSlice(BufferObject *self, PyInt lo, PyInt hi, PyObject *val, int start, int end, int *new_end) RBAssSlice(BufferObject *self, PyInt lo, PyInt hi, PyObject *val, PyInt start, PyInt end, PyInt *new_end)
{ {
int size; PyInt size;
int len_change; PyInt len_change;
/* Self must be a valid buffer */ /* Self must be a valid buffer */
if (CheckBuffer(self)) if (CheckBuffer(self))
@ -1368,19 +1382,19 @@ RBAssSlice(BufferObject *self, PyInt lo, PyInt hi, PyObject *val, int start, int
} }
static PyObject * static PyObject *
RBAppend(BufferObject *self, PyObject *args, int start, int end, int *new_end) RBAppend(BufferObject *self, PyObject *args, PyInt start, PyInt end, PyInt *new_end)
{ {
PyObject *lines; PyObject *lines;
int len_change; PyInt len_change;
int max; PyInt max;
int n; PyInt n;
if (CheckBuffer(self)) if (CheckBuffer(self))
return NULL; return NULL;
max = n = end - start + 1; max = n = end - start + 1;
if (!PyArg_ParseTuple(args, "O|i", &lines, &n)) if (!PyArg_ParseTuple(args, "O|" Py_ssize_t_fmt, &lines, &n))
return NULL; return NULL;
if (n < 0 || n > max) if (n < 0 || n > max)
@ -1405,9 +1419,9 @@ RBAppend(BufferObject *self, PyObject *args, int start, int end, int *new_end)
static struct PyMethodDef BufferMethods[] = { static struct PyMethodDef BufferMethods[] = {
/* name, function, calling, documentation */ /* name, function, calling, documentation */
{"append", BufferAppend, 1, "" }, {"append", BufferAppend, 1, "Append data to Vim buffer" },
{"mark", BufferMark, 1, "" }, {"mark", BufferMark, 1, "Return (row,col) representing position of named mark" },
{"range", BufferRange, 1, "" }, {"range", BufferRange, 1, "Return a range object which represents the part of the given buffer between line numbers s and e" },
{ NULL, NULL, 0, NULL } { NULL, NULL, 0, NULL }
}; };
@ -1505,7 +1519,7 @@ BufferGetattr(PyObject *self, char *name)
if (strcmp(name, "name") == 0) if (strcmp(name, "name") == 0)
return Py_BuildValue("s", this->buf->b_ffname); return Py_BuildValue("s", this->buf->b_ffname);
else if (strcmp(name, "number") == 0) else if (strcmp(name, "number") == 0)
return Py_BuildValue("i",this->buf->b_fnum); return Py_BuildValue(Py_ssize_t_fmt, this->buf->b_fnum);
else if (strcmp(name,"__members__") == 0) else if (strcmp(name,"__members__") == 0)
return Py_BuildValue("[ss]", "name", "number"); return Py_BuildValue("[ss]", "name", "number");
else else
@ -1520,14 +1534,13 @@ BufferRepr(PyObject *self)
if (this->buf == INVALID_BUFFER_VALUE) if (this->buf == INVALID_BUFFER_VALUE)
{ {
vim_snprintf(repr, 100, _("<buffer object (deleted) at %8lX>"), vim_snprintf(repr, 100, _("<buffer object (deleted) at %p>"), (self));
(long)(self));
return PyString_FromString(repr); return PyString_FromString(repr);
} }
else else
{ {
char *name = (char *)this->buf->b_fname; char *name = (char *)this->buf->b_fname;
int len; PyInt len;
if (name == NULL) if (name == NULL)
name = ""; name = "";
@ -1572,7 +1585,7 @@ BufferSlice(PyObject *self, PyInt lo, PyInt hi)
BufferAssItem(PyObject *self, PyInt n, PyObject *val) BufferAssItem(PyObject *self, PyInt n, PyObject *val)
{ {
return RBAssItem((BufferObject *)(self), n, val, 1, return RBAssItem((BufferObject *)(self), n, val, 1,
(int)((BufferObject *)(self))->buf->b_ml.ml_line_count, (PyInt)((BufferObject *)(self))->buf->b_ml.ml_line_count,
NULL); NULL);
} }
@ -1580,7 +1593,7 @@ BufferAssItem(PyObject *self, PyInt n, PyObject *val)
BufferAssSlice(PyObject *self, PyInt lo, PyInt hi, PyObject *val) BufferAssSlice(PyObject *self, PyInt lo, PyInt hi, PyObject *val)
{ {
return RBAssSlice((BufferObject *)(self), lo, hi, val, 1, return RBAssSlice((BufferObject *)(self), lo, hi, val, 1,
(int)((BufferObject *)(self))->buf->b_ml.ml_line_count, (PyInt)((BufferObject *)(self))->buf->b_ml.ml_line_count,
NULL); NULL);
} }
@ -1588,7 +1601,7 @@ BufferAssSlice(PyObject *self, PyInt lo, PyInt hi, PyObject *val)
BufferAppend(PyObject *self, PyObject *args) BufferAppend(PyObject *self, PyObject *args)
{ {
return RBAppend((BufferObject *)(self), args, 1, return RBAppend((BufferObject *)(self), args, 1,
(int)((BufferObject *)(self))->buf->b_ml.ml_line_count, (PyInt)((BufferObject *)(self))->buf->b_ml.ml_line_count,
NULL); NULL);
} }
@ -1633,13 +1646,13 @@ BufferMark(PyObject *self, PyObject *args)
static PyObject * static PyObject *
BufferRange(PyObject *self, PyObject *args) BufferRange(PyObject *self, PyObject *args)
{ {
int start; PyInt start;
int end; PyInt end;
if (CheckBuffer((BufferObject *)(self))) if (CheckBuffer((BufferObject *)(self)))
return NULL; return NULL;
if (!PyArg_ParseTuple(args, "ii", &start, &end)) if (!PyArg_ParseTuple(args, Py_ssize_t_fmt Py_ssize_t_fmt, &start, &end))
return NULL; return NULL;
return RangeNew(((BufferObject *)(self))->buf, start, end); return RangeNew(((BufferObject *)(self))->buf, start, end);
@ -1650,7 +1663,7 @@ BufferRange(PyObject *self, PyObject *args)
static struct PyMethodDef RangeMethods[] = { static struct PyMethodDef RangeMethods[] = {
/* name, function, calling, documentation */ /* name, function, calling, documentation */
{"append", RangeAppend, 1, "" }, {"append", RangeAppend, 1, "Append data to the Vim range" },
{ NULL, NULL, 0, NULL } { NULL, NULL, 0, NULL }
}; };
@ -1691,7 +1704,7 @@ static PyTypeObject RangeType = {
*/ */
static PyObject * static PyObject *
RangeNew(buf_T *buf, int start, int end) RangeNew(buf_T *buf, PyInt start, PyInt end)
{ {
BufferObject *bufr; BufferObject *bufr;
RangeObject *self; RangeObject *self;
@ -1725,9 +1738,9 @@ RangeDestructor(PyObject *self)
RangeGetattr(PyObject *self, char *name) RangeGetattr(PyObject *self, char *name)
{ {
if (strcmp(name, "start") == 0) if (strcmp(name, "start") == 0)
return Py_BuildValue("i",((RangeObject *)(self))->start - 1); return Py_BuildValue(Py_ssize_t_fmt, ((RangeObject *)(self))->start - 1);
else if (strcmp(name, "end") == 0) else if (strcmp(name, "end") == 0)
return Py_BuildValue("i",((RangeObject *)(self))->end - 1); return Py_BuildValue(Py_ssize_t_fmt, ((RangeObject *)(self))->end - 1);
else else
return Py_FindMethod(RangeMethods, self, name); return Py_FindMethod(RangeMethods, self, name);
} }
@ -1740,8 +1753,8 @@ RangeRepr(PyObject *self)
if (this->buf->buf == INVALID_BUFFER_VALUE) if (this->buf->buf == INVALID_BUFFER_VALUE)
{ {
vim_snprintf(repr, 100, "<range object (for deleted buffer) at %8lX>", vim_snprintf(repr, 100, "<range object (for deleted buffer) at %p>",
(long)(self)); (self));
return PyString_FromString(repr); return PyString_FromString(repr);
} }
else else
@ -1869,7 +1882,7 @@ static PyTypeObject BufListType = {
BufListLength(PyObject *self) BufListLength(PyObject *self)
{ {
buf_T *b = firstbuf; buf_T *b = firstbuf;
int n = 0; PyInt n = 0;
while (b) while (b)
{ {
@ -2115,8 +2128,7 @@ WindowRepr(PyObject *self)
if (this->win == INVALID_WINDOW_VALUE) if (this->win == INVALID_WINDOW_VALUE)
{ {
vim_snprintf(repr, 100, _("<window object (deleted) at %.8lX>"), vim_snprintf(repr, 100, _("<window object (deleted) at %p>"), (self));
(long)(self));
return PyString_FromString(repr); return PyString_FromString(repr);
} }
else else
@ -2128,8 +2140,8 @@ WindowRepr(PyObject *self)
++i; ++i;
if (w == NULL) if (w == NULL)
vim_snprintf(repr, 100, _("<window object (unknown) at %.8lX>"), vim_snprintf(repr, 100, _("<window object (unknown) at %p>"),
(long)(self)); (self));
else else
vim_snprintf(repr, 100, _("<window %d>"), i); vim_snprintf(repr, 100, _("<window %d>"), i);
@ -2186,7 +2198,7 @@ static PyTypeObject WinListType = {
WinListLength(PyObject *self) WinListLength(PyObject *self)
{ {
win_T *w = firstwin; win_T *w = firstwin;
int n = 0; PyInt n = 0;
while (w != NULL) while (w != NULL)
{ {
@ -2254,7 +2266,7 @@ CurrentGetattr(PyObject *self, char *name)
else if (strcmp(name, "window") == 0) else if (strcmp(name, "window") == 0)
return (PyObject *)WindowNew(curwin); return (PyObject *)WindowNew(curwin);
else if (strcmp(name, "line") == 0) else if (strcmp(name, "line") == 0)
return GetBufferLine(curbuf, (int)curwin->w_cursor.lnum); return GetBufferLine(curbuf, (PyInt)curwin->w_cursor.lnum);
else if (strcmp(name, "range") == 0) else if (strcmp(name, "range") == 0)
return RangeNew(curbuf, RangeStart, RangeEnd); return RangeNew(curbuf, RangeStart, RangeEnd);
else if (strcmp(name,"__members__") == 0) else if (strcmp(name,"__members__") == 0)
@ -2272,7 +2284,7 @@ CurrentSetattr(PyObject *self, char *name, PyObject *value)
{ {
if (strcmp(name, "line") == 0) if (strcmp(name, "line") == 0)
{ {
if (SetBufferLine(curbuf, (int)curwin->w_cursor.lnum, value, NULL) == FAIL) if (SetBufferLine(curbuf, (PyInt)curwin->w_cursor.lnum, value, NULL) == FAIL)
return -1; return -1;
return 0; return 0;
@ -2344,7 +2356,7 @@ PythonMod_Init(void)
/* Set sys.argv[] to avoid a crash in warn(). */ /* Set sys.argv[] to avoid a crash in warn(). */
PySys_SetArgv(1, argv); PySys_SetArgv(1, argv);
mod = Py_InitModule("vim", VimMethods); mod = Py_InitModule4("vim", VimMethods, (char *)NULL, (PyObject *)NULL, PYTHON_API_VERSION);
dict = PyModule_GetDict(mod); dict = PyModule_GetDict(mod);
VimError = Py_BuildValue("s", "vim.error"); VimError = Py_BuildValue("s", "vim.error");
@ -2369,7 +2381,7 @@ PythonMod_Init(void)
* string object. * string object.
*/ */
static PyObject * static PyObject *
GetBufferLine(buf_T *buf, int n) GetBufferLine(buf_T *buf, PyInt n)
{ {
return LineToString((char *)ml_get_buf(buf, (linenr_T)n, FALSE)); return LineToString((char *)ml_get_buf(buf, (linenr_T)n, FALSE));
} }
@ -2422,7 +2434,7 @@ GetBufferLineList(buf_T *buf, PyInt lo, PyInt hi)
* deleted). * deleted).
*/ */
static void static void
py_fix_cursor(int lo, int hi, int extra) py_fix_cursor(linenr_T lo, linenr_T hi, linenr_T extra)
{ {
if (curwin->w_cursor.lnum >= lo) if (curwin->w_cursor.lnum >= lo)
{ {
@ -2454,7 +2466,7 @@ py_fix_cursor(int lo, int hi, int extra)
* is set to the change in the buffer length. * is set to the change in the buffer length.
*/ */
static int static int
SetBufferLine(buf_T *buf, int n, PyObject *line, int *len_change) SetBufferLine(buf_T *buf, PyInt n, PyObject *line, PyInt *len_change)
{ {
/* First of all, we check the thpe of the supplied Python object. /* First of all, we check the thpe of the supplied Python object.
* There are three cases: * There are three cases:
@ -2477,7 +2489,7 @@ SetBufferLine(buf_T *buf, int n, PyObject *line, int *len_change)
{ {
deleted_lines_mark((linenr_T)n, 1L); deleted_lines_mark((linenr_T)n, 1L);
if (buf == curwin->w_buffer) if (buf == curwin->w_buffer)
py_fix_cursor(n, n + 1, -1); py_fix_cursor((linenr_T)n, (linenr_T)n + 1, (linenr_T)-1);
} }
curbuf = savebuf; curbuf = savebuf;
@ -2545,7 +2557,7 @@ SetBufferLine(buf_T *buf, int n, PyObject *line, int *len_change)
* is set to the change in the buffer length. * is set to the change in the buffer length.
*/ */
static int static int
SetBufferLineList(buf_T *buf, PyInt lo, PyInt hi, PyObject *list, int *len_change) SetBufferLineList(buf_T *buf, PyInt lo, PyInt hi, PyObject *list, PyInt *len_change)
{ {
/* First of all, we check the thpe of the supplied Python object. /* First of all, we check the thpe of the supplied Python object.
* There are three cases: * There are three cases:
@ -2556,7 +2568,7 @@ SetBufferLineList(buf_T *buf, PyInt lo, PyInt hi, PyObject *list, int *len_chang
if (list == Py_None || list == NULL) if (list == Py_None || list == NULL)
{ {
PyInt i; PyInt i;
PyInt n = hi - lo; PyInt n = (int)(hi - lo);
buf_T *savebuf = curbuf; buf_T *savebuf = curbuf;
PyErr_Clear(); PyErr_Clear();
@ -2577,7 +2589,7 @@ SetBufferLineList(buf_T *buf, PyInt lo, PyInt hi, PyObject *list, int *len_chang
deleted_lines_mark((linenr_T)lo, (long)i); deleted_lines_mark((linenr_T)lo, (long)i);
if (buf == curwin->w_buffer) if (buf == curwin->w_buffer)
py_fix_cursor(lo, hi, -n); py_fix_cursor((linenr_T)lo, (linenr_T)hi, (linenr_T)-n);
} }
curbuf = savebuf; curbuf = savebuf;
@ -2595,7 +2607,7 @@ SetBufferLineList(buf_T *buf, PyInt lo, PyInt hi, PyObject *list, int *len_chang
PyInt i; PyInt i;
PyInt new_len = PyList_Size(list); PyInt new_len = PyList_Size(list);
PyInt old_len = hi - lo; PyInt old_len = hi - lo;
int extra = 0; /* lines added to text, can be negative */ PyInt extra = 0; /* lines added to text, can be negative */
char **array; char **array;
buf_T *savebuf; buf_T *savebuf;
@ -2706,7 +2718,7 @@ SetBufferLineList(buf_T *buf, PyInt lo, PyInt hi, PyObject *list, int *len_chang
changed_lines((linenr_T)lo, 0, (linenr_T)hi, (long)extra); changed_lines((linenr_T)lo, 0, (linenr_T)hi, (long)extra);
if (buf == curwin->w_buffer) if (buf == curwin->w_buffer)
py_fix_cursor(lo, hi, extra); py_fix_cursor((linenr_T)lo, (linenr_T)hi, (linenr_T)extra);
curbuf = savebuf; curbuf = savebuf;
@ -2734,7 +2746,7 @@ SetBufferLineList(buf_T *buf, PyInt lo, PyInt hi, PyObject *list, int *len_chang
* is set to the change in the buffer length. * is set to the change in the buffer length.
*/ */
static int static int
InsertBufferLines(buf_T *buf, int n, PyObject *lines, int *len_change) InsertBufferLines(buf_T *buf, PyInt n, PyObject *lines, PyInt *len_change)
{ {
/* First of all, we check the type of the supplied Python object. /* First of all, we check the type of the supplied Python object.
* It must be a string or a list, or the call is in error. * It must be a string or a list, or the call is in error.

View File

@ -666,6 +666,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
320,
/**/ /**/
319, 319,
/**/ /**/
@ -1367,12 +1369,12 @@ list_version()
# ifdef FEAT_GUI_W32 # ifdef FEAT_GUI_W32
# if defined(_MSC_VER) && (_MSC_VER <= 1010) # if defined(_MSC_VER) && (_MSC_VER <= 1010)
/* Only MS VC 4.1 and earlier can do Win32s */ /* Only MS VC 4.1 and earlier can do Win32s */
MSG_PUTS(_("\nMS-Windows 16/32 bit GUI version")); MSG_PUTS(_("\nMS-Windows 16/32-bit GUI version"));
# else # else
# ifdef _WIN64 # ifdef _WIN64
MSG_PUTS(_("\nMS-Windows 64 bit GUI version")); MSG_PUTS(_("\nMS-Windows 64-bit GUI version"));
# else # else
MSG_PUTS(_("\nMS-Windows 32 bit GUI version")); MSG_PUTS(_("\nMS-Windows 32-bit GUI version"));
# endif # endif
# endif # endif
if (gui_is_win32s()) if (gui_is_win32s())
@ -1381,17 +1383,21 @@ list_version()
MSG_PUTS(_(" with OLE support")); MSG_PUTS(_(" with OLE support"));
# endif # endif
# else # else
MSG_PUTS(_("\nMS-Windows 32 bit console version")); # ifdef _WIN64
MSG_PUTS(_("\nMS-Windows 64-bit console version"));
# else
MSG_PUTS(_("\nMS-Windows 32-bit console version"));
# endif
# endif # endif
#endif #endif
#ifdef WIN16 #ifdef WIN16
MSG_PUTS(_("\nMS-Windows 16 bit version")); MSG_PUTS(_("\nMS-Windows 16-bit version"));
#endif #endif
#ifdef MSDOS #ifdef MSDOS
# ifdef DJGPP # ifdef DJGPP
MSG_PUTS(_("\n32 bit MS-DOS version")); MSG_PUTS(_("\n32-bit MS-DOS version"));
# else # else
MSG_PUTS(_("\n16 bit MS-DOS version")); MSG_PUTS(_("\n16-bit MS-DOS version"));
# endif # endif
#endif #endif
#ifdef MACOS #ifdef MACOS