包的Sublime Text 3中的语法高亮(.tmLanguage)

时间:2013-12-04 20:46:05

标签: python-3.x package sublimetext3 robotframework sublime-text-plugin

我正在处理这个plugin

使用包控件安装插件时,语法高亮显示不适用于Sublime Text 3.

Error loading syntax file "Sublime Text 3/Installed Packages/robot.tmLanguage": Unable to open Sublime Text 3/Installed Packages/robot.tmLanguage

该插件位于Installed Packcages/Robot Framework Assistant.sublime-package内,Robot Framework Assistant.sublime-package档案内的文件'robot.tmLanguage'。

以下是我设置路径的方法 https://github.com/andriyko/sublime-robot-framework-assistant/blob/master/rfassistant/init.py

我的问题类似于this thread,但在我的情况下,插件安装为存档(.sublime-package)而不是文件夹。

  1. 我不确定上面提到的路径设置在python3中是否正确。

  2. 如何引用.sublime-package文件中的tmLanguage文件?

  3. 我应该把该文件放在哪里?令人困惑的是,为什么它适用于Sublime Text 2和Sublime Text 3(当从github安装到dir中时),但是当通过Package Control安装时不起作用。

  4. 那么,我如何设置tmLanguage文件的路径以及我应该在哪里存储它。只是想澄清一下,当从github zip文件安装插件时它工作正常(因为我把它的内容放到Packages目录下的RobotFrameworkAssistant文件夹中)。通过Package Control安装插件时,它不起作用。

3 个答案:

答案 0 :(得分:4)

基于其他人添加自定义.tmLanguage文件的手动解决方案的快速摘要'建议:

  1. myLang.tmLanguage文件放入具有所需语法的文件夹中 名称
  2. 压缩文件夹,使其名为myLang.zip
  3. 将zip存档重命名为myLang.sublime-package
  4. myLang.sublime-package放入Sublime 3 packages文件夹。它现在将出现在sublime语法高亮菜单中。
  5. 基于ST3文档,我现在似乎无法找到此手动方法的替代方法,但它可以正常工作。

    Package control可能会完成幕后所需的一切

答案 1 :(得分:3)

您需要tmLanguage文件的内容吗?如果是这样,您不应该直接访问它。相反,您应该使用sublime.load_resource(name),其中name类似于Packages/Robot Framework Assistant/robot.tmLanguage。如果您只是尝试设置文件语法,则应该使用view.set_syntax_file(syntax_file),其中syntax_file就像资源的名称一样。我没有详细查看你的插件,所以如果这两个答案都不正确,请澄清你想要做什么。

作为旁注,基于该错误,您可能也会在ST2中看到问题。您只查看根软件包文件夹,而不是查看软件包。

在ST3中,jps决定使插件可以从.sublime-package文件运行,而不是需要提取。这些文件只是重命名的.zip文件。如果您正在访问插件中的资源,则需要进行更新,但API已经过扩展以支持它。

这不是一个很好的列表,但它涵盖了ST2中ST3的一些变化。

http://www.sublimetext.com/docs/3/porting_guide.html

答案 2 :(得分:2)

这个问题似乎已经解决了。请参阅此fix

为什么我在ST3中遇到语法设置(.tmLanguage)问题?

因为ST3文档中应该找到该文件,所以它完全令人困惑且不清楚。 (即使它表示如果在Packages中找不到文件,则在Installed Packages目录中继续进行文件查找。

Sublime Text 3目录下有两个“主要”文件夹:Installed PackagesPackages

当使用Package Control安装插件时,它进入Installed Packages目录,打包到名为Robot Framework Assistant.sublime-package(实际上是ZIP文件)的存档文件中。 robot.tmLanguage文件(语法文件)位于Robot Framework Assistant.sublime-package内。

所以,简而言之,我的问题是:如何引用该文件(应该向view.set_syntax_file方法提供什么路径?)

不直观,但我应该引用不存在的路径Packages/Robot Framework Assistant/robot.tmLanguage。实际上,在我的情况下,Packages目录仅包含Users文件夹。唯一可以猜到的是,文件夹名称应与包名称相同(在我的情况下为Robot Framework Assistant)。