2013-08-17 25 views
5

Hervorragender Text 3 sieht gut aus, aber ein Element, das mich davon abhält zu schalten, ist die Kompatibilität von Clipboard Commands. Das einzige, was ich für dieses Plugin benutze, ist die "clean_paste" -Funktion, die das Einfügen von kopierten Inhalten aus Microsoft Word (oder einem anderen Texteditor) vereinfacht, um die witzigen Zeichen zu entfernen, die es normalerweise enthält. Kennt jemand eine native Funktion, die ST3 bietet, dass ich eine Tastenkombination zuordnen kann? Hier ist, was ClipboardCommand bedeutet (in der ST2-Version):Sublime Text 3 - Clean Paste

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

Möglicherweise eher eine Python Frage im Allgemeinen als gut, aber Sie können auch eigene Tastaturbelegungen und diese schaffen im Grunde nur Referenzen, den Befehl:

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

Also wenn die command etwas ist, könnte ich nur diese Funktion in das wäre toll, aber nicht sicher, wie das in Python funktioniert. Danke für jede Hilfe!

+0

Alles, was Sie tun müssen, ist 'clean_copy' und' clean_paste' zu ​​korrigieren. – Blender

+0

Ich bin mir nicht sicher, ob ich die Frage verstehe – Eric

+0

Um zu verdeutlichen, würde ich gerne über dieses ST2-Plugin zu ST3 portieren, aber kein Python-Entwickler, ich fragte mich, ob jemand die beste Möglichkeit kannte, eine neue Schlüsselbindung zuzuordnen Sublime (was ich weiß, wie zu tun ist), aber referenziere diese Funktion, die die 'clean_paste' in sie einführt, anstatt auf eine Klassendefinition zu verweisen, so wie sie es ursprünglich tut. Oder, wenn dies die Frage klarer macht, wie könnte ich einen sauberen Einfügen von Miscrosoft Word in ST3 durchführen (damit ich alle "speziellen/codierten Zeichen" loswerden kann) – Zach

Antwort

4

nicht zu viel Arbeit macht diesen Python 3 kompatibel:

# 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; 

ich das verknüpfte Plugin gegabelt und den Hochladen die Änderungen here

es in sublime3 getestet und es scheint zu funktionieren, aber ohne Testfälle Ich überlasse dir das.

+0

Tut mir leid, hatte den Beitrag aufgegeben und wollte ihn in den Foren posten - danke dafür! – Zach