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.

Reply via email to