使用sublime text api open_file(),但路径不正确

时间:2015-01-06 05:55:33

标签: python sublimetext sublime-text-plugin

我想为JavaScript编写一个像ctags这样的Sublime Text插件,我需要使用sublime.Window.open_file()函数。

但它不起作用,我有打印路径,但它与我传输给api的路径似乎有所不同。

print("needOpen  "+needOpen)
root.view.window().open_file(needOpen)

控制台

needOpen  C:/Users/lujunhao/AppData/Roaming/npm/node_modules/fis/node_modules/fis-kernel/fis-kernel.js

Unable to open /C/Users/lujunhao/AppData/Roaming/npm/node_modules/fis/node_modules/fis-kernel/fis-kernel.js

2 个答案:

答案 0 :(得分:0)

无法查看完整代码,最有可能解释

root.view.window().open_file("C:/Users/lujunhao/AppData/Roaming/npm/node_modules‌​/fis/node_modules/fis-kernel/fis-kernel.js")

工作,但

needOpen = "C:/Users/lujunhao/AppData/Roaming/npm/node_modules/fis/node_modules/fis-kernel/‌​fis-kernel.js"
# ...
root.view.window().open_file(needOpen)

无法正常工作needOpen可能对调用open_file()的函数不可见。例如,如果您的代码如下所示:

needOpen = "C:/Users/lujunhao/AppData/Roaming/npm/node_modules/fis/node_modules/fis-kernel/‌​fis-kernel.js"

def openFile(root):
    root.view.window().open_file(needOpen)

openFile(root)

最后一行对open_file()的调用无效。这是因为needOpen在外部命名空间中定义,但由于它尚未作为参数传递给openFile()函数,因此函数内部的代码无法看到它。要解决此问题,请将needOpen作为参数传递给openFile()函数:

needOpen = "C:/Users/lujunhao/AppData/Roaming/npm/node_modules/fis/node_modules/fis-kernel/‌​fis-kernel.js"

def openFile(root, needOpen):
    root.view.window().open_file(needOpen)

openFile(root, needOpen)

现在,假设needOpen的定义和openFile()的调用位于同一名称空间中,您的函数应该按预期工作。


关于打印needOpen的问题,Sublime内部将Windows风格的路径转换为Unix风格的路径,因此您看到的差异无需担心。

答案 1 :(得分:0)

我已经解决了我的问题。我忽略了删除" \ n"。 传递给open_file的路径是" c:\ abc.txt< \ n>"。它有换行符。 当我打印路径时,我看不到换行符。所以............

谢谢大家