2013-08-17 61 views
5

崇高的文字3看起来不错,但是让我无法切换的一件事是Clipboard Commands的兼容性。我使用这个插件的唯一的东西是“clean_paste”函数,它基本上使得从Microsoft Word(或任何其他文本编辑器)粘贴复制的内容去除它通常附带的有趣字符。有谁知道ST3提供的本机函数,我可以将键盘映射到?这里是ClipboardCommand做什么(在ST2版):崇高的文字3 - 清洁膏

class ClipboardCommandsPastePlainText(sublime_plugin.TextCommand): 
    def run(self, edit): 
     copy(clean_paste(clipboard())) 
     self.view.run_command('paste') 

可能更普遍Python的问题为好,但你也可以创建自己的键绑定,这一次基本上只是命令参考:

"caption": "Clipboard: Paste Plain Text", 
"command": "clipboard_commands_paste_plain_text" 

所以如果command是我可以把那个函数放到那里,但是不知道它是如何在Python中工作的。谢谢你的帮助!

+0

你所要做的就是修复'clean_copy'和'clean_paste'。 – Blender

+0

我不确定我是否理解这个问题 – Eric

+0

为了澄清,我很想将这个ST2插件移植到ST3,但不是Python开发人员,我想知道是否有人知道映射新键绑定的最佳方式崇高(我知道该怎么做),但是引用那个干净的''clean_paste'函数,而不是像原来那样引用一个类定义。或者,如果这使得问题更清楚,我可以如何执行从Miscrosoft Word到ST3的干净粘贴(所以我可以摆脱所有“特殊/编码字符” – Zach

回答

4

没有太多的工作,使这条巨蟒3兼容:

# coding=utf8 
import sublime_plugin, sublime, re, html 

def clipboard(): 
    return sublime.get_clipboard() 

def copy(data): 
    sublime.set_clipboard(data) 

# to transfer data to sublime text 
def clean_paste(data): 
    # clean word 
    data = str(data) 
    data = data.replace(u'”', '"').replace(u'“', '"').replace(u'’', "'") 
    data = data.replace('________________________________________', '\n') 
    # clean htmlentities 
    data = re.sub('&([^;]+);', lambda m: unichr(html.entities.name2codepoint[m.group(1)]), data) 
    return data; 

# to transfer data from sublime text 
def clean_copy(data): 
    # clean html 
    data = str(data) 
    data = re.sub(r'<br ?/?>', '\n', data, re.I); 
    data = re.sub(r'<[^>]*>', '', data); 
    # clean htmlentities 
    data = re.sub('&([^;]+);', lambda m: unichr(html.entities.name2codepoint[m.group(1)]), data) 
    return data; 

我分叉链接插件后,上传的变化here

在sublime3测试,它似乎工作,但没有测试用例我将把这一个留给你。

+0

对不起,已经放弃了这个帖子并准备在论坛发帖 - 感谢这个! – Zach