2013-08-17 93 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