]> git.neil.brown.name Git - edlib.git/commitdiff
python: make standard globals available to python scripts.
authorNeilBrown <neil@brown.name>
Fri, 4 Dec 2015 05:42:12 +0000 (16:42 +1100)
committerNeilBrown <neil@brown.name>
Wed, 9 Dec 2015 23:00:49 +0000 (10:00 +1100)
Also make 'editor' and 'edlib' available to subsequent function calls

Signed-off-by: NeilBrown <neil@brown.name>
lang-python.c

index c1c3061ba85713d8d87b44c170362ddc0bdf9aa8..27e6003c25c5bfb071c9c95d13a9086804be30f1 100644 (file)
@@ -70,7 +70,7 @@ DEF_CMD(python_load)
 {
        char *fname = ci->str;
        FILE *fp;
-       PyObject *globals;
+       PyObject *globals, *main_mod;
        struct editor *ed = pane2ed(ci->home);
        PyObject *Ed;
 
@@ -80,15 +80,18 @@ DEF_CMD(python_load)
        if (!fp)
                return -1;
 
+       main_mod = PyImport_AddModule("__main__");
+       if (main_mod == NULL)
+               return -1;
+       globals = PyModule_GetDict(main_mod);
+
        Ed = Pane_Frompane(&ed->root);
-       globals = PyDict_New();
        PyDict_SetItemString(globals, "editor", Ed);
        PyDict_SetItemString(globals, "pane", Pane_Frompane(ci->home));
        PyDict_SetItemString(globals, "edlib", EdlibModule);
        PyRun_FileExFlags(fp, fname, Py_file_input, globals, globals, 0, NULL);
        PyErr_Print();
        Py_DECREF(Ed);
-       Py_DECREF(globals);
        fclose(fp);
        return 1;
 }