I resolved this by coming at it from the other end. I created a shell script.
pastedown.sh #!/bin/bash xclip -o -selection clipboard -t text/html|pandoc -r html -w markdown|xclip -i -selection clipboard Then I used the Custom Shortcuts feature in KDE to assign Ctrl-Shift-v to launch it. The script reads the clipboard, converts it to markdown and puts it back in the clipboard and then allows me to paste it into Leo using Ctrl-v as markdown. No encoding errors. On Monday, December 28, 2015 at 11:16:37 AM UTC-8, Chris George wrote: > > Hi Terry, > > Apparently the Debian version of the xclip program (.deb file from their > repositories) is different from the Ubuntu version (gleaned from a > Stackexchange conversation). When I run the string on an image copied in > GIMP, it returns an error message, "Error: target text/html not available". > > The way to tell if you have the right version or not is to type "man > xclip" and see if -t is an option. If it is not, you need to remove xclip > and hunt down the Debian version. > > Chris > . > On Monday, December 28, 2015 at 8:01:37 AM UTC-8, Terry Brown wrote: >> >> On Sun, 27 Dec 2015 19:33:24 -0800 (PST) >> Chris George <[email protected]> wrote: >> >> > Hello All, >> > >> > Some time ago I asked Terry about being able to copy rich text from a >> > browser window and paste rst. I was pointed to a solution that uses >> > xclip and pandoc and have been using it since by running it in a >> > command window and copy/pasting the output into Leo. This worked as I >> > only needed to do this on rare occasions. I recently switched over to >> > using markdown and the command line to make this happen works just >> > great. I find myself using this capability more and more often though. >> > >> > xclip -o -selection clipboard -t text/html | pandoc -r html -w >> > markdown >> >> > My question is: How do I automate this in Leo? It would be nice to be >> > able to have this command run on all pastes (Ctrl-v) that have a >> > markdown file as a destination, with plain text as a fallback if the >> > clipboard provides something that isn't text/html. >> >> "all pastes (Ctrl-v) that have a markdown file as a destination" would >> require a bit more thought. Here's a simple(*) solution you could >> deploy as a @button, just stick it in a node called `@button h2m`, >> reload or click the script-button button the first time (it will appear >> automatically on reloads). >> >> --- cut here --- >> from subprocess import Popen, PIPE >> from leo.core.leoQt import QtGui >> >> clipboard = QtGui.QApplication.clipboard() >> html = unicode(clipboard.text("html")) >> >> if html: >> cmd = "pandoc -r html -w markdown".split() >> proc = Popen(cmd, stdout=PIPE, stdin=PIPE) >> markdown, errors = proc.communicate(html.encode("utf-8")) >> i = c.frame.body.wrapper.getInsertPoint() >> c.frame.body.wrapper.insert(i, markdown) >> else: >> g.es("No HTML to convert") >> --- cut here --- >> >> For my setup I get a lot of extra chatter in the markdown, like >> <span class="Apple-converted-space">Â </span> >> but maybe there are pandoc settings to stop that. >> >> (*) ok, this seemed simple, but wasn't. >> xclip -o -selection clipboard -t text/html >> returns nothing when executed in the shell when there's no html on the >> clipboard, but when execute from Popen without html, it never returns. >> Hence using Qt to access the clipboard, with related encoding issues. >> >> Cheers -Terry >> >> > The usual disclaimer about me not being a programmer applies. I use >> > Leo to write, not code. >> > >> > Chris >> > -- You received this message because you are subscribed to the Google Groups "leo-editor" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/leo-editor. For more options, visit https://groups.google.com/d/optout.
