summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2010-07-17 23:52:29 +0200
committerBram Moolenaar <Bram@vim.org>2010-07-17 23:52:29 +0200
commit55d5c0348c3afbfb9233487362e46dc633cd94fb (patch)
tree0cfa34c3c753e2357e4c481be8f86349cf43e393
parentbd5e15fd5c7e42505d6b0e20f4198d24fc7e219d (diff)
downloadvim-55d5c0348c3afbfb9233487362e46dc633cd94fb.zip
Whitespace cleanup.
-rw-r--r--runtime/doc/todo.txt7
-rw-r--r--src/ex_docmd.c4
-rw-r--r--src/feature.h2
-rw-r--r--src/globals.h2
-rw-r--r--src/gui.h2
-rw-r--r--src/if_lua.c913
-rw-r--r--src/if_mzsch.h8
-rw-r--r--src/if_python3.c1443
-rw-r--r--src/macros.h6
-rw-r--r--src/vim.h4
10 files changed, 1261 insertions, 1130 deletions
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index db01d3aa1..fc3f2b492 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1089,17 +1089,12 @@ Before (beta) release 7.3:
- Add fixes for 7.2 to version7.txt
- Add hg history to version7.txt
- Remove UF_VERSION_CRYPT_PREV and UF_VERSION_PREV.
+- Documentation for Python 3 support.
- Build the MS-Windows version with Python 2.6.5 and 3.1.2?
Before release 7.3:
- Rename vim73 branch to default (hints: Xavier de Gaye, 2010 May 23)
-Vim 7.3:
-Needs some work:
-- Have a look at patch to enable screen access from Python. (Marko Mahnic,
- 2010 Apr 12)
-
-
More patches:
- Another patch for Javascript indenting. (Hari Kumar, 2010 Jul 11)
Needs a few tests.
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 590f36b32..8da3a711b 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -2821,8 +2821,8 @@ find_command(eap, full)
{
while (ASCII_ISALPHA(*p))
++p;
- /* for python 3.x support (:py3, :python3) */
- if (eap->cmd[0] == 'p' && eap->cmd[1] == 'y')
+ /* for python 3.x support (:py3, :python3) */
+ if (eap->cmd[0] == 'p' && eap->cmd[1] == 'y')
p = skipdigits(p);
/* check for non-alpha command */
diff --git a/src/feature.h b/src/feature.h
index b9a8f79db..68ffe0ca5 100644
--- a/src/feature.h
+++ b/src/feature.h
@@ -1194,7 +1194,7 @@
/*
* These features can only be included by using a configure argument. See the
* Makefile for a line to uncomment.
- * +lua Lua interface: "--enable-luainterp"
+ * +lua Lua interface: "--enable-luainterp"
* +mzscheme MzScheme interface: "--enable-mzscheme"
* +perl Perl interface: "--enable-perlinterp"
* +python Python interface: "--enable-pythoninterp"
diff --git a/src/globals.h b/src/globals.h
index 605a3905c..bb5f3cfc6 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -1422,7 +1422,7 @@ EXTERN char_u e_libcall[] INIT(= N_("E364: Library call failed for \"%s()\""));
|| defined(DYNAMIC_ICONV) \
|| defined(DYNAMIC_GETTEXT) \
|| defined(DYNAMIC_MZSCHEME) \
- || defined(DYNAMIC_LUA)
+ || defined(DYNAMIC_LUA)
EXTERN char_u e_loadlib[] INIT(= N_("E370: Could not load library %s"));
EXTERN char_u e_loadfunc[] INIT(= N_("E448: Could not load library function %s"));
#endif
diff --git a/src/gui.h b/src/gui.h
index ed183eedc..149603c89 100644
--- a/src/gui.h
+++ b/src/gui.h
@@ -412,7 +412,7 @@ typedef struct Gui
#if defined(FEAT_GUI_TABLINE) \
&& (defined(FEAT_GUI_W32) || defined(FEAT_GUI_MOTIF) \
- || defined(FEAT_GUI_MAC))
+ || defined(FEAT_GUI_MAC))
int tabline_height;
#endif
diff --git a/src/if_lua.c b/src/if_lua.c
index 0c3244776..d05c1e335 100644
--- a/src/if_lua.c
+++ b/src/if_lua.c
@@ -229,33 +229,44 @@ static const luaV_Reg luaV_dll[] = {
static HINSTANCE hinstLua = 0;
-static void end_dynamic_lua (void) {
- if (hinstLua) {
- FreeLibrary(hinstLua);
- hinstLua = 0;
+ static void
+end_dynamic_lua(void)
+{
+ if (hinstLua)
+ {
+ FreeLibrary(hinstLua);
+ hinstLua = 0;
}
}
-static int lua_link_init (char *libname, int verbose) {
+ static int
+lua_link_init(char *libname, int verbose)
+{
const luaV_Reg *reg;
if (hinstLua) return OK;
hinstLua = LoadLibrary(libname);
- if (!hinstLua) {
- if (verbose) EMSG2(_(e_loadlib), libname);
- return FAIL;
+ if (!hinstLua)
+ {
+ if (verbose)
+ EMSG2(_(e_loadlib), libname);
+ return FAIL;
}
- for (reg = luaV_dll; reg->func; reg++) {
+ for (reg = luaV_dll; reg->func; reg++)
+ {
if ((*reg->func = GetProcAddress(hinstLua, reg->name)) == NULL) {
- FreeLibrary(hinstLua);
- hinstLua = 0;
- if (verbose) EMSG2(_(e_loadfunc), reg->name);
- return FAIL;
- }
+ FreeLibrary(hinstLua);
+ hinstLua = 0;
+ if (verbose)
+ EMSG2(_(e_loadfunc), reg->name);
+ return FAIL;
+ }
}
return OK;
}
-int lua_enabled (int verbose) {
+ int
+lua_enabled(int verbose)
+{
return lua_link_init(DYNAMIC_LUA_DLL, verbose) == OK;
}
@@ -264,116 +275,144 @@ int lua_enabled (int verbose) {
/* ======= Internal ======= */
-static void luaV_newmetatable (lua_State *L, const char *tname) {
+ static void
+luaV_newmetatable(lua_State *L, const char *tname)
+{
lua_newtable(L);
lua_pushlightuserdata(L, (void *) tname);
lua_pushvalue(L, -2);
lua_rawset(L, LUA_REGISTRYINDEX);
}
-static void *luaV_toudata (lua_State *L, int ud, const char *tname) {
+ static void *
+luaV_toudata(lua_State *L, int ud, const char *tname)
+{
void *p = lua_touserdata(L, ud);
- if (p != NULL) { /* value is userdata? */
- if (lua_getmetatable(L, ud)) { /* does it have a metatable? */
- luaV_getfield(L, tname); /* get metatable */
- if (lua_rawequal(L, -1, -2)) { /* MTs match? */
- lua_pop(L, 2); /* MTs */
- return p;
- }
- }
+
+ if (p != NULL) /* value is userdata? */
+ {
+ if (lua_getmetatable(L, ud)) /* does it have a metatable? */
+ {
+ luaV_getfield(L, tname); /* get metatable */
+ if (lua_rawequal(L, -1, -2)) /* MTs match? */
+ {
+ lua_pop(L, 2); /* MTs */
+ return p;
+ }
+ }
}
return NULL;
}
-static void *luaV_checkudata (lua_State *L, int ud, const char *tname) {
+ static void *
+luaV_checkudata(lua_State *L, int ud, const char *tname)
+{
void *p = luaV_toudata(L, ud, tname);
if (p == NULL) luaL_typerror(L, ud, tname);
return p;
}
-static void luaV_pushtypval (lua_State *L, typval_T *tv) {
+ static void
+luaV_pushtypval(lua_State *L, typval_T *tv)
+{
if (tv == NULL) luaL_error(L, "null type");
- switch (tv->v_type) {
- case VAR_STRING:
- lua_pushstring(L, (char *) tv->vval.v_string);
- break;
- case VAR_NUMBER:
- lua_pushinteger(L, (int) tv->vval.v_number);
- break;
+ switch (tv->v_type)
+ {
+ case VAR_STRING:
+ lua_pushstring(L, (char *) tv->vval.v_string);
+ break;
+ case VAR_NUMBER:
+ lua_pushinteger(L, (int) tv->vval.v_number);
+ break;
#ifdef FEAT_FLOAT
- case VAR_FLOAT:
- lua_pushnumber(L, (lua_Number) tv->vval.v_float);
- break;
+ case VAR_FLOAT:
+ lua_pushnumber(L, (lua_Number) tv->vval.v_float);
+ break;
#endif
- case VAR_LIST: {
- list_T *l = tv->vval.v_list;
- if (l != NULL) {
- /* check cache */
- lua_pushlightuserdata(L, (void *) l);
- lua_rawget(L, LUA_ENVIRONINDEX);
- if (lua_isnil(L, -1)) { /* not interned? */
- listitem_T *li;
- int n = 0;
- lua_pop(L, 1); /* nil */
- lua_newtable(L);
- lua_pushlightuserdata(L, (void *) l);
- lua_pushvalue(L, -2);
- lua_rawset(L, LUA_ENVIRONINDEX);
- for (li = l->lv_first; li != NULL; li = li->li_next) {
- luaV_pushtypval(L, &li->li_tv);
- lua_rawseti(L, -2, ++n);
- }
- }
- }
- else lua_pushnil(L);
- break;
- }
- case VAR_DICT: {
- dict_T *d = tv->vval.v_dict;
- if (d != NULL) {
- /* check cache */
- lua_pushlightuserdata(L, (void *) d);
- lua_rawget(L, LUA_ENVIRONINDEX);
- if (lua_isnil(L, -1)) { /* not interned? */
- hashtab_T *ht = &d->dv_hashtab;
- hashitem_T *hi;
- int n = ht->ht_used; /* remaining items */
- lua_pop(L, 1); /* nil */
- lua_newtable(L);
- lua_pushlightuserdata(L, (void *) d);
- lua_pushvalue(L, -2);
- lua_rawset(L, LUA_ENVIRONINDEX);
- for (hi = ht->ht_array; n > 0; hi++) {
- if (!HASHITEM_EMPTY(hi)) {
- dictitem_T *di = dict_lookup(hi);
- luaV_pushtypval(L, &di->di_tv);
- lua_setfield(L, -2, (char *) hi->hi_key);
- n--;
- }
- }
- }
- }
- else lua_pushnil(L);
- break;
- }
- default:
- luaL_error(L, "invalid type");
+ case VAR_LIST: {
+ list_T *l = tv->vval.v_list;
+
+ if (l != NULL)
+ {
+ /* check cache */
+ lua_pushlightuserdata(L, (void *) l);
+ lua_rawget(L, LUA_ENVIRONINDEX);
+ if (lua_isnil(L, -1)) /* not interned? */
+ {
+ listitem_T *li;
+ int n = 0;
+ lua_pop(L, 1); /* nil */
+ lua_newtable(L);
+ lua_pushlightuserdata(L, (void *) l);
+ lua_pushvalue(L, -2);
+ lua_rawset(L, LUA_ENVIRONINDEX);
+ for (li = l->lv_first; li != NULL; li = li->li_next)
+ {
+ luaV_pushtypval(L, &li->li_tv);
+ lua_rawseti(L, -2, ++n);
+ }
+ }
+ }
+ else lua_pushnil(L);
+ break;
+ }
+ case VAR_DICT: {
+ dict_T *d = tv->vval.v_dict;
+
+ if (d != NULL)
+ {
+ /* check cache */
+ lua_pushlightuserdata(L, (void *) d);
+ lua_rawget(L, LUA_ENVIRONINDEX);
+ if (lua_isnil(L, -1)) { /* not interned? */
+ hashtab_T *ht = &d->dv_hashtab;
+ hashitem_T *hi;
+ int n = ht->ht_used; /* remaining items */
+ lua_pop(L, 1); /* nil */
+ lua_newtable(L);
+ lua_pushlightuserdata(L, (void *) d);
+ lua_pushvalue(L, -2);
+ lua_rawset(L, LUA_ENVIRONINDEX);
+ for (hi = ht->ht_array; n > 0; hi++)
+ {
+ if (!HASHITEM_EMPTY(hi))
+ {
+ dictitem_T *di = dict_lookup(hi);
+ luaV_pushtypval(L, &di->di_tv);
+ lua_setfield(L, -2, (char *) hi->hi_key);
+ n--;
+ }
+ }
+ }
+ }
+ else lua_pushnil(L);
+ break;
+ }
+ default:
+ luaL_error(L, "invalid type");
}
}
/* similar to luaL_addlstring, but replaces \0 with \n if toline and
* \n with \0 otherwise */
-static void luaV_addlstring (luaL_Buffer *b, const char *s, size_t l,
- int toline) {
- while (l--) {
- if (*s == '\0' && toline) luaL_addchar(b, '\n');
- else if (*s == '\n' && !toline) luaL_addchar(b, '\0');
- else luaL_addchar(b, *s);
- s++;
+ static void
+luaV_addlstring(luaL_Buffer *b, const char *s, size_t l, int toline)
+{
+ while (l--)
+ {
+ if (*s == '\0' && toline)
+ luaL_addchar(b, '\n');
+ else if (*s == '\n' && !toline)
+ luaL_addchar(b, '\0');
+ else
+ luaL_addchar(b, *s);
+ s++;
}
}
-static void luaV_pushline (lua_State *L, buf_T *buf, linenr_T n) {
+ static void
+luaV_pushline(lua_State *L, buf_T *buf, linenr_T n)
+{
const char *s = (const char *) ml_get_buf(buf, n, FALSE);
luaL_Buffer b;
luaL_buffinit(L, &b);
@@ -381,9 +420,12 @@ static void luaV_pushline (lua_State *L, buf_T *buf, linenr_T n) {
luaL_pushresult(&b);
}
-static char_u *luaV_toline (lua_State *L, int pos) {
+ static char_u *
+luaV_toline(lua_State *L, int pos)
+{
size_t l;
const char *s = lua_tolstring(L, pos, &l);
+
luaL_Buffer b;
luaL_buffinit(L, &b);
luaV_addlstring(&b, s, l, 1);
@@ -393,7 +435,9 @@ static char_u *luaV_toline (lua_State *L, int pos) {
/* pops a string s from the top of the stack and calls mf(t) for pieces t of
* s separated by newlines */
-static void luaV_msgfunc (lua_State *L, msgfunc_T mf) {
+ static void
+luaV_msgfunc(lua_State *L, msgfunc_T mf)
+{
luaL_Buffer b;
size_t l;
const char *p, *s = lua_tolstring(L, -1, &l);
@@ -402,11 +446,13 @@ static void luaV_msgfunc (lua_State *L, msgfunc_T mf) {
luaL_pushresult(&b);
/* break string */
p = s = lua_tolstring(L, -1, &l);
- while (l--) {
- if (*p++ == '\0') { /* break? */
- mf((char_u *) s);
- s = p;
- }
+ while (l--)
+ {
+ if (*p++ == '\0') /* break? */
+ {
+ mf((char_u *) s);
+ s = p;
+ }
}
mf((char_u *) s);
lua_pop(L, 2); /* original and modified strings */
@@ -415,7 +461,9 @@ static void luaV_msgfunc (lua_State *L, msgfunc_T mf) {
/* ======= Buffer type ======= */
-static luaV_Buffer *luaV_newbuffer (lua_State *L, buf_T *buf) {
+ static luaV_Buffer *
+luaV_newbuffer(lua_State *L, buf_T *buf)
+{
luaV_Buffer *b = (luaV_Buffer *) lua_newuserdata(L, sizeof(luaV_Buffer));
*b = buf;
lua_pushlightuserdata(L, (void *) buf);
@@ -431,126 +479,155 @@ static luaV_Buffer *luaV_newbuffer (lua_State *L, buf_T *buf) {
return b;
}
-static luaV_Buffer *luaV_pushbuffer (lua_State *L, buf_T *buf) {
+ static luaV_Buffer *
+luaV_pushbuffer (lua_State *L, buf_T *buf)
+{
luaV_Buffer *b = NULL;
if (buf == NULL)
- lua_pushnil(L);
+ lua_pushnil(L);
else {
- lua_pushlightuserdata(L, (void *) buf);
- lua_rawget(L, LUA_ENVIRONINDEX);
- if (lua_isnil(L, -1)) { /* not interned? */
- lua_pop(L, 1);
- b = luaV_newbuffer(L, buf);
- }
- else b = (luaV_Buffer *) lua_touserdata(L, -1);
+ lua_pushlightuserdata(L, (void *) buf);
+ lua_rawget(L, LUA_ENVIRONINDEX);
+ if (lua_isnil(L, -1)) /* not interned? */
+ {
+ lua_pop(L, 1);
+ b = luaV_newbuffer(L, buf);
+ }
+ else
+ b = (luaV_Buffer *) lua_touserdata(L, -1);
}
return b;
}
/* Buffer metamethods */
-static int luaV_buffer_tostring (lua_State *L) {
+ static int
+luaV_buffer_tostring(lua_State *L)
+{
lua_pushfstring(L, "%s: %p", LUAVIM_BUFFER, lua_touserdata(L, 1));
return 1;
}
-static int luaV_buffer_len (lua_State *L) {
+ static int
+luaV_buffer_len(lua_State *L)
+{
luaV_Buffer *b = lua_touserdata(L, 1);
lua_pushinteger(L, (*b)->b_ml.ml_line_count);
return 1;
}
-static int luaV_buffer_call (lua_State *L) {
+ static int
+luaV_buffer_call(lua_State *L)
+{
luaV_Buffer *b = (luaV_Buffer *) lua_touserdata(L, 1);
lua_settop(L, 1);
set_curbuf(*b, DOBUF_SPLIT);
return 1;
}
-static int luaV_buffer_index (lua_State *L) {
+ static int
+luaV_buffer_index(lua_State *L)
+{
luaV_Buffer *b = (luaV_Buffer *) lua_touserdata(L, 1);
linenr_T n = (linenr_T) lua_tointeger(L, 2);
if (n > 0 && n <= (*b)->b_ml.ml_line_count)
- luaV_pushline(L, *b, n);
- else if (lua_isstring(L, 2)) {
- const char *s = lua_tostring(L, 2);
- if (strncmp(s, "name", 4) == 0)
- lua_pushstring(L, (char *) (*b)->b_sfname);
- else if (strncmp(s, "fname", 5) == 0)
- lua_pushstring(L, (char *) (*b)->b_ffname);
- else if (strncmp(s, "number", 6) == 0)
- lua_pushinteger(L, (*b)->b_fnum);
- /* methods */
- else if (strncmp(s, "insert", 6) == 0
- || strncmp(s, "next", 4) == 0
- || strncmp(s, "previous", 8) == 0
- || strncmp(s, "isvalid", 7) == 0) {
- lua_getmetatable(L, 1);
- lua_getfield(L, -1, s);
- }
- else lua_pushnil(L);
+ luaV_pushline(L, *b, n);
+ else if (lua_isstring(L, 2))
+ {
+ const char *s = lua_tostring(L, 2);
+ if (strncmp(s, "name", 4) == 0)
+ lua_pushstring(L, (char *) (*b)->b_sfname);
+ else if (strncmp(s, "fname", 5) == 0)
+ lua_pushstring(L, (char *) (*b)->b_ffname);
+ else if (strncmp(s, "number", 6) == 0)
+ lua_pushinteger(L, (*b)->b_fnum);
+ /* methods */
+ else if (strncmp(s, "insert", 6) == 0
+ || strncmp(s, "next", 4) == 0
+ || strncmp(s, "previous", 8) == 0
+ || strncmp(s, "isvalid", 7) == 0)
+ {
+ lua_getmetatable(L, 1);
+ lua_getfield(L, -1, s);
+ }
+ else
+ lua_pushnil(L);
}
- else lua_pushnil(L);
+ else
+ lua_pushnil(L);
return 1;
}
-static int luaV_buffer_newindex (lua_State *L) {
+ static int
+luaV_buffer_newindex(lua_State *L)
+{
luaV_Buffer *b = (luaV_Buffer *) lua_touserdata(L, 1);
linenr_T n = (linenr_T) luaL_checkinteger(L, 2);
#ifdef HAVE_SANDBOX
luaV_checksandbox(L);
#endif
if (n < 1 || n > (*b)->b_ml.ml_line_count)
- luaL_error(L, "invalid line number");
- if (lua_isnil(L, 3)) { /* delete line */
- buf_T *buf = curbuf;
- curbuf = *b;
- if (u_savedel(n, 1L) == FAIL) {
- curbuf = buf;
- luaL_error(L, "cannot save undo information");
- }
- else if (ml_delete(n, FALSE) == FAIL) {
- curbuf = buf;
- luaL_error(L, "cannot delete line");
- }
- else {
- deleted_lines_mark(n, 1L);
- if (*b == curwin->w_buffer) { /* fix cursor in current window? */
- if (curwin->w_cursor.lnum >= n) {
- if (curwin->w_cursor.lnum > n) {
- curwin->w_cursor.lnum -= 1;
- check_cursor_col();
- }
- else check_cursor();
- changed_cline_bef_curs();
- }
- invalidate_botline();
- }
- }
- curbuf = buf;
+ luaL_error(L, "invalid line number");
+ if (lua_isnil(L, 3)) /* delete line */
+ {
+ buf_T *buf = curbuf;
+ curbuf = *b;
+ if (u_savedel(n, 1L) == FAIL)
+ {
+ curbuf = buf;
+ luaL_error(L, "cannot save undo information");
+ }
+ else if (ml_delete(n, FALSE) == FAIL)
+ {
+ curbuf = buf;
+ luaL_error(L, "cannot delete line");
+ }
+ else {
+ deleted_lines_mark(n, 1L);
+ if (*b == curwin->w_buffer) /* fix cursor in current window? */
+ {
+ if (curwin->w_cursor.lnum >= n)
+ {
+ if (curwin->w_cursor.lnum > n)
+ {
+ curwin->w_cursor.lnum -= 1;
+ check_cursor_col();
+ }
+ else check_cursor();
+ changed_cline_bef_curs();
+ }
+ invalidate_botline();
+ }
+ }
+ curbuf = buf;
}
- else if (lua_isstring(L, 3)) { /* update line */
- buf_T *buf = curbuf;
- curbuf = *b;
- if (u_savesub(n) == FAIL) {
- curbuf = buf;
- luaL_error(L, "cannot save undo information");
- }
- else if (ml_replace(n, luaV_toline(L, 3), TRUE) == FAIL) {
- curbuf = buf;
- luaL_error(L, "cannot replace line");
- }
- else changed_bytes(n, 0);
- curbuf = buf;
- if (*b == curwin->w_buffer)
- check_cursor_col();
+ else if (lua_isstring(L, 3)) /* update line */
+ {
+ buf_T *buf = curbuf;
+ curbuf = *b;
+ if (u_savesub(n) == FAIL)
+ {
+ curbuf = buf;
+ luaL_error(L, "cannot save undo information");
+ }
+ else if (ml_replace(n, luaV_toline(L, 3), TRUE) == FAIL)
+ {
+ curbuf = buf;
+ luaL_error(L, "cannot replace line");
+ }
+ else changed_bytes(n, 0);
+ curbuf = buf;
+ if (*b == curwin->w_buffer)
+ check_cursor_col();
}
else
- luaL_error(L, "wrong argument to change line");
+ luaL_error(L, "wrong argument to change line");
return 0;
}
-static int luaV_buffer_insert (lua_State *L) {
+ static int
+luaV_buffer_insert(lua_State *L)
+{
luaV_Buffer *b = luaV_checkudata(L, 1, LUAVIM_BUFFER);
linenr_T last = (*b)->b_ml.ml_line_count;
linenr_T n = (linenr_T) luaL_optinteger(L, 3, last);
@@ -565,34 +642,42 @@ static int luaV_buffer_insert (lua_State *L) {
/* insert */
buf = curbuf;
curbuf = *b;
- if (u_save(n, n + 1) == FAIL) {
- curbuf = buf;
- luaL_error(L, "cannot save undo information");
+ if (u_save(n, n + 1) == FAIL)
+ {
+ curbuf = buf;
+ luaL_error(L, "cannot save undo information");
}
- else if (ml_append(n, luaV_toline(L, 2), 0, FALSE) == FAIL) {
- curbuf = buf;
- luaL_error(L, "cannot insert line");
+ else if (ml_append(n, luaV_toline(L, 2), 0, FALSE) == FAIL)
+ {
+ curbuf = buf;
+ luaL_error(L, "cannot insert line");
}
else
- appended_lines_mark(n, 1L);
+ appended_lines_mark(n, 1L);
curbuf = buf;
update_screen(VALID);
return 0;
}
-static int luaV_buffer_next (lua_State *L) {
+ static int
+luaV_buffer_next(lua_State *L)
+{
luaV_Buffer *b = luaV_checkudata(L, 1, LUAVIM_BUFFER);
luaV_pushbuffer(L, (*b)->b_next);
return 1;
}
-static int luaV_buffer_previous (lua_State *L) {
+ static int
+luaV_buffer_previous(lua_State *L)
+{
luaV_Buffer *b = luaV_checkudata(L, 1, LUAVIM_BUFFER);
luaV_pushbuffer(L, (*b)->b_prev);
return 1;
}
-static int luaV_buffer_isvalid (lua_State *L) {
+ static int
+luaV_buffer_isvalid(lua_State *L)
+{
luaV_Buffer *b = luaV_checkudata(L, 1, LUAVIM_BUFFER);
lua_pushlightuserdata(L, (void *) (*b));
lua_rawget(L, LUA_ENVIRONINDEX);
@@ -616,7 +701,9 @@ static const luaL_Reg luaV_Buffer_mt[] = {
/* ======= Window type ======= */
-static luaV_Window *luaV_newwindow (lua_State *L, win_T *win) {
+ static luaV_Window *
+luaV_newwindow(lua_State *L, win_T *win)
+{
luaV_Window *w = (luaV_Window *) lua_newuserdata(L, sizeof(luaV_Window));
*w = win;
lua_pushlightuserdata(L, (void *) win);
@@ -632,121 +719,143 @@ static luaV_Window *luaV_newwindow (lua_State *L, win_T *win) {
return w;
}
-static luaV_Window *luaV_pushwindow (lua_State *L, win_T *win) {
+ static luaV_Window *
+luaV_pushwindow(lua_State *L, win_T *win)
+{
luaV_Window *w = NULL;
if (win == NULL)
- lua_pushnil(L);
+ lua_pushnil(L);
else {
- lua_pushlightuserdata(L, (void *) win);
- lua_rawget(L, LUA_ENVIRONINDEX);
- if (lua_isnil(L, -1)) { /* not interned? */
- lua_pop(L, 1);
- w = luaV_newwindow(L, win);
- }
- else w = (luaV_Window *) lua_touserdata(L, -1);
+ lua_pushlightuserdata(L, (void *) win);
+ lua_rawget(L, LUA_ENVIRONINDEX);
+ if (lua_isnil(L, -1)) /* not interned? */
+ {
+ lua_pop(L, 1);
+ w = luaV_newwindow(L, win);
+ }
+ else w = (luaV_Window *) lua_touserdata(L, -1);
}
return w;
}
/* Window metamethods */
-static int luaV_window_tostring (lua_State *L) {
+ static int
+luaV_window_tostring(lua_State *L)
+{
lua_pushfstring(L, "%s: %p", LUAVIM_WINDOW, lua_touserdata(L, 1));
return 1;
}
-static int luaV_window_call (lua_State *L) {
+ static int
+luaV_window_call(lua_State *L)
+{
luaV_Window *w = (luaV_Window *) lua_touserdata(L, 1);
lua_settop(L, 1);
win_goto(*w);
return 1;
}
-static int luaV_window_index (lua_State *L) {
+ static int
+luaV_window_index(lua_State *L)
+{
luaV_Window *w = (luaV_Window *) lua_touserdata(L, 1);
const char *s = luaL_checkstring(L, 2);
if (strncmp(s, "buffer", 6) == 0)
- luaV_pushbuffer(L, (*w)->w_buffer);
+ luaV_pushbuffer(L, (*w)->w_buffer);
else if (strncmp(s, "line", 4) == 0)
- lua_pushinteger(L, (*w)->w_cursor.lnum);
+ lua_pushinteger(L, (*w)->w_cursor.lnum);
else if (strncmp(s, "col", 3) == 0)
- lua_pushinteger(L, (*w)->w_cursor.col + 1);
+ lua_pushinteger(L, (*w)->w_cursor.col + 1);
#ifdef FEAT_VERTSPLIT
else if (strncmp(s, "width", 5) == 0)
- lua_pushinteger(L, W_WIDTH((*w)));
+ lua_pushinteger(L, W_WIDTH((*w)));
#endif
else if (strncmp(s, "height", 6) == 0)
- lua_pushinteger(L, (*w)->w_height);
+ lua_pushinteger(L, (*w)->w_height);
/* methods */
else if (strncmp(s, "next", 4) == 0
- || strncmp(s, "previous", 8) == 0
- || strncmp(s, "isvalid", 7) == 0) {
- lua_getmetatable(L, 1);
- lua_getfield(L, -1, s);
+ || strncmp(s, "previous", 8) == 0
+ || strncmp(s, "isvalid", 7) == 0)
+ {
+ lua_getmetatable(L, 1);
+ lua_getfield(L, -1, s);
}
else
- lua_pushnil(L);
+ lua_pushnil(L);
return 1;
}
-static int luaV_window_newindex (lua_State *L) {
+ static int
+luaV_window_newindex (lua_State *L)
+{
luaV_Window *w = (luaV_Window *) lua_touserdata(L, 1);
const char *s = luaL_checkstring(L, 2);
int v = luaL_checkinteger(L, 3);
- if (strncmp(s, "line", 4) == 0) {
+ if (strncmp(s, "line", 4) == 0)
+ {
#ifdef HAVE_SANDBOX
- luaV_checksandbox(L);
+ luaV_checksandbox(L);
#endif
- if (v < 1 || v > (*w)->w_buffer->b_ml.ml_line_count)
- luaL_error(L, "line out of range");
- (*w)->w_cursor.lnum = v;
- update_screen(VALID);
+ if (v < 1 || v > (*w)->w_buffer->b_ml.ml_line_count)
+ luaL_error(L, "line out of range");
+ (*w)->w_cursor.lnum = v;
+ update_screen(VALID);
}
- else if (strncmp(s, "col", 3) == 0) {
+ else if (strncmp(s, "col", 3) == 0)
+ {
#ifdef HAVE_SANDBOX
- luaV_checksandbox(L);
+ luaV_checksandbox(L);
#endif
- (*w)->w_cursor.col = v - 1;
- update_screen(VALID);
+ (*w)->w_cursor.col = v - 1;
+ update_screen(VALID);
}
#ifdef FEAT_VERTSPLIT
- else if (strncmp(s, "width", 5) == 0) {
- win_T *win = curwin;
+ else if (strncmp(s, "width", 5) == 0)
+ {
+ win_T *win = curwin;
#ifdef FEAT_GUI
- need_mouse_correct = TRUE;
+ need_mouse_correct = TRUE;
#endif
- curwin = *w;
- win_setwidth(v);
- curwin = win;
+ curwin = *w;
+ win_setwidth(v);
+ curwin = win;
}
#endif
- else if (strncmp(s, "height", 6) == 0) {
- win_T *win = curwin;
+ else if (strncmp(s, "height", 6) == 0)
+ {
+ win_T *win = curwin;
#ifdef FEAT_GUI
- need_mouse_correct = TRUE;
+ need_mouse_correct = TRUE;
#endif
- curwin = *w;
- win_setheight(v);
- curwin = win;
+ curwin = *w;
+ win_setheight(v);
+ curwin = win;
}
else
- luaL_error(L, "invalid window property: `%s'", s);
+ luaL_error(L, "invalid window property: `%s'", s);
return 0;
}
-static int luaV_window_next (lua_State *L) {
+ static int
+luaV_window_next(lua_State *L)
+{
luaV_Window *w = luaV_checkudata(L, 1, LUAVIM_WINDOW);
luaV_pushwindow(L, (*w)->w_next);
return 1;
}
-static int luaV_window_previous (lua_State *L) {
+ static int
+luaV_window_previous(lua_State *L)
+{
luaV_Window *w = luaV_checkudata(L, 1, LUAVIM_WINDOW);
luaV_pushwindow(L, (*w)->w_prev);
return 1;
}
-static int luaV_window_isvalid (lua_State *L) {
+ static int
+luaV_window_isvalid(lua_State *L)
+{
luaV_Window *w = luaV_checkudata(L, 1, LUAVIM_WINDOW);
lua_pushlightuserdata(L, (void *) (*w));
lua_rawget(L, LUA_ENVIRONINDEX);
@@ -768,103 +877,125 @@ static const luaL_Reg luaV_Window_mt[] = {
/* ======= Vim module ======= */
-static int luaV_print (lua_State *L) {
+ static int
+luaV_print(lua_State *L)
+{
int i, n = lua_gettop(L); /* nargs */
const char *s;
size_t l;
luaL_Buffer b;
luaL_buffinit(L, &b);
lua_getglobal(L, "tostring");
- for (i = 1; i <= n; i++) {
- lua_pushvalue(L, -1); /* tostring */
- lua_pushvalue(L, i); /* arg */
- lua_call(L, 1, 1);
- s = lua_tolstring(L, -1, &l);
- if (s == NULL)
- return luaL_error(L, "cannot convert to string");
- if (i > 1) luaL_addchar(&b, ' '); /* use space instead of tab */
- luaV_addlstring(&b, s, l, 0);
- lua_pop(L, 1);
+ for (i = 1; i <= n; i++)
+ {
+ lua_pushvalue(L, -1); /* tostring */
+ lua_pushvalue(L, i); /* arg */
+ lua_call(L, 1, 1);
+ s = lua_tolstring(L, -1, &l);
+ if (s == NULL)
+ return luaL_error(L, "cannot convert to string");
+ if (i > 1) luaL_addchar(&b, ' '); /* use space instead of tab */
+ luaV_addlstring(&b, s, l, 0);
+ lua_pop(L, 1);
}
luaL_pushresult(&b);
luaV_msg(L);
return 0;
}
-static int luaV_command (lua_State *L) {
+ static int
+luaV_command(lua_State *L)
+{
do_cmdline_cmd((char_u *) luaL_checkstring(L, 1));
update_screen(VALID);
return 0;
}
-static int luaV_eval (lua_State *L) {
+ static int
+luaV_eval(lua_State *L)
+{
typval_T *tv = eval_expr((char_u *) luaL_checkstring(L, 1), NULL);
if (tv == NULL) luaL_error(L, "invalid expression");
luaV_pushtypval(L, tv);
return 1;
}
-static int luaV_beep (lua_State *L) {
+ static int
+luaV_beep(lua_State *L)
+{
vim_beep();
return 0;
}
-static int luaV_line (lua_State *L) {
+ static int
+luaV_line(lua_State *L)
+{
luaV_pushline(L, curbuf, curwin->w_cursor.lnum);
return 1;
}
-static int luaV_buffer (lua_State *L) {
+ static int
+luaV_buffer(lua_State *L)
+{
buf_T *buf;
- if (lua_isstring(L, 1)) { /* get by number or name? */
- if (lua_isnumber(L, 1)) { /* by number? */
- int n = lua_tointeger(L, 1);
- for (buf = firstbuf; buf != NULL; buf = buf->b_next)
- if (buf->b_fnum == n) break;
- }
- else { /* by name */
- size_t l;
- const char *s = lua_tolstring(L, 1, &l);
- for (buf = firstbuf; buf != NULL; buf = buf->b_next) {
- if (buf->b_ffname == NULL || buf->b_sfname == NULL) {
- if (l == 0) break;
- }
- else if (strncmp(s, buf->b_ffname, l) == 0
- || strncmp(s, buf->b_sfname, l) == 0)
- break;
- }
- }
- if (buf == NULL) /* not found? */
- lua_pushnil(L);
- else
- luaV_pushbuffer(L, buf);
+ if (lua_isstring(L, 1)) /* get by number or name? */
+ {
+ if (lua_isnumber(L, 1)) /* by number? */
+ {
+ int n = lua_tointeger(L, 1);
+ for (buf = firstbuf; buf != NULL; buf = buf->b_next)
+ if (buf->b_fnum == n) break;
+ }
+ else { /* by name */
+ size_t l;
+ const char *s = lua_tolstring(L, 1, &l);
+ for (buf = firstbuf; buf != NULL; buf = buf->b_next)
+ {
+ if (buf->b_ffname == NULL || buf->b_sfname == NULL)
+ {
+ if (l == 0) break;
+ }
+ else if (strncmp(s, buf->b_ffname, l) == 0
+ || strncmp(s, buf->b_sfname, l) == 0)
+ break;
+ }
+ }
+ if (buf == NULL) /* not found? */
+ lua_pushnil(L);
+ else
+ luaV_pushbuffer(L, buf);
}
else {
- buf = (lua_toboolean(L, 1)) ? firstbuf : curbuf; /* first buffer? */
- luaV_pushbuffer(L, buf);
+ buf = (lua_toboolean(L, 1)) ? firstbuf : curbuf; /* first buffer? */
+ luaV_pushbuffer(L, buf);
}
return 1;
}
-static int luaV_window (lua_State *L) {
+ static int
+luaV_window(lua_State *L)
+{
win_T *win;
- if (lua_isnumber(L, 1)) { /* get by number? */
- int n = lua_tointeger(L, 1);
- for (win = firstwin; win != NULL; win = win->w_next, n--)
- if (n == 1) break;
- if (win == NULL) /* not found? */
- lua_pushnil(L);
- else
- luaV_pushwindow(L, win);
+ if (lua_isnumber(L, 1)) /* get by number? */
+ {
+ int n = lua_tointeger(L, 1);
+ for (win = firstwin; win != NULL; win = win->w_next, n--)
+ if (n == 1) break;
+ if (win == NULL) /* not found? */
+ lua_pushnil(L);
+ else
+ luaV_pushwindow(L, win);
}
else {
- win = (lua_toboolean(L, 1)) ? firstwin : curwin; /* first window? */
- luaV_pushwindow(L, win);
+ win = (lua_toboolean(L, 1)) ? firstwin : curwin; /* first window? */
+ luaV_pushwindow(L, win);
}
return 1;
}
-static int luaV_open (lua_State *L) {
+ static int
+luaV_open(lua_State *L)
+{
luaV_Buffer *b;
char_u *s = NULL;
#ifdef HAVE_SANDBOX
@@ -875,25 +1006,32 @@ static int luaV_open (lua_State *L) {
return 1;
}
-static int luaV_isbuffer (lua_State *L) {
+ static int
+luaV_isbuffer(lua_State *L)
+{
lua_pushboolean(L, luaV_toudata(L, 1, LUAVIM_BUFFER) != NULL);
return 1;
}
-static int luaV_iswindow (lua_State *L) {
+ static int
+luaV_iswindow(lua_State *L)
+{
lua_pushboolean(L, luaV_toudata(L, 1, LUAVIM_WINDOW) != NULL);
return 1;
}
/* for freeing buffer and window objects; lightuserdata as arg */
-static luaV_free (lua_State *L) {
+ static int
+luaV_free(lua_State *L)
+{
lua_pushvalue(L, 1); /* lightudata */
lua_rawget(L, LUA_ENVIRONINDEX);
- if (!lua_isnil(L, -1)) {
- lua_pushnil(L);
- lua_rawset(L, LUA_ENVIRONINDEX); /* env[udata] = nil */
- lua_pushnil(L);
- lua_rawset(L, LUA_ENVIRONINDEX); /* env[lightudata] = nil */
+ if (!lua_isnil(L, -1))
+ {
+ lua_pushnil(L);
+ lua_rawset(L, LUA_ENVIRONINDEX); /* env[udata] = nil */
+ lua_pushnil(L);
+ lua_rawset(L, LUA_ENVIRONINDEX); /* env[lightudata] = nil */
}
return 0;
}
@@ -911,7 +1049,9 @@ static const luaL_Reg luaV_module[] = {
{NULL, NULL}
};
-static int luaopen_vim (lua_State *L) {
+ static int
+luaopen_vim(lua_State *L)
+{
/* set environment */
lua_newtable(L);
lua_newtable(L);
@@ -935,35 +1075,39 @@ static int luaopen_vim (lua_State *L) {
return 0;
}
-static lua_State *luaV_newstate (void) {
+ static lua_State *
+luaV_newstate(void)
+{
lua_State *L = luaL_newstate();
const luaL_Reg luaV_core_libs[] = {
- {"", luaopen_base},
- {LUA_TABLIBNAME, luaopen_table},
- {LUA_STRLIBNAME, luaopen_string},
- {LUA_MATHLIBNAME, luaopen_math},
- {LUA_OSLIBNAME, luaopen_os}, /* restricted */
- {LUA_LOADLIBNAME, luaopen_package},
- {LUA_DBLIBNAME, luaopen_debug},
- {NULL, NULL}
+ {"", luaopen_base},
+ {LUA_TABLIBNAME, luaopen_table},
+ {LUA_STRLIBNAME, luaopen_string},
+ {LUA_MATHLIBNAME, luaopen_math},
+ {LUA_OSLIBNAME, luaopen_os}, /* restricted */
+ {LUA_LOADLIBNAME, luaopen_package},
+ {LUA_DBLIBNAME, luaopen_debug},
+ {NULL, NULL}
};
const char *os_funcs[] = {
- "date", "clock", "time", "difftime", "getenv", NULL
+ "date", "clock", "time", "difftime", "getenv", NULL
};
const luaL_Reg *reg = luaV_core_libs;
const char **s = os_funcs;
/* core libs */
- for ( ; reg->func; reg++) {
- lua_pushcfunction(L, reg->func);
- lua_pushstring(L, reg->name);
- lua_call(L, 1, 0);
+ for ( ; reg->func; reg++)
+ {
+ lua_pushcfunction(L, reg->func);
+ lua_pushstring(L, reg->name);
+ lua_call(L, 1, 0);
}
/* restricted os lib */
lua_getglobal(L, LUA_OSLIBNAME);
lua_newtable(L);
- for ( ; *s; s++) {
- lua_getfield(L, -2, *s);
- lua_setfield(L, -2, *s);
+ for ( ; *s; s++)
+ {
+ lua_getfield(L, -2, *s);
+ lua_setfield(L, -2, *s);
}
lua_setglobal(L, LUA_OSLIBNAME);
lua_pop(L, 1); /* os table */
@@ -973,7 +1117,9 @@ static lua_State *luaV_newstate (void) {
return L;
}
-static void luaV_setrange (lua_State *L, int line1, int line2) {
+ static void
+luaV_setrange(lua_State *L, int line1, int line2)
+{
lua_getglobal(L, LUAVIM_NAME);
lua_pushinteger(L, line1);
lua_setfield(L, -2, "firstline");
@@ -987,53 +1133,66 @@ static void luaV_setrange (lua_State *L, int line1, int line2) {
static lua_State *L = NULL;
-static int lua_init (void) {
- if (L == NULL) {
+ static int
+lua_init(void)
+{
+ if (L == NULL)
+ {
#ifdef DYNAMIC_LUA
- if (!lua_enabled(TRUE)) {
- EMSG(_("Lua library cannot be loaded."));
- return FAIL;
- }
+ if (!lua_enabled(TRUE))
+ {
+ EMSG(_("Lua library cannot be loaded."));
+ return FAIL;
+ }
#endif
- L = luaV_newstate();
+ L = luaV_newstate();
}
return OK;
}
-void lua_end (void) {
- if (L != NULL) {
- lua_close(L);
- L = NULL;
+ void
+lua_end(void)
+{
+ if (L != NULL)
+ {
+ lua_close(L);
+ L = NULL;
#ifdef DYNAMIC_LUA
- end_dynamic_lua();
+ end_dynamic_lua();
#endif
}
}
/* ex commands */
-void ex_lua (exarg_T *eap) {
+ void
+ex_lua(exarg_T *eap)
+{
char *script;
if (lua_init() == FAIL) return;
script = (char *) script_get(eap, eap->arg);
- if (!eap->skip) {
- char *s = (script) ? script : (char *) eap->arg;
- luaV_setrange(L, eap->line1, eap->line2);
- if (luaL_loadbuffer(L, s, strlen(s), LUAVIM_CHUNKNAME)
- || lua_pcall(L, 0, 0, 0))
- luaV_emsg(L);
+ if (!eap->skip)
+ {
+ char *s = (script) ? script : (char *) eap->arg;
+ luaV_setrange(L, eap->line1, eap->line2);
+ if (luaL_loadbuffer(L, s, strlen(s), LUAVIM_CHUNKNAME)
+ || lua_pcall(L, 0, 0, 0))
+ luaV_emsg(L);
}
if (script != NULL) vim_free(script);
}
-void ex_luado (exarg_T *eap) {
+ void
+ex_luado(exarg_T *eap)
+{
linenr_T l;
const char *s = (const char *) eap->arg;
luaL_Buffer b;
size_t len;
if (lua_init() == FAIL) return;
- if (u_save(eap->line1 - 1, eap->line2 + 1) == FAIL) {
- EMSG(_("cannot save undo information"));
- return;
+ if (u_save(eap->line1 - 1, eap->line2 + 1) == FAIL)
+ {
+ EMSG(_("cannot save undo information"));
+ return;
}
luaV_setrange(L, eap->line1, eap->line2);
luaL_buffinit(L, &b);
@@ -1042,46 +1201,56 @@ void ex_luado (exarg_T *eap) {
luaL_addlstring(&b, " end", 4); /* footer */
luaL_pushresult(&b);
s = lua_tolstring(L, -1, &len);
- if (luaL_loadbuffer(L, s, len, LUAVIM_CHUNKNAME)) {
- luaV_emsg(L);
- lua_pop(L, 1); /* function body */
- return;
+ if (luaL_loadbuffer(L, s, len, LUAVIM_CHUNKNAME))
+ {
+ luaV_emsg(L);
+ lua_pop(L, 1); /* function body */
+ return;
}
lua_call(L, 0, 1);
lua_replace(L, -2); /* function -> body */
- for (l = eap->line1; l <= eap->line2; l++) {
- lua_pushvalue(L, -1); /* function */
- luaV_pushline(L, curbuf, l); /* current line as arg */
- if (lua_pcall(L, 1, 1, 0)) {
- luaV_emsg(L);
- break;
- }
- if (lua_isstring(L, -1)) { /* update line? */
+ for (l = eap->line1; l <= eap->line2; l++)
+ {
+ lua_pushvalue(L, -1); /* function */
+ luaV_pushline(L, curbuf, l); /* current line as arg */
+ if (lua_pcall(L, 1, 1, 0))
+ {
+ luaV_emsg(L);
+ break;
+ }
+ if (lua_isstring(L, -1)) /* update line? */
+ {
#ifdef HAVE_SANDBOX
- luaV_checksandbox(L);
+ luaV_checksandbox(L);
#endif
- ml_replace(l, luaV_toline(L, -1), TRUE);
- changed_bytes(l, 0);
- lua_pop(L, 1); /* result from luaV_toline */
- }
- lua_pop(L, 1); /* line */
+ ml_replace(l, luaV_toline(L, -1), TRUE);
+ changed_bytes(l, 0);
+ lua_pop(L, 1); /* result from luaV_toline */
+ }
+ lua_pop(L, 1); /* line */
}
lua_pop(L, 1); /* function */
check_cursor();
update_screen(NOT_VALID);
}
-void ex_luafile (exarg_T *eap) {
- if (lua_init() == FAIL) return;
- if (!eap->skip) {
- luaV_setrange(L, eap->line1, eap->line2);
- if (luaL_loadfile(L, (char *) eap->arg) || lua_pcall(L, 0, 0, 0))
- luaV_emsg(L);
+ void
+ex_luafile(exarg_T *eap)
+{
+ if (lua_init() == FAIL)
+ return;
+ if (!eap->skip)
+ {
+ luaV_setrange(L, eap->line1, eap->line2);
+ if (luaL_loadfile(L, (char *) eap->arg) || lua_pcall(L, 0, 0, 0))
+ luaV_emsg(L);
}
}
/* buffer */
-void lua_buffer_free (buf_T *buf) {
+ void
+lua_buffer_free(buf_T *buf)
+{
if (lua_init() == FAIL) return;
luaV_getfield(L, LUAVIM_FREE);
lua_pushlightuserdata(L, (void *) buf);
@@ -1089,7 +1258,9 @@ void lua_buffer_free (buf_T *buf) {
}
/* window */
-void lua_window_free (win_T *win) {
+ void
+lua_window_free(win_T *win)
+{
if (lua_init() == FAIL) return;
luaV_getfield(L, LUAVIM_FREE);
lua_pushlightuserdata(L, (void *) win);
diff --git a/src/if_mzsch.h b/src/if_mzsch.h
index 45888919b..65c5de7ca 100644
--- a/src/if_mzsch.h
+++ b/src/if_mzsch.h
@@ -49,19 +49,19 @@
/* Precise GC macros */
#ifndef MZ_GC_DECL_REG
-# define MZ_GC_DECL_REG(size) /* empty */
+# define MZ_GC_DECL_REG(size) /* empty */
#endif
#ifndef MZ_GC_VAR_IN_REG
-# define MZ_GC_VAR_IN_REG(x, v) /* empty */
+# define MZ_GC_VAR_IN_REG(x, v) /* empty */
#endif
#ifndef MZ_GC_ARRAY_VAR_IN_REG
# define MZ_GC_ARRAY_VAR_IN_REG(x, v, l) /* empty */
#endif
#ifndef MZ_GC_REG
-# define MZ_GC_REG() /* empty */
+# define MZ_GC_REG() /* empty */
#endif
#ifndef MZ_GC_UNREG
-# define MZ_GC_UNREG() /* empty */
+# define MZ_GC_UNREG() /* empty */
#endif
#ifdef MZSCHEME_FORCE_GC
diff --git a/src/if_python3.c b/src/if_python3.c
index 1d755e0a9..59ef88f0a 100644
--- a/src/if_python3.c
+++ b/src/if_python3.c
@@ -151,7 +151,7 @@ static void init_structs(void);
#undef PyObject_NEW
#define PyObject_NEW(type, typeobj) \
( (type *) PyObject_Init( \
- (PyObject *) _PyObject_DebugMalloc( _PyObject_SIZE(typeobj) ), (typeobj)) )
+ (PyObject *) _PyObject_DebugMalloc( _PyObject_SIZE(typeobj) ), (typeobj)) )
#endif
/*
* Pointers for dynamic link
@@ -165,7 +165,7 @@ static int (*py3_PySys_SetObject)(char *, PyObject *);
static PyObject* (*py3_PyList_Append)(PyObject *, PyObject *);
static Py_ssize_t (*py3_PyList_Size)(PyObject *);
static int (*py3_PySlice_GetIndicesEx)(PySliceObject *r, Py_ssize_t length,
- Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step, Py_ssize_t *slicelength);
+ Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step, Py_ssize_t *slicelength);
static PyObject* (*py3_PyErr_NoMemory)(void);
static void (*py3_Py_Finalize)(void);
static void (*py3_PyErr_SetString)(PyObject *, const char *);
@@ -306,8 +306,8 @@ static void end_dynamic_python3(void)
{
if (hinstPy3)
{
- close_dll(hinstPy3);
- hinstPy3 = 0;
+ close_dll(hinstPy3);
+ hinstPy3 = 0;
}
}
@@ -321,27 +321,27 @@ static int py3_runtime_link_init(char *libname, int verbose)
int i;
if (hinstPy3)
- return OK;
+ return OK;
hinstPy3 = load_dll(libname);
if (!hinstPy3)
{
- if (verbose)
- EMSG2(_(e_loadlib), libname);
- return FAIL;
+ if (verbose)
+ EMSG2(_(e_loadlib), libname);
+ return FAIL;
}
for (i = 0; py3_funcname_table[i].ptr; ++i)
{
- if ((*py3_funcname_table[i].ptr = symbol_from_dll(hinstPy3,
- py3_funcname_table[i].name)) == NULL)
- {
- close_dll(hinstPy3);
- hinstPy3 = 0;
- if (verbose)
- EMSG2(_(e_loadfunc), py3_funcname_table[i].name);
- return FAIL;
- }
+ if ((*py3_funcname_table[i].ptr = symbol_from_dll(hinstPy3,
+ py3_funcname_table[i].name)) == NULL)
+ {
+ close_dll(hinstPy3);
+ hinstPy3 = 0;
+ if (verbose)
+ EMSG2(_(e_loadfunc), py3_funcname_table[i].name);
+ return FAIL;
+ }
}
/* load unicode functions separately as only the ucs2 or the ucs4 functions
@@ -351,26 +351,26 @@ static int py3_runtime_link_init(char *libname, int verbose)
ucs_from_string = symbol_from_dll(hinstPy3, "PyUnicodeUCS2_FromString");
ucs_from_string_and_size = symbol_from_dll(hinstPy3,
- "PyUnicodeUCS2_FromStringAndSize");
+ "PyUnicodeUCS2_FromStringAndSize");
if (!ucs_from_string || !ucs_from_string_and_size)
{
- ucs_from_string = symbol_from_dll(hinstPy3,
- "PyUnicodeUCS4_FromString");
- ucs_from_string_and_size = symbol_from_dll(hinstPy3,
- "PyUnicodeUCS4_FromStringAndSize");
+ ucs_from_string = symbol_from_dll(hinstPy3,
+ "PyUnicodeUCS4_FromString");
+ ucs_from_string_and_size = symbol_from_dll(hinstPy3,
+ "PyUnicodeUCS4_FromStringAndSize");
}
if (ucs_from_string && ucs_from_string_and_size)
{
- py3_PyUnicode_FromString = ucs_from_string;
- py3_PyUnicode_FromStringAndSize = ucs_from_string_and_size;
+ py3_PyUnicode_FromString = ucs_from_string;
+ py3_PyUnicode_FromStringAndSize = ucs_from_string_and_size;
}
else
{
- close_dll(hinstPy3);
- hinstPy3 = 0;
- if (verbose)
- EMSG2(_(e_loadfunc), "PyUnicode_UCSX_*");
- return FAIL;
+ close_dll(hinstPy3);
+ hinstPy3 = 0;
+ if (verbose)
+ EMSG2(_(e_loadfunc), "PyUnicode_UCSX_*");
+ return FAIL;
}
return OK;
@@ -483,7 +483,7 @@ void python3_end()
/* If a crash occurs while doing this, don't try again. */
if (recurse != 0)
- return;
+ return;
++recurse;
@@ -495,8 +495,8 @@ void python3_end()
// acquire lock before finalizing
pygilstate = PyGILState_Ensure();
- PythonIO_Fini();
- Py_Finalize();
+ PythonIO_Fini();
+ Py_Finalize();
}
#ifdef DYNAMIC_PYTHON3
@@ -511,38 +511,38 @@ static int Python3_Init(void)
if (!py3initialised)
{
#ifdef DYNAMIC_PYTHON3
- if (!python3_enabled(TRUE))
- {
- EMSG(_("E263: Sorry, this command is disabled, the Python library could not be loaded."));
- goto fail;
- }
+ if (!python3_enabled(TRUE))
+ {
+ EMSG(_("E263: Sorry, this command is disabled, the Python library could not be loaded."));
+ goto fail;
+ }
#endif
init_structs();
- /* initialise threads */
- PyEval_InitThreads();
+ /* initialise threads */
+ PyEval_InitThreads();
#if !defined(MACOS) || defined(MACOS_X_UNIX)
- Py_Initialize();
+ Py_Initialize();
#else
- PyMac_Initialize();
+ PyMac_Initialize();
#endif
#ifdef DYNAMIC_PYTHON3
- get_py3_exceptions();
+ get_py3_exceptions();
#endif
- if (PythonIO_Init())
- goto fail;
+ if (PythonIO_Init())
+ goto fail;
- PyImport_AppendInittab("vim", Py3Init_vim);
+ PyImport_AppendInittab("vim", Py3Init_vim);
- /* Remove the element from sys.path that was added because of our
- * argv[0] value in Py3Init_vim(). Previously we used an empty
- * string, but dependinding on the OS we then get an empty entry or
- * the current directory in sys.path. */
- PyRun_SimpleString("import sys; sys.path = list(filter(lambda x: x != '/must>not&exist', sys.path))");
+ /* Remove the element from sys.path that was added because of our
+ * argv[0] value in Py3Init_vim(). Previously we used an empty
+ * string, but dependinding on the OS we then get an empty entry or
+ * the current directory in sys.path. */
+ PyRun_SimpleString("import sys; sys.path = list(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()
@@ -552,7 +552,7 @@ static int Python3_Init(void)
// without deleting thread state
PyGILState_Release(pygilstate);
- py3initialised = 1;
+ py3initialised = 1;
}
return 0;
@@ -573,35 +573,35 @@ fail:
static void DoPy3Command(exarg_T *eap, const char *cmd)
{
#if defined(MACOS) && !defined(MACOS_X_UNIX)
- GrafPtr oldPort;
+ GrafPtr oldPort;
#endif
#if defined(HAVE_LOCALE_H) || defined(X_LOCALE)
- char *saved_locale;
+ char *saved_locale;
#endif
#if defined(MACOS) && !defined(MACOS_X_UNIX)
GetPort(&oldPort);
/* Check if the Python library is available */
if ((Ptr)PyMac_Initialize == (Ptr)kUnresolvedCFragSymbolAddress)
- goto theend;
+ goto theend;
#endif
if (Python3_Init())
- goto theend;
+ goto theend;
RangeStart = eap->line1;
RangeEnd = eap->line2;
- 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". */
saved_locale = setlocale(LC_NUMERIC, NULL);
if (saved_locale == NULL || STRCMP(saved_locale, "C") == 0)
- saved_locale = NULL;
+ saved_locale = NULL;
else
{
- /* Need to make a copy, value may change when setting new locale. */
- saved_locale = (char *)vim_strsave((char_u *)saved_locale);
- (void)setlocale(LC_NUMERIC, "C");
+ /* Need to make a copy, value may change when setting new locale. */
+ saved_locale = (char *)vim_strsave((char_u *)saved_locale);
+ (void)setlocale(LC_NUMERIC, "C");
}
#endif
@@ -614,19 +614,19 @@ static void DoPy3Command(exarg_T *eap, const char *cmd)
#if defined(HAVE_LOCALE_H) || defined(X_LOCALE)
if (saved_locale != NULL)
{
- (void)setlocale(LC_NUMERIC, saved_locale);
- vim_free(saved_locale);
+ (void)setlocale(LC_NUMERIC, saved_locale);
+ vim_free(saved_locale);
}
#endif
- Python_Lock_Vim(); /* enter vim */
+ Python_Lock_Vim(); /* enter vim */
PythonIO_Flush();
#if defined(MACOS) && !defined(MACOS_X_UNIX)
SetPort(oldPort);
#endif
theend:
- return; /* keeps lint happy */
+ return; /* keeps lint happy */
}
/*
@@ -639,10 +639,10 @@ void ex_python3(exarg_T *eap)
script = script_get(eap, eap->arg);
if (!eap->skip)
{
- if (script == NULL)
- DoPy3Command(eap, (char *)eap->arg);
- else
- DoPy3Command(eap, (char *)script);
+ if (script == NULL)
+ DoPy3Command(eap, (char *)eap->arg);
+ else
+ DoPy3Command(eap, (char *)script);
}
vim_free(script);
}
@@ -676,26 +676,26 @@ ex_py3file(exarg_T *eap)
for (i=0; i<2; ++i)
{
- file = (char *)eap->arg;
- while (*file && p < buffer + (BUFFER_SIZE - 3))
- {
- if (*file == '\\' || *file == '\'')
- *p++ = '\\';
- *p++ = *file++;
- }
- /* If we didn't finish the file name, we hit a buffer overflow */
- if (*file != '\0')
- return;
- if (i==0)
- {
- strcpy(p,"').read(),'");
- p += 11;
- }
- else
- {
- strcpy(p,"','exec'))");
- p += 10;
- }
+ file = (char *)eap->arg;
+ while (*file && p < buffer + (BUFFER_SIZE - 3))
+ {
+ if (*file == '\\' || *file == '\'')
+ *p++ = '\\';
+ *p++ = *file++;
+ }
+ /* If we didn't finish the file name, we hit a buffer overflow */
+ if (*file != '\0')
+ return;
+ if (i==0)
+ {
+ strcpy(p,"').read(),'");
+ p += 11;
+ }
+ else
+ {
+ strcpy(p,"','exec'))");
+ p += 10;
+ }
}
@@ -730,10 +730,10 @@ typedef struct
} OutputObject;
static struct PyMethodDef OutputMethods[] = {
- /* name, function, calling, documentation */
- {"write", OutputWrite, 1, "" },
- {"writelines", OutputWritelines, 1, "" },
- { NULL, NULL, 0, NULL }
+ /* name, function, calling, documentation */
+ {"write", OutputWrite, 1, "" },
+ {"writelines", OutputWritelines, 1, "" },
+ { NULL, NULL, 0, NULL }
};
static PyTypeObject OutputType;
@@ -744,10 +744,10 @@ static PyObject * OutputGetattro(PyObject *self, PyObject *nameobj)
{
char *name = "";
if (PyUnicode_Check(nameobj))
- name = _PyUnicode_AsString(nameobj);
+ name = _PyUnicode_AsString(nameobj);
if (strcmp(name, "softspace") == 0)
- return PyLong_FromLong(((OutputObject *)(self))->softspace);
+ return PyLong_FromLong(((OutputObject *)(self))->softspace);
return PyObject_GenericGetAttr(self, nameobj);
}
@@ -756,22 +756,22 @@ static int OutputSetattro(PyObject *self, PyObject *nameobj, PyObject *val)
{
char *name = "";
if (PyUnicode_Check(nameobj))
- name = _PyUnicode_AsString(nameobj);
+ name = _PyUnicode_AsString(nameobj);
if (val == NULL) {
- PyErr_SetString(PyExc_AttributeError, _("can't delete OutputObject attributes"));
- return -1;
+ PyErr_SetString(PyExc_AttributeError, _("can't delete OutputObject attributes"));
+ return -1;
}
if (strcmp(name, "softspace") == 0)
{
- if (!PyLong_Check(val)) {
- PyErr_SetString(PyExc_TypeError, _("softspace must be an integer"));
- return -1;
- }
+ if (!PyLong_Check(val)) {
+ PyErr_SetString(PyExc_TypeError, _("softspace must be an integer"));
+ return -1;
+ }
- ((OutputObject *)(self))->softspace = PyLong_AsLong(val);
- return 0;
+ ((OutputObject *)(self))->softspace = PyLong_AsLong(val);
+ return 0;
}
PyErr_SetString(PyExc_AttributeError, _("invalid attribute"));
@@ -787,7 +787,7 @@ static PyObject * OutputWrite(PyObject *self, PyObject *args)
int error = ((OutputObject *)(self))->error;
if (!PyArg_ParseTuple(args, "s#", &str, &len))
- return NULL;
+ return NULL;
Py_BEGIN_ALLOW_THREADS
Python_Lock_Vim();
@@ -807,34 +807,34 @@ static PyObject * OutputWritelines(PyObject *self, PyObject *args)
int error = ((OutputObject *)(self))->error;
if (!PyArg_ParseTuple(args, "O", &list))
- return NULL;
+ return NULL;
Py_INCREF(list);
if (!PyList_Check(list)) {
- PyErr_SetString(PyExc_TypeError, _("writelines() requires list of strings"));
- Py_DECREF(list);
- return NULL;
+ PyErr_SetString(PyExc_TypeError, _("writelines() requires list of strings"));
+ Py_DECREF(list);
+ return NULL;
}
n = PyList_Size(list);
for (i = 0; i < n; ++i)
{
- PyObject *line = PyList_GetItem(list, i);
- char *str;
- Py_ssize_t len;
+ PyObject *line = PyList_GetItem(list, i);
+ char *str;
+ Py_ssize_t len;
- if (!PyArg_Parse(line, "s#", &str, &len)) {
- PyErr_SetString(PyExc_TypeError, _("writelines() requires list of strings"));
- Py_DECREF(list);
- return NULL;
- }
+ if (!PyArg_Parse(line, "s#", &str, &len)) {
+ PyErr_SetString(PyExc_TypeError, _("writelines() requires list of strings"));
+ Py_DECREF(list);
+ return NULL;
+ }
- Py_BEGIN_ALLOW_THREADS
- Python_Lock_Vim();
- writer((writefn)(error ? emsg : msg), (char_u *)str, len);
- Python_Release_Vim();
- Py_END_ALLOW_THREADS
+ Py_BEGIN_ALLOW_THREADS
+ Python_Lock_Vim();
+ writer((writefn)(error ? emsg : msg), (char_u *)str, len);
+ Python_Release_Vim();
+ Py_END_ALLOW_THREADS
}
Py_DECREF(list);
@@ -857,26 +857,26 @@ static void buffer_ensure(Py_ssize_t n)
char_u *new_buffer;
if (n < buffer_size)
- return;
+ return;
new_size = buffer_size;
while (new_size < n)
- new_size += 80;
+ new_size += 80;
if (new_size != buffer_size)
{
- new_buffer = alloc((unsigned)new_size);
- if (new_buffer == NULL)
- return;
+ new_buffer = alloc((unsigned)new_size);
+ if (new_buffer == NULL)
+ return;
- if (buffer)
- {
- memcpy(new_buffer, buffer, buffer_len);
- vim_free(buffer);
- }
+ if (buffer)
+ {
+ memcpy(new_buffer, buffer, buffer_len);
+ vim_free(buffer);
+ }
- buffer = new_buffer;
- buffer_size = new_size;
+ buffer = new_buffer;
+ buffer_size = new_size;
}
}
@@ -884,8 +884,8 @@ static void PythonIO_Flush(void)
{
if (old_fn && buffer_len)
{
- buffer[buffer_len] = 0;
- old_fn(buffer);
+ buffer[buffer_len] = 0;
+ old_fn(buffer);
}
buffer_len = 0;
@@ -896,23 +896,23 @@ static void writer(writefn fn, char_u *str, Py_ssize_t n)
char_u *ptr;
if (fn != old_fn && old_fn != NULL)
- PythonIO_Flush();
+ PythonIO_Flush();
old_fn = fn;
while (n > 0 && (ptr = memchr(str, '\n', n)) != NULL)
{
- Py_ssize_t len = ptr - str;
+ Py_ssize_t len = ptr - str;
- buffer_ensure(buffer_len + len + 1);
+ buffer_ensure(buffer_len + len + 1);
- memcpy(buffer + buffer_len, str, len);
- buffer_len += len;
- buffer[buffer_len] = 0;
- fn(buffer);
- str = ptr + 1;
- n -= len + 1;
- buffer_len = 0;
+ memcpy(buffer + buffer_len, str, len);
+ buffer_len += len;
+ buffer[buffer_len] = 0;
+ fn(buffer);
+ str = ptr + 1;
+ n -= len + 1;
+ buffer_len = 0;
}
/* Put the remaining text into the buffer for later printing */
@@ -946,8 +946,8 @@ static int PythonIO_Init(void)
if (PyErr_Occurred())
{
- EMSG(_("E264: Python: Error initialising I/O objects"));
- return -1;
+ EMSG(_("E264: Python: Error initialising I/O objects"));
+ return -1;
}
return 0;
@@ -1077,10 +1077,10 @@ static int CurrentSetattro(PyObject *, PyObject *, PyObject *);
*/
static struct PyMethodDef VimMethods[] = {
- /* name, function, calling, documentation */
- {"command", VimCommand, 1, "Execute a Vim ex-mode command" },
- {"eval", VimEval, 1, "Evaluate an expression using Vim evaluator" },
- { NULL, NULL, 0, NULL }
+ /* name, function, calling, documentation */
+ {"command", VimCommand, 1, "Execute a Vim ex-mode command" },
+ {"eval", VimEval, 1, "Evaluate an expression using Vim evaluator" },
+ { NULL, NULL, 0, NULL }
};
/* Vim module - Implementation
@@ -1092,7 +1092,7 @@ static PyObject * VimCommand(PyObject *self UNUSED, PyObject *args)
PyObject *result;
if (!PyArg_ParseTuple(args, "s", &cmd))
- return NULL;
+ return NULL;
PyErr_Clear();
@@ -1106,9 +1106,9 @@ static PyObject * VimCommand(PyObject *self UNUSED, PyObject *args)
Py_END_ALLOW_THREADS
if (VimErrorCheck())
- result = NULL;
+ result = NULL;
else
- result = Py_None;
+ result = Py_None;
Py_XINCREF(result);
return result;
@@ -1126,103 +1126,103 @@ static PyObject * VimToPython(typval_T *our_tv, int depth, PyObject *lookupDict)
{
PyObject *result;
PyObject *newObj;
- char ptrBuf[NUMBUFLEN];
+ char ptrBuf[NUMBUFLEN];
/* Avoid infinite recursion */
if (depth > 100)
{
- Py_INCREF(Py_None);
- result = Py_None;
- return result;
+ Py_INCREF(Py_None);
+ result = Py_None;
+ return result;
}
/* Check if we run into a recursive loop. The item must be in lookupDict
* then and we can use it again. */
if ((our_tv->v_type == VAR_LIST && our_tv->vval.v_list != NULL)
- || (our_tv->v_type == VAR_DICT && our_tv->vval.v_dict != NULL))
+ || (our_tv->v_type == VAR_DICT && our_tv->vval.v_dict != NULL))
{
- sprintf(ptrBuf, PRINTF_DECIMAL_LONG_U,
- our_tv->v_type == VAR_LIST ? (long_u)our_tv->vval.v_list
- : (long_u)our_tv->vval.v_dict);
- result = PyDict_GetItemString(lookupDict, ptrBuf);
- if (result != NULL)
- {
- Py_INCREF(result);
- return result;
- }
+ sprintf(ptrBuf, PRINTF_DECIMAL_LONG_U,
+ our_tv->v_type == VAR_LIST ? (long_u)our_tv->vval.v_list
+ : (long_u)our_tv->vval.v_dict);
+ result = PyDict_GetItemString(lookupDict, ptrBuf);
+ if (result != NULL)
+ {
+ Py_INCREF(result);
+ return result;
+ }
}
if (our_tv->v_type == VAR_STRING)
{
- result = Py_BuildValue("s", our_tv->vval.v_string);
+ result = Py_BuildValue("s", our_tv->vval.v_string);
}
else if (our_tv->v_type == VAR_NUMBER)
{
- char buf[NUMBUFLEN];
+ char buf[NUMBUFLEN];
- /* For backwards compatibility numbers are stored as strings. */
- sprintf(buf, "%ld", (long)our_tv->vval.v_number);
- result = Py_BuildValue("s", buf);
+ /* For backwards compatibility numbers are stored as strings. */
+ sprintf(buf, "%ld", (long)our_tv->vval.v_number);
+ result = Py_BuildValue("s", buf);
}
# ifdef FEAT_FLOAT
else if (our_tv->v_type == VAR_FLOAT)
{
- char buf[NUMBUFLEN];
+ char buf[NUMBUFLEN];
- sprintf(buf, "%f", our_tv->vval.v_float);
- result = Py_BuildValue("s", buf);
+ sprintf(buf, "%f", our_tv->vval.v_float);
+ result = Py_BuildValue("s", buf);
}
# endif
else if (our_tv->v_type == VAR_LIST)
{
- list_T *list = our_tv->vval.v_list;
- listitem_T *curr;
+ list_T *list = our_tv->vval.v_list;
+ listitem_T *curr;
- result = PyList_New(0);
+ result = PyList_New(0);
- if (list != NULL)
- {
- PyDict_SetItemString(lookupDict, ptrBuf, result);
+ if (list != NULL)
+ {
+ PyDict_SetItemString(lookupDict, ptrBuf, result);
- for (curr = list->lv_first; curr != NULL; curr = curr->li_next)
- {
- newObj = VimToPython(&curr->li_tv, depth + 1, lookupDict);
- PyList_Append(result, newObj);
- Py_DECREF(newObj);
- }
- }
+ for (curr = list->lv_first; curr != NULL; curr = curr->li_next)
+ {
+ newObj = VimToPython(&curr->li_tv, depth + 1, lookupDict);
+ PyList_Append(result, newObj);
+ Py_DECREF(newObj);
+ }
+ }
}
else if (our_tv->v_type == VAR_DICT)
{
- result = PyDict_New();
+ result = PyDict_New();
- if (our_tv->vval.v_dict != NULL)
- {
- hashtab_T *ht = &our_tv->vval.v_dict->dv_hashtab;
- long_u t = ht->ht_used;
- hashitem_T *hi;
- dictitem_T *di;
+ if (our_tv->vval.v_dict != NULL)
+ {
+ hashtab_T *ht = &our_tv->vval.v_dict->dv_hashtab;
+ long_u t = ht->ht_used;
+ hashitem_T *hi;
+ dictitem_T *di;
- PyDict_SetItemString(lookupDict, ptrBuf, result);
+ PyDict_SetItemString(lookupDict, ptrBuf, result);
- for (hi = ht->ht_array; t > 0; ++hi)
- {
- if (!HASHITEM_EMPTY(hi))
- {
- --t;
+ for (hi = ht->ht_array; t > 0; ++hi)
+ {
+ if (!HASHITEM_EMPTY(hi))
+ {
+ --t;
- di = dict_lookup(hi);
- newObj = VimToPython(&di->di_tv, depth + 1, lookupDict);
- PyDict_SetItemString(result, (char *)hi->hi_key, newObj);
- Py_DECREF(newObj);
- }
- }
- }
+ di = dict_lookup(hi);
+ newObj = VimToPython(&di->di_tv, depth + 1, lookupDict);
+ PyDict_SetItemString(result, (char *)hi->hi_key, newObj);
+ Py_DECREF(newObj);
+ }
+ }
+ }
}
else
{
- Py_INCREF(Py_None);
- result = Py_None;
+ Py_INCREF(Py_None);
+ result = Py_None;
}
return result;
@@ -1233,13 +1233,13 @@ static PyObject * VimToPython(typval_T *our_tv, int depth, PyObject *lookupDict)
static PyObject * VimEval(PyObject *self UNUSED, PyObject *args)
{
#ifdef FEAT_EVAL
- char *expr;
+ char *expr;
typval_T *our_tv;
PyObject *result;
PyObject *lookup_dict;
if (!PyArg_ParseTuple(args, "s", &expr))
- return NULL;
+ return NULL;
Py_BEGIN_ALLOW_THREADS
Python_Lock_Vim();
@@ -1250,8 +1250,8 @@ static PyObject * VimEval(PyObject *self UNUSED, PyObject *args)
if (our_tv == NULL)
{
- PyErr_SetVim(_("invalid expression"));
- return NULL;
+ PyErr_SetVim(_("invalid expression"));
+ return NULL;
}
/* Convert the Vim type into a Python type. Create a dictionary that's
@@ -1282,8 +1282,8 @@ static int CheckBuffer(BufferObject *this)
{
if (this->buf == INVALID_BUFFER_VALUE)
{
- PyErr_SetVim(_("attempt to refer to deleted buffer"));
- return -1;
+ PyErr_SetVim(_("attempt to refer to deleted buffer"));
+ return -1;
}
return 0;
@@ -1292,12 +1292,12 @@ static int CheckBuffer(BufferObject *this)
static PyObject * RBItem(BufferObject *self, Py_ssize_t n, Py_ssize_t start, Py_ssize_t end)
{
if (CheckBuffer(self))
- return NULL;
+ return NULL;
if (n < 0 || n > end - start)
{
- PyErr_SetString(PyExc_IndexError, _("line number out of range"));
- return NULL;
+ PyErr_SetString(PyExc_IndexError, _("line number out of range"));
+ return NULL;
}
return GetBufferLine(self->buf, n+start);
@@ -1308,19 +1308,19 @@ static Py_ssize_t RBAsItem(BufferObject *self, Py_ssize_t n, PyObject *val, Py_s
Py_ssize_t len_change;
if (CheckBuffer(self))
- return -1;
+ return -1;
if (n < 0 || n > end - start)
{
- PyErr_SetString(PyExc_IndexError, _("line number out of range"));
- return -1;
+ PyErr_SetString(PyExc_IndexError, _("line number out of range"));
+ return -1;
}
if (SetBufferLine(self->buf, n+start, val, &len_change) == FAIL)
- return -1;
+ return -1;
if (new_end)
- *new_end = end + len_change;
+ *new_end = end + len_change;
return 0;
}
@@ -1330,20 +1330,20 @@ static PyObject * RBSlice(BufferObject *self, Py_ssize_t lo, Py_ssize_t hi, Py_s
Py_ssize_t size;
if (CheckBuffer(self))
- return NULL;
+ return NULL;
size = end - start + 1;
if (lo < 0)
- lo = 0;
+ lo = 0;
else if (lo > size)
- lo = size;
+ lo = size;
if (hi < 0)
- hi = 0;
+ hi = 0;
if (hi < lo)
- hi = lo;
+ hi = lo;
else if (hi > size)
- hi = size;
+ hi = size;
return GetBufferLineList(self->buf, lo+start, hi+start);
}
@@ -1356,24 +1356,24 @@ static PyObject * RBAppend(BufferObject *self, PyObject *args, Py_ssize_t start,
Py_ssize_t n;
if (CheckBuffer(self))
- return NULL;
+ return NULL;
max = n = end - start + 1;
if (!PyArg_ParseTuple(args, "O|n" , &lines, &n))
- return NULL;
+ return NULL;
if (n < 0 || n > max)
{
- PyErr_SetString(PyExc_ValueError, _("line number out of range"));
- return NULL;
+ PyErr_SetString(PyExc_ValueError, _("line number out of range"));
+ return NULL;
}
if (InsertBufferLines(self->buf, n + start - 1, lines, &len_change) == FAIL)
- return NULL;
+ return NULL;
if (new_end)
- *new_end = end + len_change;
+ *new_end = end + len_change;
Py_INCREF(Py_None);
return Py_None;
@@ -1381,28 +1381,28 @@ static PyObject * RBAppend(BufferObject *self, PyObject *args, Py_ssize_t start,
static struct PyMethodDef BufferMethods[] = {
- /* name, function, calling, documentation */
- {"append", BufferAppend, 1, "Append data to Vim buffer" },
- {"mark", BufferMark, 1, "Return (row,col) representing position of named mark" },
- {"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 }
+ /* name, function, calling, documentation */
+ {"append", BufferAppend, 1, "Append data to Vim buffer" },
+ {"mark", BufferMark, 1, "Return (row,col) representing position of named mark" },
+ {"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 }
};
static PySequenceMethods BufferAsSeq = {
- (lenfunc) BufferLength, /* sq_length, len(x) */
- (binaryfunc) 0, /* sq_concat, x+y */
- (ssizeargfunc) 0, /* sq_repeat, x*n */
- (ssizeargfunc) BufferItem, /* sq_item, x[i] */
- 0, /* was_sq_slice, x[i:j] */
- (ssizeobjargproc) BufferAsItem, /* sq_ass_item, x[i]=v */
- 0, /* sq_ass_slice, x[i:j]=v */
+ (lenfunc) BufferLength, /* sq_length, len(x) */
+ (binaryfunc) 0, /* sq_concat, x+y */
+ (ssizeargfunc) 0, /* sq_repeat, x*n */
+ (ssizeargfunc) BufferItem, /* sq_item, x[i] */
+ 0, /* was_sq_slice, x[i:j] */
+ (ssizeobjargproc) BufferAsItem, /* sq_ass_item, x[i]=v */
+ 0, /* sq_ass_slice, x[i:j]=v */
0, /* sq_contains */
0, /* sq_inplace_concat */
0, /* sq_inplace_repeat */
};
PyMappingMethods BufferAsMapping = {
- /* mp_length */ (lenfunc)BufferLength,
+ /* mp_length */ (lenfunc)BufferLength,
/* mp_subscript */ (binaryfunc)BufferSubscript,
/* mp_ass_subscript */ (objobjargproc)0,
};
@@ -1433,16 +1433,16 @@ static PyObject * BufferNew(buf_T *buf)
if (buf->b_python3_ref != NULL)
{
- self = buf->b_python3_ref;
- Py_INCREF(self);
+ self = buf->b_python3_ref;
+ Py_INCREF(self);
}
else
{
- self = PyObject_NEW(BufferObject, &BufferType);
- buf->b_python3_ref = self;
- if (self == NULL)
- return NULL;
- self->buf = buf;
+ self = PyObject_NEW(BufferObject, &BufferType);
+ buf->b_python3_ref = self;
+ if (self == NULL)
+ return NULL;
+ self->buf = buf;
}
return (PyObject *)(self);
@@ -1453,7 +1453,7 @@ static void BufferDestructor(PyObject *self)
BufferObject *this = (BufferObject *)(self);
if (this->buf && this->buf != INVALID_BUFFER_VALUE)
- this->buf->b_python3_ref = NULL;
+ this->buf->b_python3_ref = NULL;
}
static PyObject * BufferGetattro(PyObject *self, PyObject*nameobj)
@@ -1462,19 +1462,19 @@ static PyObject * BufferGetattro(PyObject *self, PyObject*nameobj)
char *name = "";
if (PyUnicode_Check(nameobj))
- name = _PyUnicode_AsString(nameobj);
+ name = _PyUnicode_AsString(nameobj);
if (CheckBuffer(this))
- return NULL;
+ return NULL;
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)
- return Py_BuildValue("n", this->buf->b_fnum);
+ return Py_BuildValue("n", this->buf->b_fnum);
else if (strcmp(name,"__members__") == 0)
- return Py_BuildValue("[ss]", "name", "number");
+ return Py_BuildValue("[ss]", "name", "number");
else
- return PyObject_GenericGetAttr(self, nameobj);
+ return PyObject_GenericGetAttr(self, nameobj);
}
static PyObject * BufferRepr(PyObject *self)
@@ -1484,24 +1484,24 @@ static PyObject * BufferRepr(PyObject *self)
if (this->buf == INVALID_BUFFER_VALUE)
{
- vim_snprintf(repr, 100, _("<buffer object (deleted) at %p>"), (self));
- return PyUnicode_FromString(repr);
+ vim_snprintf(repr, 100, _("<buffer object (deleted) at %p>"), (self));
+ return PyUnicode_FromString(repr);
}
else
{
- char *name = (char *)this->buf->b_fname;
- Py_ssize_t len;
+ char *name = (char *)this->buf->b_fname;
+ Py_ssize_t len;
- if (name == NULL)
- name = "";
- len = strlen(name);
+ if (name == NULL)
+ name = "";
+ len = strlen(name);
- if (len > 35)
- name = name + (35 - len);
+ if (len > 35)
+ name = name + (35 - len);
- vim_snprintf(repr, 100, "<buffer %s%s>", len > 35 ? "..." : "", name);
+ vim_snprintf(repr, 100, "<buffer %s%s>", len > 35 ? "..." : "", name);
- return PyUnicode_FromString(repr);
+ return PyUnicode_FromString(repr);
}
}
@@ -1510,7 +1510,7 @@ static PyObject * BufferRepr(PyObject *self)
static Py_ssize_t BufferLength(PyObject *self)
{
if (CheckBuffer((BufferObject *)(self)))
- return -1;
+ return -1;
return (Py_ssize_t)(((BufferObject *)(self))->buf->b_ml.ml_line_count);
}
@@ -1518,63 +1518,63 @@ static Py_ssize_t BufferLength(PyObject *self)
static PyObject * BufferItem(PyObject *self, Py_ssize_t n)
{
return RBItem((BufferObject *)(self), n, 1,
- (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count);
+ (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count);
}
static Py_ssize_t BufferAsItem(PyObject *self, Py_ssize_t n, PyObject *val)
{
return RBAsItem((BufferObject *)(self), n, val, 1,
- (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count,
- NULL);
+ (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count,
+ NULL);
}
static PyObject * BufferSlice(PyObject *self, Py_ssize_t lo, Py_ssize_t hi)
{
return RBSlice((BufferObject *)(self), lo, hi, 1,
- (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count);
+ (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count);
}
static PyObject* BufferSubscript(PyObject *self, PyObject* idx)
{
if (PyLong_Check(idx)) {
- long _idx = PyLong_AsLong(idx);
- return BufferItem(self,_idx);
+ long _idx = PyLong_AsLong(idx);
+ return BufferItem(self,_idx);
} else if (PySlice_Check(idx)) {
- Py_ssize_t start, stop, step, slicelen;
-
- if (PySlice_GetIndicesEx((PySliceObject *)idx,
- (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count+1,
- &start, &stop,
- &step, &slicelen) < 0) {
- return NULL;
- }
- return BufferSlice(self,start,stop+1);
+ Py_ssize_t start, stop, step, slicelen;
+
+ if (PySlice_GetIndicesEx((PySliceObject *)idx,
+ (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count+1,
+ &start, &stop,
+ &step, &slicelen) < 0) {
+ return NULL;
+ }
+ return BufferSlice(self,start,stop+1);
} else {
- PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
- return NULL;
+ PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
+ return NULL;
}
}
static PyObject * BufferAppend(PyObject *self, PyObject *args)
{
return RBAppend((BufferObject *)(self), args, 1,
- (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count,
- NULL);
+ (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count,
+ NULL);
}
static PyObject * BufferMark(PyObject *self, PyObject *args)
{
pos_T *posp;
- char *pmark;//test
- char mark;
+ char *pmark;//test
+ char mark;
buf_T *curbuf_save;
if (CheckBuffer((BufferObject *)(self)))
- return NULL;
+ return NULL;
if (!PyArg_ParseTuple(args, "s", &pmark))//test: "c"->"s"
- return NULL;
+ return NULL;
mark = *pmark;//test
curbuf_save = curbuf;
@@ -1584,19 +1584,19 @@ static PyObject * BufferMark(PyObject *self, PyObject *args)
if (posp == NULL)
{
- PyErr_SetVim(_("invalid mark name"));
- return NULL;
+ PyErr_SetVim(_("invalid mark name"));
+ return NULL;
}
/* Ckeck for keyboard interrupt */
if (VimErrorCheck())
- return NULL;
+ return NULL;
if (posp->lnum <= 0)
{
- /* Or raise an error? */
- Py_INCREF(Py_None);
- return Py_None;
+ /* Or raise an error? */
+ Py_INCREF(Py_None);
+ return Py_None;
}
return Py_BuildValue("(ll)", (long)(posp->lnum), (long)(posp->col));
@@ -1608,10 +1608,10 @@ static PyObject * BufferRange(PyObject *self, PyObject *args)
Py_ssize_t end;
if (CheckBuffer((BufferObject *)(self)))
- return NULL;
+ return NULL;
if (!PyArg_ParseTuple(args, "nn", &start, &end))
- return NULL;
+ return NULL;
return RangeNew(((BufferObject *)(self))->buf, start, end);
}
@@ -1620,26 +1620,26 @@ static PyObject * BufferRange(PyObject *self, PyObject *args)
*/
static struct PyMethodDef RangeMethods[] = {
- /* name, function, calling, documentation */
- {"append", RangeAppend, 1, "Append data to the Vim range" },
- { NULL, NULL, 0, NULL }
+ /* name, function, calling, documentation */
+ {"append", RangeAppend, 1, "Append data to the Vim range" },
+ { NULL, NULL, 0, NULL }
};
static PySequenceMethods RangeAsSeq = {
- (lenfunc) RangeLength, /* sq_length, len(x) */
- (binaryfunc) 0, /* RangeConcat, */ /* sq_concat, x+y */
- (ssizeargfunc) 0, /* RangeRepeat, */ /* sq_repeat, x*n */
- (ssizeargfunc) RangeItem, /* sq_item, x[i] */
- 0, /* was_sq_slice, x[i:j] */
- (ssizeobjargproc) RangeAsItem, /* 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 */
+ (lenfunc) RangeLength, /* sq_length, len(x) */
+ (binaryfunc) 0, /* RangeConcat, sq_concat, x+y */
+ (ssizeargfunc) 0, /* RangeRepeat, sq_repeat, x*n */
+ (ssizeargfunc) RangeItem, /* sq_item, x[i] */
+ 0, /* was_sq_slice, x[i:j] */
+ (ssizeobjargproc) RangeAsItem, /* 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 */
};
PyMappingMethods RangeAsMapping = {
- /* mp_length */ (lenfunc)RangeLength,
+ /* mp_length */ (lenfunc)RangeLength,
/* mp_subscript */ (binaryfunc)RangeSubscript,
/* mp_ass_subscript */ (objobjargproc)0,
};
@@ -1655,13 +1655,13 @@ static PyObject * RangeNew(buf_T *buf, Py_ssize_t start, Py_ssize_t end)
RangeObject *self;
self = PyObject_NEW(RangeObject, &RangeType);
if (self == NULL)
- return NULL;
+ return NULL;
bufr = (BufferObject *)BufferNew(buf);
if (bufr == NULL)
{
- Py_DECREF(self);
- return NULL;
+ Py_DECREF(self);
+ return NULL;
}
Py_INCREF(bufr);
@@ -1681,14 +1681,14 @@ static PyObject * RangeGetattro(PyObject *self, PyObject *nameobj)
{
char *name = "";
if (PyUnicode_Check(nameobj))
- name = _PyUnicode_AsString(nameobj);
+ name = _PyUnicode_AsString(nameobj);
if (strcmp(name, "start") == 0)
- return Py_BuildValue("n", ((RangeObject *)(self))->start - 1);
+ return Py_BuildValue("n", ((RangeObject *)(self))->start - 1);
else if (strcmp(name, "end") == 0)
- return Py_BuildValue("n", ((RangeObject *)(self))->end - 1);
+ return Py_BuildValue("n", ((RangeObject *)(self))->end - 1);
else
- return PyObject_GenericGetAttr(self, nameobj);
+ return PyObject_GenericGetAttr(self, nameobj);
}
static PyObject * RangeRepr(PyObject *self)
@@ -1698,27 +1698,27 @@ static PyObject * RangeRepr(PyObject *self)
if (this->buf->buf == INVALID_BUFFER_VALUE)
{
- vim_snprintf(repr, 100, "<range object (for deleted buffer) at %p>",
- (self));
- return PyUnicode_FromString(repr);
+ vim_snprintf(repr, 100, "<range object (for deleted buffer) at %p>",
+ (self));
+ return PyUnicode_FromString(repr);
}
else
{
- char *name = (char *)this->buf->buf->b_fname;
- int len;
+ char *name = (char *)this->buf->buf->b_fname;
+ int len;
- if (name == NULL)
- name = "";
- len = (int)strlen(name);
+ if (name == NULL)
+ name = "";
+ len = (int)strlen(name);
- if (len > 45)
- name = name + (45 - len);
+ if (len > 45)
+ name = name + (45 - len);
- vim_snprintf(repr, 100, "<range %s%s (%d:%d)>",
- len > 45 ? "..." : "", name,
- this->start, this->end);
+ vim_snprintf(repr, 100, "<range %s%s (%d:%d)>",
+ len > 45 ? "..." : "", name,
+ this->start, this->end);
- return PyUnicode_FromString(repr);
+ return PyUnicode_FromString(repr);
}
}
@@ -1728,7 +1728,7 @@ static Py_ssize_t RangeLength(PyObject *self)
{
/* HOW DO WE SIGNAL AN ERROR FROM THIS FUNCTION? */
if (CheckBuffer(((RangeObject *)(self))->buf))
- return -1; /* ??? */
+ return -1; /* ??? */
return (((RangeObject *)(self))->end - ((RangeObject *)(self))->start + 1);
}
@@ -1736,52 +1736,52 @@ static Py_ssize_t RangeLength(PyObject *self)
static PyObject * RangeItem(PyObject *self, Py_ssize_t n)
{
return RBItem(((RangeObject *)(self))->buf, n,
- ((RangeObject *)(self))->start,
- ((RangeObject *)(self))->end);
+ ((RangeObject *)(self))->start,
+ ((RangeObject *)(self))->end);
}
static Py_ssize_t RangeAsItem(PyObject *self, Py_ssize_t n, PyObject *val)
{
return RBAsItem(((RangeObject *)(self))->buf, n, val,
- ((RangeObject *)(self))->start,
- ((RangeObject *)(self))->end,
- &((RangeObject *)(self))->end);
+ ((RangeObject *)(self))->start,
+ ((RangeObject *)(self))->end,
+ &((RangeObject *)(self))->end);
}
static PyObject * RangeSlice(PyObject *self, Py_ssize_t lo, Py_ssize_t hi)
{
return RBSlice(((RangeObject *)(self))->buf, lo, hi,
- ((RangeObject *)(self))->start,
- ((RangeObject *)(self))->end);
+ ((RangeObject *)(self))->start,
+ ((RangeObject *)(self))->end);
}
static PyObject* RangeSubscript(PyObject *self, PyObject* idx)
{
if (PyLong_Check(idx)) {
- long _idx = PyLong_AsLong(idx);
- return RangeItem(self,_idx);
+ long _idx = PyLong_AsLong(idx);
+ return RangeItem(self,_idx);
} 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 NULL;
- }
- return RangeSlice(self,start,stop+1);
+ 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 NULL;
+ }
+ return RangeSlice(self,start,stop+1);
} else {
- PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
- return NULL;
+ PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
+ return NULL;
}
}
static PyObject * RangeAppend(PyObject *self, PyObject *args)
{
return RBAppend(((RangeObject *)(self))->buf, args,
- ((RangeObject *)(self))->start,
- ((RangeObject *)(self))->end,
- &((RangeObject *)(self))->end);
+ ((RangeObject *)(self))->start,
+ ((RangeObject *)(self))->end,
+ &((RangeObject *)(self))->end);
}
/* Buffer list object - Definitions
@@ -1794,13 +1794,13 @@ typedef struct
BufListObject;
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 */
+ (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 */
@@ -1819,8 +1819,8 @@ static Py_ssize_t BufListLength(PyObject *self UNUSED)
while (b)
{
- ++n;
- b = b->b_next;
+ ++n;
+ b = b->b_next;
}
return n;
@@ -1833,8 +1833,8 @@ static PyObject * BufListItem(PyObject *self UNUSED, Py_ssize_t n)
for (b = firstbuf; b; b = b->b_next, --n)
{
- if (n == 0)
- return BufferNew(b);
+ if (n == 0)
+ return BufferNew(b);
}
PyErr_SetString(PyExc_IndexError, _("no such buffer"));
@@ -1845,59 +1845,11 @@ static PyObject * BufListItem(PyObject *self UNUSED, Py_ssize_t n)
*/
static struct PyMethodDef WindowMethods[] = {
- /* name, function, calling, documentation */
- { NULL, NULL, 0, NULL }
+ /* name, function, calling, documentation */
+ { NULL, NULL, 0, NULL }
};
-static PyTypeObject WindowType = {
- PyVarObject_HEAD_INIT(NULL, 0)
- "vim.window", /* tp_name */
- sizeof(WindowObject), /* tp_basicsize */
- 0, /* tp_itemsize */
- WindowDestructor, /* tp_dealloc */
- 0, /* tp_print */
- 0, /* tp_getattr */
- 0, /* tp_setattr */
- 0, /* tp_reserved */
- WindowRepr, /* tp_repr */
- 0, /* tp_as_number */
- 0, /* tp_as_sequence */
- 0, /* tp_as_mapping */
- 0, /* tp_hash */
- 0, /* tp_call */
- 0, /* tp_str */
- WindowGetattro, /* tp_getattro */
- WindowSetattro, /* tp_setattro */
- 0, /* tp_as_Window */
- Py_TPFLAGS_DEFAULT, /* tp_flags */
- "vim Window object", /* tp_doc */
- 0, /*tp_traverse*/
- 0, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- WindowMethods, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- call_PyType_GenericAlloc, /*tp_alloc*/
- call_PyType_GenericNew, /*tp_new*/
- call_PyObject_Free, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- 0, /*tp_version_tag*/
-};
+static PyTypeObject WindowType;
/* Window object - Implementation
*/
@@ -1920,16 +1872,16 @@ static PyObject * WindowNew(win_T *win)
if (win->w_python3_ref)
{
- self = win->w_python3_ref;
- Py_INCREF(self);
+ self = win->w_python3_ref;
+ Py_INCREF(self);
}
else
{
- self = PyObject_NEW(WindowObject, &WindowType);
- if (self == NULL)
- return NULL;
- self->win = win;
- win->w_python3_ref = self;
+ self = PyObject_NEW(WindowObject, &WindowType);
+ if (self == NULL)
+ return NULL;
+ self->win = win;
+ win->w_python3_ref = self;
}
return (PyObject *)(self);
@@ -1940,15 +1892,15 @@ static void WindowDestructor(PyObject *self)
WindowObject *this = (WindowObject *)(self);
if (this->win && this->win != INVALID_WINDOW_VALUE)
- this->win->w_python3_ref = NULL;
+ this->win->w_python3_ref = NULL;
}
static int CheckWindow(WindowObject *this)
{
if (this->win == INVALID_WINDOW_VALUE)
{
- PyErr_SetVim(_("attempt to refer to deleted window"));
- return -1;
+ PyErr_SetVim(_("attempt to refer to deleted window"));
+ return -1;
}
return 0;
@@ -1960,30 +1912,30 @@ static PyObject * WindowGetattro(PyObject *self, PyObject *nameobj)
char *name = "";
if (PyUnicode_Check(nameobj))
- name = _PyUnicode_AsString(nameobj);
+ name = _PyUnicode_AsString(nameobj);
if (CheckWindow(this))
- return NULL;
+ return NULL;
if (strcmp(name, "buffer") == 0)
- return (PyObject *)BufferNew(this->win->w_buffer);
+ return (PyObject *)BufferNew(this->win->w_buffer);
else if (strcmp(name, "cursor") == 0)
{
- pos_T *pos = &this->win->w_cursor;
+ pos_T *pos = &this->win->w_cursor;
- return Py_BuildValue("(ll)", (long)(pos->lnum), (long)(pos->col));
+ return Py_BuildValue("(ll)", (long)(pos->lnum), (long)(pos->col));
}
else if (strcmp(name, "height") == 0)
- return Py_BuildValue("l", (long)(this->win->w_height));
+ return Py_BuildValue("l", (long)(this->win->w_height));
#ifdef FEAT_VERTSPLIT
else if (strcmp(name, "width") == 0)
- return Py_BuildValue("l", (long)(W_WIDTH(this->win)));
+ return Py_BuildValue("l", (long)(W_WIDTH(this->win)));
#endif
else if (strcmp(name,"__members__") == 0)
- return Py_BuildValue("[sss]", "buffer", "cursor", "height");
+ return Py_BuildValue("[sss]", "buffer", "cursor", "height");
else
- return PyObject_GenericGetAttr(self, nameobj);
+ return PyObject_GenericGetAttr(self, nameobj);
}
static int WindowSetattro(PyObject *self, PyObject *nameobj, PyObject *val)
@@ -1992,93 +1944,93 @@ static int WindowSetattro(PyObject *self, PyObject *nameobj, PyObject *val)
char *name = "";
if (PyUnicode_Check(nameobj))
- name = _PyUnicode_AsString(nameobj);
+ name = _PyUnicode_AsString(nameobj);
if (CheckWindow(this))
- return -1;
+ return -1;
if (strcmp(name, "buffer") == 0)
{
- PyErr_SetString(PyExc_TypeError, _("readonly attribute"));
- return -1;
+ PyErr_SetString(PyExc_TypeError, _("readonly attribute"));
+ return -1;
}
else if (strcmp(name, "cursor") == 0)
{
- long lnum;
- long col;
+ long lnum;
+ long col;
- if (!PyArg_Parse(val, "(ll)", &lnum, &col))
- return -1;
+ if (!PyArg_Parse(val, "(ll)", &lnum, &col))
+ return -1;
- if (lnum <= 0 || lnum > this->win->w_buffer->b_ml.ml_line_count)
- {
- PyErr_SetVim(_("cursor position outside buffer"));
- return -1;
- }
+ if (lnum <= 0 || lnum > this->win->w_buffer->b_ml.ml_line_count)
+ {
+ PyErr_SetVim(_("cursor position outside buffer"));
+ return -1;
+ }
- /* Check for keyboard interrupts */
- if (VimErrorCheck())
- return -1;
+ /* Check for keyboard interrupts */
+ if (VimErrorCheck())
+ return -1;
- /* NO CHECK ON COLUMN - SEEMS NOT TO MATTER */
+ /* NO CHECK ON COLUMN - SEEMS NOT TO MATTER */
- this->win->w_cursor.lnum = lnum;
- this->win->w_cursor.col = col;
- update_screen(VALID);
+ this->win->w_cursor.lnum = lnum;
+ this->win->w_cursor.col = col;
+ update_screen(VALID);
- return 0;
+ return 0;
}
else if (strcmp(name, "height") == 0)
{
- int height;
- win_T *savewin;
+ int height;
+ win_T *savewin;
- if (!PyArg_Parse(val, "i", &height))
- return -1;
+ if (!PyArg_Parse(val, "i", &height))
+ return -1;
#ifdef FEAT_GUI
- need_mouse_correct = TRUE;
+ need_mouse_correct = TRUE;
#endif
- savewin = curwin;
- curwin = this->win;
- win_setheight(height);
- curwin = savewin;
+ savewin = curwin;
+ curwin = this->win;
+ win_setheight(height);
+ curwin = savewin;
- /* Check for keyboard interrupts */
- if (VimErrorCheck())
- return -1;
+ /* Check for keyboard interrupts */
+ if (VimErrorCheck())
+ return -1;
- return 0;
+ return 0;
}
#ifdef FEAT_VERTSPLIT
else if (strcmp(name, "width") == 0)
{
- int width;
- win_T *savewin;
+ int width;
+ win_T *savewin;
- if (!PyArg_Parse(val, "i", &width))
- return -1;
+ if (!PyArg_Parse(val, "i", &width))
+ return -1;
#ifdef FEAT_GUI
- need_mouse_correct = TRUE;
+ need_mouse_correct = TRUE;
#endif
- savewin = curwin;
- curwin = this->win;
- win_setwidth(width);
- curwin = savewin;
+ savewin = curwin;
+ curwin = this->win;
+ win_setwidth(width);
+ curwin = savewin;
- /* Check for keyboard interrupts */
- if (VimErrorCheck())
- return -1;
+ /* Check for keyboard interrupts */
+ if (VimErrorCheck())
+ return -1;
- return 0;
+ return 0;
}
#endif
else
{
- PyErr_SetString(PyExc_AttributeError, name);
- return -1;
+ PyErr_SetString(PyExc_AttributeError, name);
+ return -1;
}
}
@@ -2089,24 +2041,24 @@ static PyObject * WindowRepr(PyObject *self)
if (this->win == INVALID_WINDOW_VALUE)
{
- vim_snprintf(repr, 100, _("<window object (deleted) at %p>"), (self));
- return PyUnicode_FromString(repr);
+ vim_snprintf(repr, 100, _("<window object (deleted) at %p>"), (self));
+ return PyUnicode_FromString(repr);
}
else
{
- int i = 0;
- win_T *w;
+ int i = 0;
+ win_T *w;
- for (w = firstwin; w != NULL && w != this->win; w = W_NEXT(w))
- ++i;
+ for (w = firstwin; w != NULL && w != this->win; w = W_NEXT(w))
+ ++i;
- if (w == NULL)
- vim_snprintf(repr, 100, _("<window object (unknown) at %p>"),
- (self));
- else
- vim_snprintf(repr, 100, _("<window %d>"), i);
+ if (w == NULL)
+ vim_snprintf(repr, 100, _("<window object (unknown) at %p>"),
+ (self));
+ else
+ vim_snprintf(repr, 100, _("<window %d>"), i);
- return PyUnicode_FromString(repr);
+ return PyUnicode_FromString(repr);
}
}
@@ -2120,13 +2072,13 @@ typedef struct
WinListObject;
static PySequenceMethods WinListAsSeq = {
- (lenfunc) WinListLength, /* sq_length, len(x) */
- (binaryfunc) 0, /* sq_concat, x+y */
- (ssizeargfunc) 0, /* sq_repeat, x*n */
- (ssizeargfunc) WinListItem, /* sq_item, x[i] */
- 0, /* sq_slice, x[i:j] */
- (ssizeobjargproc)0, /* sq_as_item, x[i]=v */
- 0, /* sq_ass_slice, x[i:j]=v */
+ (lenfunc) WinListLength, /* sq_length, len(x) */
+ (binaryfunc) 0, /* sq_concat, x+y */
+ (ssizeargfunc) 0, /* sq_repeat, x*n */
+ (ssizeargfunc) WinListItem, /* sq_item, x[i] */
+ 0, /* 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 */
@@ -2144,8 +2096,8 @@ static Py_ssize_t WinListLength(PyObject *self UNUSED)
while (w != NULL)
{
- ++n;
- w = W_NEXT(w);
+ ++n;
+ w = W_NEXT(w);
}
return n;
@@ -2157,8 +2109,8 @@ static PyObject * WinListItem(PyObject *self UNUSED, Py_ssize_t n)
win_T *w;
for (w = firstwin; w != NULL; w = W_NEXT(w), --n)
- if (n == 0)
- return WindowNew(w);
+ if (n == 0)
+ return WindowNew(w);
PyErr_SetString(PyExc_IndexError, _("no such window"));
return NULL;
@@ -2182,22 +2134,22 @@ static PyObject * CurrentGetattro(PyObject *self UNUSED, PyObject *nameobj)
{
char *name = "";
if (PyUnicode_Check(nameobj))
- name = _PyUnicode_AsString(nameobj);
+ name = _PyUnicode_AsString(nameobj);
if (strcmp(name, "buffer") == 0)
- return (PyObject *)BufferNew(curbuf);
+ return (PyObject *)BufferNew(curbuf);
else if (strcmp(name, "window") == 0)
- return (PyObject *)WindowNew(curwin);
+ return (PyObject *)WindowNew(curwin);
else if (strcmp(name, "line") == 0)
- return GetBufferLine(curbuf, (Py_ssize_t)curwin->w_cursor.lnum);
+ return GetBufferLine(curbuf, (Py_ssize_t)curwin->w_cursor.lnum);
else if (strcmp(name, "range") == 0)
- return RangeNew(curbuf, RangeStart, RangeEnd);
+ return RangeNew(curbuf, RangeStart, RangeEnd);
else if (strcmp(name,"__members__") == 0)
- return Py_BuildValue("[ssss]", "buffer", "window", "line", "range");
+ return Py_BuildValue("[ssss]", "buffer", "window", "line", "range");
else
{
- PyErr_SetString(PyExc_AttributeError, name);
- return NULL;
+ PyErr_SetString(PyExc_AttributeError, name);
+ return NULL;
}
}
@@ -2206,19 +2158,19 @@ static int CurrentSetattro(PyObject *self UNUSED, PyObject *nameobj, PyObject *v
{
char *name = "";
if (PyUnicode_Check(nameobj))
- name = _PyUnicode_AsString(nameobj);
+ name = _PyUnicode_AsString(nameobj);
if (strcmp(name, "line") == 0)
{
- if (SetBufferLine(curbuf, (Py_ssize_t)curwin->w_cursor.lnum, value, NULL) == FAIL)
- return -1;
+ if (SetBufferLine(curbuf, (Py_ssize_t)curwin->w_cursor.lnum, value, NULL) == FAIL)
+ return -1;
- return 0;
+ return 0;
}
else
{
- PyErr_SetString(PyExc_AttributeError, name);
- return -1;
+ PyErr_SetString(PyExc_AttributeError, name);
+ return -1;
}
}
@@ -2230,9 +2182,9 @@ python3_buffer_free(buf_T *buf)
{
if (buf->b_python3_ref != NULL)
{
- BufferObject *bp = buf->b_python3_ref;
- bp->buf = INVALID_BUFFER_VALUE;
- buf->b_python3_ref = NULL;
+ BufferObject *bp = buf->b_python3_ref;
+ bp->buf = INVALID_BUFFER_VALUE;
+ buf->b_python3_ref = NULL;
}
}
@@ -2242,9 +2194,9 @@ python3_window_free(win_T *win)
{
if (win->w_python3_ref != NULL)
{
- WindowObject *wp = win->w_python3_ref;
- wp->win = INVALID_WINDOW_VALUE;
- win->w_python3_ref = NULL;
+ WindowObject *wp = win->w_python3_ref;
+ wp->win = INVALID_WINDOW_VALUE;
+ win->w_python3_ref = NULL;
}
}
#endif
@@ -2297,7 +2249,7 @@ PyMODINIT_FUNC Py3Init_vim(void)
PyModule_AddObject(mod, "windows", (PyObject *)(void *)&TheWindowList);
if (PyErr_Occurred())
- return NULL;
+ return NULL;
return mod;
}
@@ -2318,26 +2270,26 @@ static PyObject * GetBufferLineList(buf_T *buf, Py_ssize_t lo, Py_ssize_t hi)
PyObject *list = PyList_New(n);
if (list == NULL)
- return NULL;
+ return NULL;
for (i = 0; i < n; ++i)
{
- PyObject *str = LineToString((char *)ml_get_buf(buf, (linenr_T)(lo+i), FALSE));
+ PyObject *str = LineToString((char *)ml_get_buf(buf, (linenr_T)(lo+i), FALSE));
- /* Error check - was the Python string creation OK? */
- if (str == NULL)
- {
- Py_DECREF(list);
- return NULL;
- }
+ /* Error check - was the Python string creation OK? */
+ if (str == NULL)
+ {
+ Py_DECREF(list);
+ return NULL;
+ }
- /* Set the list item */
- if (PyList_SetItem(list, i, str))
- {
- Py_DECREF(str);
- Py_DECREF(list);
- return NULL;
- }
+ /* Set the list item */
+ if (PyList_SetItem(list, i, str))
+ {
+ Py_DECREF(str);
+ Py_DECREF(list);
+ return NULL;
+ }
}
/* The ownership of the Python list is passed to the caller (ie,
@@ -2366,21 +2318,21 @@ static void py_fix_cursor(linenr_T lo, linenr_T hi, linenr_T extra)
{
if (curwin->w_cursor.lnum >= lo)
{
- /* Adjust the cursor position if it's in/after the changed
- * lines. */
- if (curwin->w_cursor.lnum >= hi)
- {
- curwin->w_cursor.lnum += extra;
- check_cursor_col();
- }
- else if (extra < 0)
- {
- curwin->w_cursor.lnum = lo;
- check_cursor();
- }
- else
- check_cursor_col();
- changed_cline_bef_curs();
+ /* Adjust the cursor position if it's in/after the changed
+ * lines. */
+ if (curwin->w_cursor.lnum >= hi)
+ {
+ curwin->w_cursor.lnum += extra;
+ check_cursor_col();
+ }
+ else if (extra < 0)
+ {
+ curwin->w_cursor.lnum = lo;
+ check_cursor();
+ }
+ else
+ check_cursor_col();
+ changed_cline_bef_curs();
}
invalidate_botline();
}
@@ -2403,75 +2355,75 @@ static int SetBufferLine(buf_T *buf, Py_ssize_t n, PyObject *line, Py_ssize_t *l
*/
if (line == Py_None || line == NULL)
{
- buf_T *savebuf = curbuf;
+ buf_T *savebuf = curbuf;
- PyErr_Clear();
- curbuf = buf;
+ PyErr_Clear();
+ curbuf = buf;
- if (u_savedel((linenr_T)n, 1L) == FAIL)
- PyErr_SetVim(_("cannot save undo information"));
- else if (ml_delete((linenr_T)n, FALSE) == FAIL)
- PyErr_SetVim(_("cannot delete line"));
- else
- {
- deleted_lines_mark((linenr_T)n, 1L);
- if (buf == curwin->w_buffer)
- py_fix_cursor((linenr_T)n, (linenr_T)n + 1, (linenr_T)-1);
- }
+ if (u_savedel((linenr_T)n, 1L) == FAIL)
+ PyErr_SetVim(_("cannot save undo information"));
+ else if (ml_delete((linenr_T)n, FALSE) == FAIL)
+ PyErr_SetVim(_("cannot delete line"));
+ else
+ {
+ deleted_lines_mark((linenr_T)n, 1L);
+ if (buf == curwin->w_buffer)
+ py_fix_cursor((linenr_T)n, (linenr_T)n + 1, (linenr_T)-1);
+ }
- curbuf = savebuf;
+ curbuf = savebuf;
- if (PyErr_Occurred() || VimErrorCheck())
- return FAIL;
+ if (PyErr_Occurred() || VimErrorCheck())
+ return FAIL;
- if (len_change)
- *len_change = -1;
+ if (len_change)
+ *len_change = -1;
- return OK;
+ return OK;
}
else if (PyUnicode_Check(line))
{
- char *save = StringToLine(line);
- buf_T *savebuf = curbuf;
+ char *save = StringToLine(line);
+ buf_T *savebuf = curbuf;
- if (save == NULL)
- return FAIL;
+ if (save == NULL)
+ return FAIL;
- /* We do not need to free "save" if ml_replace() consumes it. */
- PyErr_Clear();
- curbuf = buf;
+ /* We do not need to free "save" if ml_replace() consumes it. */
+ PyErr_Clear();
+ curbuf = buf;
- if (u_savesub((linenr_T)n) == FAIL)
- {
- PyErr_SetVim(_("cannot save undo information"));
- vim_free(save);
- }
- else if (ml_replace((linenr_T)n, (char_u *)save, FALSE) == FAIL)
- {
- PyErr_SetVim(_("cannot replace line"));
- vim_free(save);
- }
- else
- changed_bytes((linenr_T)n, 0);
+ if (u_savesub((linenr_T)n) == FAIL)
+ {
+ PyErr_SetVim(_("cannot save undo information"));
+ vim_free(save);
+ }
+ else if (ml_replace((linenr_T)n, (char_u *)save, FALSE) == FAIL)
+ {
+ PyErr_SetVim(_("cannot replace line"));
+ vim_free(save);
+ }
+ else
+ changed_bytes((linenr_T)n, 0);
- curbuf = savebuf;
+ curbuf = savebuf;
- /* Check that the cursor is not beyond the end of the line now. */
- if (buf == curwin->w_buffer)
- check_cursor_col();
+ /* Check that the cursor is not beyond the end of the line now. */
+ if (buf == curwin->w_buffer)
+ check_cursor_col();
- if (PyErr_Occurred() || VimErrorCheck())
- return FAIL;
+ if (PyErr_Occurred() || VimErrorCheck())
+ return FAIL;
- if (len_change)
- *len_change = 0;
+ if (len_change)
+ *len_change = 0;
- return OK;
+ return OK;
}
else
{
- PyErr_BadArgument();
- return FAIL;
+ PyErr_BadArgument();
+ return FAIL;
}
}
@@ -2490,112 +2442,112 @@ static int InsertBufferLines(buf_T *buf, Py_ssize_t n, PyObject *lines, Py_ssize
*/
if (PyUnicode_Check(lines))
{
- char *str = StringToLine(lines);
- buf_T *savebuf;
+ char *str = StringToLine(lines);
+ buf_T *savebuf;
- if (str == NULL)
- return FAIL;
+ if (str == NULL)
+ return FAIL;
- savebuf = curbuf;
+ savebuf = curbuf;
- PyErr_Clear();
- curbuf = buf;
+ PyErr_Clear();
+ curbuf = buf;
- if (u_save((linenr_T)n, (linenr_T)(n+1)) == FAIL)
- PyErr_SetVim(_("cannot save undo information"));
- else if (ml_append((linenr_T)n, (char_u *)str, 0, FALSE) == FAIL)
- PyErr_SetVim(_("cannot insert line"));
- else
- appended_lines_mark((linenr_T)n, 1L);
+ if (u_save((linenr_T)n, (linenr_T)(n+1)) == FAIL)
+ PyErr_SetVim(_("cannot save undo information"));
+ else if (ml_append((linenr_T)n, (char_u *)str, 0, FALSE) == FAIL)
+ PyErr_SetVim(_("cannot insert line"));
+ else
+ appended_lines_mark((linenr_T)n, 1L);
- vim_free(str);
- curbuf = savebuf;
- update_screen(VALID);
+ vim_free(str);
+ curbuf = savebuf;
+ update_screen(VALID);
- if (PyErr_Occurred() || VimErrorCheck())
- return FAIL;
+ if (PyErr_Occurred() || VimErrorCheck())
+ return FAIL;
- if (len_change)
- *len_change = 1;
+ if (len_change)
+ *len_change = 1;
- return OK;
+ return OK;
}
else if (PyList_Check(lines))
{
- Py_ssize_t i;
- Py_ssize_t size = PyList_Size(lines);
- char **array;
- buf_T *savebuf;
-
- array = (char **)alloc((unsigned)(size * sizeof(char *)));
- if (array == NULL)
- {
- PyErr_NoMemory();
- return FAIL;
- }
-
- for (i = 0; i < size; ++i)
- {
- PyObject *line = PyList_GetItem(lines, i);
- array[i] = StringToLine(line);
-
- if (array[i] == NULL)
- {
- while (i)
- vim_free(array[--i]);
- vim_free(array);
- return FAIL;
- }
- }
-
- savebuf = curbuf;
-
- PyErr_Clear();
- curbuf = buf;
-
- if (u_save((linenr_T)n, (linenr_T)(n + 1)) == FAIL)
- PyErr_SetVim(_("cannot save undo information"));
- else
- {
- for (i = 0; i < size; ++i)
- {
- if (ml_append((linenr_T)(n + i),
- (char_u *)array[i], 0, FALSE) == FAIL)
- {
- PyErr_SetVim(_("cannot insert line"));
-
- /* Free the rest of the lines */
- while (i < size)
- vim_free(array[i++]);
-
- break;
- }
- vim_free(array[i]);
- }
- if (i > 0)
- appended_lines_mark((linenr_T)n, (long)i);
- }
-
- /* Free the array of lines. All of its contents have now
- * been freed.
- */
- vim_free(array);
-
- curbuf = savebuf;
- update_screen(VALID);
-
- if (PyErr_Occurred() || VimErrorCheck())
- return FAIL;
-
- if (len_change)
- *len_change = size;
-
- return OK;
+ Py_ssize_t i;
+ Py_ssize_t size = PyList_Size(lines);
+ char **array;
+ buf_T *savebuf;
+
+ array = (char **)alloc((unsigned)(size * sizeof(char *)));
+ if (array == NULL)
+ {
+ PyErr_NoMemory();
+ return FAIL;
+ }
+
+ for (i = 0; i < size; ++i)
+ {
+ PyObject *line = PyList_GetItem(lines, i);
+ array[i] = StringToLine(line);
+
+ if (array[i] == NULL)
+ {
+ while (i)
+ vim_free(array[--i]);
+ vim_free(array);
+ return FAIL;
+ }
+ }
+
+ savebuf = curbuf;
+
+ PyErr_Clear();
+ curbuf = buf;
+
+ if (u_save((linenr_T)n, (linenr_T)(n + 1)) == FAIL)
+ PyErr_SetVim(_("cannot save undo information"));
+ else
+ {
+ for (i = 0; i < size; ++i)
+ {
+ if (ml_append((linenr_T)(n + i),
+ (char_u *)array[i], 0, FALSE) == FAIL)
+ {
+ PyErr_SetVim(_("cannot insert line"));
+
+ /* Free the rest of the lines */
+ while (i < size)
+ vim_free(array[i++]);
+
+ break;
+ }
+ vim_free(array[i]);
+ }
+ if (i > 0)
+ appended_lines_mark((linenr_T)n, (long)i);
+ }
+
+ /* Free the array of lines. All of its contents have now
+ * been freed.
+ */
+ vim_free(array);
+
+ curbuf = savebuf;
+ update_screen(VALID);
+
+ if (PyErr_Occurred() || VimErrorCheck())
+ return FAIL;
+
+ if (len_change)
+ *len_change = size;
+
+ return OK;
}
else
{
- PyErr_BadArgument();
- return FAIL;
+ PyErr_BadArgument();
+ return FAIL;
}
}
@@ -2614,19 +2566,19 @@ static PyObject * LineToString(const char *str)
p = tmp;
if (p == NULL)
{
- PyErr_NoMemory();
- return NULL;
+ PyErr_NoMemory();
+ return NULL;
}
while (*str)
{
- if (*str == '\n')
- *p = '\0';
- else
- *p = *str;
+ if (*str == '\n')
+ *p = '\0';
+ else
+ *p = *str;
- ++p;
- ++str;
+ ++p;
+ ++str;
}
*p = '\0';
@@ -2654,8 +2606,8 @@ static char * StringToLine(PyObject *obj)
if (obj == NULL || !PyUnicode_Check(obj))
{
- PyErr_BadArgument();
- return NULL;
+ PyErr_BadArgument();
+ return NULL;
}
str = _PyUnicode_AsString(obj);
@@ -2670,13 +2622,13 @@ static char * StringToLine(PyObject *obj)
p = memchr(str, '\n', len);
if (p != NULL)
{
- if (p == str + len - 1)
- --len;
- else
- {
- PyErr_SetVim(_("string cannot contain newlines"));
- return NULL;
- }
+ if (p == str + len - 1)
+ --len;
+ else
+ {
+ PyErr_SetVim(_("string cannot contain newlines"));
+ return NULL;
+ }
}
/* Create a copy of the string, with internal nulls replaced by
@@ -2685,16 +2637,16 @@ static char * StringToLine(PyObject *obj)
save = (char *)alloc((unsigned)(len+1));
if (save == NULL)
{
- PyErr_NoMemory();
- return NULL;
+ PyErr_NoMemory();
+ return NULL;
}
for (i = 0; i < len; ++i)
{
- if (str[i] == '\0')
- save[i] = '\n';
- else
- save[i] = str[i];
+ if (str[i] == '\0')
+ save[i] = '\n';
+ else
+ save[i] = str[i];
}
save[i] = '\0';
@@ -2709,19 +2661,18 @@ static int VimErrorCheck(void)
{
if (got_int)
{
- PyErr_SetNone(PyExc_KeyboardInterrupt);
- return 1;
+ PyErr_SetNone(PyExc_KeyboardInterrupt);
+ return 1;
}
else if (did_emsg && !PyErr_Occurred())
{
- PyErr_SetNone(VimError);
- return 1;
+ PyErr_SetNone(VimError);
+ return 1;
}
return 0;
}
-
static void init_structs(void)
{
vim_memset(&OutputType, 0, sizeof(OutputType));
@@ -2751,6 +2702,20 @@ static void init_structs(void)
BufferType.tp_new = call_PyType_GenericNew;
BufferType.tp_free = call_PyObject_Free;
+ vim_memset(&WindowType, 0, sizeof(WindowType));
+ WindowType.tp_name = "vim.window";
+ WindowType.tp_basicsize = sizeof(WindowObject);
+ WindowType.tp_dealloc = WindowDestructor;
+ WindowType.tp_repr = WindowRepr;
+ WindowType.tp_getattro = WindowGetattro;
+ WindowType.tp_setattro = WindowSetattro;
+ WindowType.tp_flags = Py_TPFLAGS_DEFAULT;
+ WindowType.tp_doc = "vim Window object";
+ WindowType.tp_methods = WindowMethods;
+ WindowType.tp_alloc = call_PyType_GenericAlloc;
+ WindowType.tp_new = call_PyType_GenericNew;
+ WindowType.tp_free = call_PyObject_Free;
+
vim_memset(&BufListType, 0, sizeof(BufListType));
BufListType.tp_name = "vim.bufferlist";
BufListType.tp_basicsize = sizeof(BufListObject);
diff --git a/src/macros.h b/src/macros.h
index 7fc5df0ce..599b40398 100644
--- a/src/macros.h
+++ b/src/macros.h
@@ -135,7 +135,7 @@
# ifdef FEAT_MBYTE
# define LANGMAP_ADJUST(c, condition) \
do { \
- if (*p_langmap && (condition) && !KeyStuffed && (c) >= 0) \
+ if (*p_langmap && (condition) && !KeyStuffed && (c) >= 0) \
{ \
if ((c) < 256) \
c = langmap_mapchar[c]; \
@@ -146,8 +146,8 @@
# else
# define LANGMAP_ADJUST(c, condition) \
do { \
- if (*p_langmap && (condition) && !KeyStuffed && (c) >= 0 && (c) < 256) \
- c = langmap_mapchar[c]; \
+ if (*p_langmap && (condition) && !KeyStuffed && (c) >= 0 && (c) < 256) \
+ c = langmap_mapchar[c]; \
} while (0)
# endif
#else
diff --git a/src/vim.h b/src/vim.h
index c45c60ba0..ce5551438 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -392,8 +392,8 @@ typedef unsigned int int_u;
* On Win64, longs are 32 bits and pointers are 64 bits.
* For printf() and scanf(), we need to take care of long_u specifically. */
#ifdef _WIN64
-typedef unsigned __int64 long_u;
-typedef __int64 long_i;
+typedef unsigned __int64 long_u;
+typedef __int64 long_i;
# define SCANF_HEX_LONG_U "%Ix"
# define SCANF_DECIMAL_LONG_U "%Iu"
# define PRINTF_HEX_LONG_U "0x%Ix"