On Friday, January 10, 2014 3:06:44 PM UTC-6, Jacobo de Vera wrote: > On Fri, Jan 10, 2014 at 7:03 PM, Rick Dooling <rpdoo.com> wrote: > > > > > >> > This one grabs the buffer contents, converts it to HTML, and sends it to > >> > the clipboard for pasting into WordPress or whatever. > > >> > > >> > " Send Text Through Filter To Clipboard: > > >> > " http://vim.wikia.com/wiki/Use_filter_commands_to_process_text > > >> > function! MDC() > > >> > :redir @+ > > >> > " No output file specified so it goes to STDOUT > > >> > exe '!pandoc %' > > >> > :redir END > > >> > endfunction > > >> > > >> > This morning I was monkeying with using Python in Vim to do this. That > >> > also works. Then you can use Python's Markdown module. > > >> > > >> But does it though? From what I see the line: > > >> > > >> exe '!pandoc %' > > >> > > >> Is running pandoc with the *file* open in the current buffer as input, > > >> which means you have to have a file and you have to save it in order > > >> for it to work. This is similar to what was shown in previous emails, > > >> but what I was wondering is whether one can use something similar that > > >> uses buffer contents, not file contents. > > >> > > > > > > > > if no file is specified with -o in pandoc it goes to STDOUT, and you are > > using redir to redirect STOUT to the clipboard. At least that's how I > > understand it. > > > > > > Another scripting angle, esp. using Python or Ruby is just run the > > commands, save the file, and tell vim to open the file in a new buffer. > > > > > > Now that I've been playing, the redirect to the clipboard is actually even > > more useful, because you can use Marked2 or some other html > > converter/viewer to check things before loading your html up to go paste. > > > > > > Rick > > > > > > > Rick, I think you and I are talking about two different things here. I > > am talking about the input and you are talking about the output. So > > yes, pandoc sends its output to stdout, which is captured by Vim. But > > the input, it takes from a file name, which is the value after > > replacing '%' on that exe line. > > > > Say you create a new file, then write some markdown, and, before > > saving, you run that function. You'd get nothing, because pandoc > > receives, as input, an empty file. Pandoc, and many other programs, > > however, support getting their input from stdin. In vim you can send > > the contents of the current buffer to a process' stdin, and then the > > process' stdout replaces those contents, just like when one does: > > > > :%!sort > > > > What I was trying to ask is. How does one send those unsaved contents > > to a program without getting them replaced with the output of such > > program, but instead get the output in a separate tab? The function > > you sent provides a solution for the second part, since it will > > redirect output to a variable or a register. Now we are only missing > > the first part, which we nearly have, but it uses files, rather than > > buffer contents. > > > > Hope that clarifies my question a little. > > > > Regards, > > > > -- > > Jacobo de Vera > > http://www.jacobodevera.com > > @jovianjake
I think I am not the person to answer. I have never tried to do anything with buffer contents before saving them as a file. In fact, my maps often begin with :w<CR> to make sure that the save happens first, or I guess :up<CR>. I think it would be a bad idea to attempt anything with a filter or external program on an unsaved file. One error and poof. -- -- 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 [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
