使用 sublime text api open_file(),但路径不正确
use sublime text api open_file(), but path is not correct
我想为 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
无法看到您的完整代码,最可能的解释是
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 风格的路径,因此你看到的差异无需担心。
我已经解决了我的问题。我错误地忽略了删除“\n”。
传递给 open_file 的路径是 "c:\abc.txt <\n>"。它有换行符。
当我打印路径时,我看不到换行符。所以......
谢谢大家
我想为 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
无法看到您的完整代码,最可能的解释是
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 风格的路径,因此你看到的差异无需担心。
我已经解决了我的问题。我错误地忽略了删除“\n”。 传递给 open_file 的路径是 "c:\abc.txt <\n>"。它有换行符。 当我打印路径时,我看不到换行符。所以......
谢谢大家