2013-10-22 46 views
2

我开发插件sublime text 3。并希望得到当前打开的文件路径...从sublime_plugin.WindowCommand获取当前文件名

absolute1 = self.window.view.file_name() 

...其中selfsublime_plugin.WindowCommand

但失败:

AttributeError: 'Window' object has no attribute 'view' 

插件的全码:

import sublime, sublime_plugin 
import re, os, os.path 

class OpenrelCommand(sublime_plugin.WindowCommand): 

    def run(self): 
     relative = sublime.get_clipboard() 
     absolute1 = self.window.view.file_name() 
     absolute2 = os.path.normpath(os.path.join(os.path.dirname(absolute1), relative)) 
     self.window.open_file(absolute2) 

    def is_enabled(self): 
     return bool(sublime.get_clipboard().strip()) 

如果self将是sublime_plugin.TextCommand我可以得到curren没有问题牛逼文件路径:

fileName = self.view.file_name() 

...但self必须sublime_plugin.WindowCommand,因为我想使用方法open_file

self.window.open_file(absolute2) 

回答

4

看一看的API(http://www.sublimetext.com/docs/3/api_reference.html#sublime.Window)。 self是一个窗口对象。所以你需要做self.window.active_view()来获得视图。

+0

我尝试,但失败:'absolute1 = self.active_window()view.file_name() Attribu teError:'OpenrelCommand'对象没有属性'active_window'' –

+0

Woops抱歉,我的意思是'self.active_view()' – skuroda

+0

对不起。 'absolute1 = self.active_view().file_name() AttributeError:'OpenrelCommand'对象没有属性'active_view'' –

4

对于崇高的文本3为我工作的命令是:

self.view.window().active_view().file_name() 
1

对于崇高的文本3,我认为使用下列内容:

myCompleteName = self.view.file_name() 

可以是一个解决方案,我已经试过了与sublime_plugin.TextCommand和它工作得很好