我想为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
答案 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>"。它有换行符。 当我打印路径时,我看不到换行符。所以............
谢谢大家