2017-11-24 3 views
0

Ich bin neu zu erstellen Sublime Text 3 Plugins und ich versuche zu verstehen, die Plugin-API, die angeboten wird. Ich möchte in der Lage sein, Text, den ich mit meiner Maus hervorhebe, zu "greifen" und anderswo zu verschieben. Gibt es eine Möglichkeit, dies mit der Sublime Text Plugin API zu tun?Ergreifen von Text von Sublime Text Regionen

Bisher alles, was ich getan habe, ist eine ganze Region zu schaffen in der Lage:

allcontent = sublime.Region(0, self.view.size()) 

Ich habe versucht, den gesamten Text in der Region zu greifen und es in eine Menge Datei setzen:

logfile = open("logfile.txt", "w") 
logfile.write(allcontent) 

Aber natürlich erfolglos, da die Protokolldatei leer ist, nachdem es ausgeführt wird.

Ich habe über Google geschaut und es gibt nicht viel Dokumentation, außer für die inoffizielle Dokumentation, in der ich keinen Weg finde, den Text zu greifen. Es gibt auch nicht viele Tutorials dazu.

Jede Hilfe wird sehr geschätzt!

Antwort

1

Eine Region repräsentiert nur einen Textbereich (d. H. Von Position 0 bis Position 10) und ist nicht an eine bestimmte Ansicht gebunden.

Um den zugrunde liegenden Text aus dem Puffer der Ansicht abzurufen, müssen Sie die Methode view.substr mit der Region als Parameter aufrufen.

import os 
logpath = os.path.join(sublime.cache_path(), 'logfile.txt') 
allcontent = self.view.substr(sublime.Region(0, self.view.size())) 
with open(logpath, 'w') as logfile: 
    logfile.write(allcontent) 
print('written buffer contents to', logpath) 

die Region durch die erste Auswahl dargestellt zu bekommen, können Sie self.view.sel()[0] anstelle von sublime.Region(0, self.view.size()) verwenden.

+0

Vielen Dank! Habe mir viel Mühe gegeben für mich – StarLlama

+0

Würde es Ihnen etwas ausmachen, wenn ich Ihnen eine Nachfolgefrage stellen würde? – StarLlama

+0

wenn es zusammenhängt, mach weiter, sonst könnte es besser sein, eine neue Frage als einen Kommentar hier zu schreiben :) –