Пример #1
0
    def _eval_code(self, code, additional_locals={}):
        code = "\n".join([
            "import re, os, vim, string, random",
            "\n".join(self._globals.get("!p", [])).replace("\r\n", "\n"),
            code,
        ])

        current = vim.current

        locals = {
            "window": current.window,
            "buffer": current.buffer,
            "line": current.window.cursor[0] - 1,
            "column": current.window.cursor[1] - 1,
            "cursor": _SnippetUtilCursor(current.window.cursor),
        }

        locals.update(additional_locals)

        snip = SnippetUtilForAction(locals)

        try:
            exec(code, {"snip": snip})
        except Exception as e:
            self._make_debug_exception(e, code)
            raise

        return snip
Пример #2
0
    def _eval_code(self, code, additional_locals={}):
        # code = "\n".join([
        #     'import re, os, vim, string, random',
        #     '\n'.join(self._globals.get('!p', [])).replace('\r\n', '\n'),
        #     code
        # ])

        current = vim.current

        locals = {
            "window": current.window,
            "buffer": current.buffer,
            "line": current.window.cursor[0] - 1,
            "column": current.window.cursor[1] - 1,
            "cursor": _SnippetUtilCursor(current.window.cursor),
        }

        locals.update(additional_locals)

        snip = SnippetUtilForAction(locals)

        try:
            exec(code, {'snip': snip, 't': additional_locals['t'], 's': additional_locals['s']}, self._locals)
        except Exception as e:
            self._make_debug_exception(e, code)
            raise

        return snip
Пример #3
0
    def _eval_code(self, code, additional_locals={}, compiled_code=None):
        current = vim.current

        locals = {
            "window": current.window,
            "buffer": current.buffer,
            "line": current.window.cursor[0] - 1,
            "column": current.window.cursor[1] - 1,
            "cursor": _SnippetUtilCursor(current.window.cursor),
        }

        locals.update(additional_locals)

        snip = SnippetUtilForAction(locals)

        try:
            if self._compiled_globals is None:
                self._precompile_globals()
            glob = {"snip": snip, "match": self._last_re}
            exec(self._compiled_globals, glob)
            exec(compiled_code or code, glob)
        except Exception as e:
            code = "\n".join(
                [
                    "import re, os, vim, string, random",
                    "\n".join(self._globals.get("!p", [])).replace("\r\n", "\n"),
                    code,
                ]
            )
            self._make_debug_exception(e, code)
            raise

        return snip