Make the result of screen.windows easier to use.
authorRui Guo <firemeteor.guo@gmail.com>
Wed, 19 Aug 2009 15:10:22 +0000 (19 23:10 +0800)
committerRui Guo <firemeteor.guo@gmail.com>
Wed, 19 Aug 2009 15:10:22 +0000 (19 23:10 +0800)
The resulting table does not have holes in index.

src/lua.c

index 2c73ea8..ac29244 100644 (file)
--- a/src/lua.c
+++ b/src/lua.c
@@ -996,18 +996,27 @@ static const struct Xet_reg display_getters[] = {
 
 /** Screen {{{ */
 
+extern struct win *wtab[];
+
 static int
 screen_get_windows(lua_State *L)
 {
-  struct win *iter;
-  int count;
+  struct win **iter = wtab;
+  int count, i;
 
   lua_newtable(L);
-  for (iter = windows, count = 0; iter; iter = iter->w_next, count++) {
-    lua_pushinteger(L, iter->w_number);
-    push_window(L, &iter);
-    lua_settable(L, -3);
-  }
+  i = 1;
+  for (count = 0; count < MAXWIN; count++) 
+    {
+      if (!*iter) {
+          iter++;
+          continue;
+      }
+      lua_pushinteger(L, i++);
+      push_window(L, iter);
+      lua_settable(L, -3);
+      iter++;
+    }
 
   return 1;
 }