Ich versuche, ein kleines Plugin zu schreiben, um die aktuelle Datei zu löschen und die aktive Ansicht zu schließen. Aus irgendeinem Grund gibt self.view.file_name() immer None zurück.Sublime text: Wie bekomme ich den Dateinamen der aktuellen Ansicht
Ich bin neu in Python und ich habe keine Ahnung, warum es so nicht funktioniert. Gemäß der API Reference Dateiname() gibt den Dateinamen der aktuellen Ansicht zurück.
import sublime, sublime_plugin, send2trash
class DeleteCurrentFileCommand(sublime_plugin.TextCommand):
def run(self, edit):
f = self.view.file_name()
if (f is None):
return
send2trash.send2trash(f)
self.view.window().run_command('close')
Ausgabe von dir (self.view):
[ 'Klasse', 'delattr', 'dict', ' doc', "Format ' 'getAttribute', ' hash', 'init',' len ' 'Modul', 'neue', ' reduzieren', 'reduce_ex', 'repr', 'setattr', 'sizeof',' str‘, 'subclasshook', 'WeakRef', 'add_regions', 'begin_edit', 'buffer_id', 'Klassifizieren', 'command_history', 'em_width', 'encoding', 'end_edit', 'löschen' , 'erase_regions', 'erase_status', 'extract_completions', 'extract_scope', 'file_name', 'find' , 'find_all', 'find_all_results', 'find_by_selector', 'fold', 'gefaltete_regionen', 'full_line', 'get_regionen', 'get_status', 'get_symbols', 'has_non_empty_selection_region', 'id', 'indentation_level', ' eingerückter_Region ',' Einfügung ',' is_dirty ',' is_folded ',' is_loading ',' is_read_only ',' is_scratch ',' layout_extent ',' layout_to_text ',' line ',' line_endings ',' line_height ',' lines ' , 'match_selector', 'meta_info', 'name', 'ersetzen', 'retarget', 'rowcol', 'run_command', 'scope_name', 'score_selector', 'sel', 'set_encoding', 'set_line_endings', ' set_name ',' set_read_only ',' set_scratch ',' set_status ',' set_syntax_file ',' set_viewport_position ',' einstellungen ',' show ',' show_at_center ',' size ',' split_by_newlines ',' substr ',' syntax_name ' , 'text_point', 'text_to_layout', 'Entfalten', 'viewport_extett', 'viewport_position', 'visible_region', 'window', 'word']
Irgendwelche Fehler msgs in der Konsole? –
Nein. Der Check für '(f ist None)' ist immer wahr und kehrt daher zurück, bevor 'send2trash() 'erreicht wird. Ohne zu überprüfen, schlägt der 'send2trash()' Aufruf fehl. Wenn ich 'view.file_name()' in der Konsole ausführen, wird der richtige Pfad zurückgegeben. – Felix
Was ist die Ausgabe von print dir (self.view)? –