Monday, March 21, 2016

Re: Build cexpr from result of python code.

2016-03-21 17:15 GMT+03:00 Ni Va <nivaemail@gmail.com>:
> Hi,
>
> I am using Execute-selection-in-Python-and-append-master plugin in order to test python code directly through vim. Now the python code is working and return me a list that contains strings typed like "file linenumber linecontent".
>
> I would like not to replace buffer content by result of python code but affect cexpr to the list content in order to navigate through results with quickfix list.

You can use

vim.Function('setqflist')([{'filename': file, 'lnum': linenumber,
'text': linecontent}])

to set quickfix list from Python code. This assumes that you are doing
parsing yourself.

Or pyeval() in :cexpr to make Vim do parsing. Just return `output`
directly without doing anything with `r` and your function should be
ready for use in :cexpr assuming correct &errorformat value.

>
> Can you help me to build that cexpr list ?
>
> By advance Thank you
>
>
> Here it is the code of PyExecReplace that replace content of my buffer (python code) by result of execution code.
>
>
> python << EOL
> import vim, StringIO,sys
>
> def PyExecReplace(line1,line2):
> r = vim.current.buffer.range(int(line1),int(line2))
> redirected = StringIO.StringIO()
> sys.stdout = redirected
> exec('\n'.join(r[:]) + '\n')
> sys.stdout = sys.__stdout__
> output = redirected.getvalue().split('\n')
> r[:] = output[:-1] # the -1 is to remove the final blank line
> # vim.command("echo "+"-".join(("a", "b", "c")))
> redirected.close()
> EOL
> command! -range Pyer python PyExecReplace(<f-line1>,<f-line2>)
> command! -range Pyea python PyExecAppend(<f-line1>,<f-line2>)
>
> --
> --
> You received this message from the "vim_use" maillist.
> Do not top-post! Type your reply below the text you are replying to.
> For more information, visit http://www.vim.org/maillist.php
>
> ---
> You received this message because you are subscribed to the Google Groups "vim_use" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

--
--
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

---
You received this message because you are subscribed to the Google Groups "vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

No comments: