【问题标题】:syntax highlight (.tmLanguage) in Sublime Text 3 for packagesSublime Text 3 中包的语法高亮(.tmLanguage)
【发布时间】:2013-12-21 12:58:33
【问题描述】:

我正在处理这个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 上工作(从 gi​​thub 安装到 dir 时)但通过 Package Control 安装时却不能工作。

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

【问题讨论】:

  • 这不是SuperUser的问题吗?
  • 不确定。为什么是超级用户? 1.我不确定我上面提到的路径设置在python3中是否正确。 2. Sublime 论坛关闭了几天(或几周?)sublimetext.com/forum。 3. 4. 如何引用 .sublime-package 文件中的 tmLanguage 文件? 5. 我应该把那个文件放在哪里?完全令人困惑,为什么它可以在 Sublime Text 2 和 Sublime Text 3 上工作(当从 github 安装到 dir 时)但在通过 Package Control 安装时不起作用。
  • 你现在应该把它放在问题中。

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


【解决方案1】:

根据其他人的建议,我手动添加自定义.tmLanguage文件的解决方案快速总结:

  1. myLang.tmLanguage 文件放入具有所需语法的文件夹中 名字。
  2. 压缩文件夹,使其命名为myLang.zip
  3. 将压缩包重命名为myLang.sublime-package
  4. myLang.sublime-package 放入Sublime 3 包文件夹。它现在将出现在 sublime 语法高亮菜单中。

根据 ST3 文档,我现在似乎找不到此手动方法的替代方法,但它会起作用。

Package control 可能会在幕后做你需要的一切

【讨论】:

  • +1;谢谢,唯一对我有用的解决方案-在所有文档和与 tmLanguage 项目的各种链接(声称与 sublime3 兼容)中都很荒谬文件分发。到处都是崇高的分散包目录并没有帮助。所有这些都是为了测试一个我还不知道是否要使用的编辑器,更不用说通过我的防火墙了!
【解决方案2】:

问题似乎解决了。请参考这个fix

为什么我在 ST3 中的语法设置 (.tmLanguage) 出现问题?

因为它完全令人困惑,并且从 ST3 文档中不清楚该文件应位于何处。 (即使它说如果在Installed Packages 中找不到文件,则在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)。

【讨论】:

  • 是的,这是一条“不存在的路径”,但这样做(在我看来)是为了保持 ST2 和 ST3 之间的一些兼容性。文档确实提供了示例路径。来自 API 文档 Changes the syntax used by the view. syntax_file should be a name along the lines of Packages/Python/Python.tmLanguage. 它还显示了如何找到当前文件的语法。如果您这样做了,您也会看到相同类型的路径,即使该文件不在 Packages 文件夹中。很高兴你有一些工作。默认包不在 Installed Packages 或 Packages 文件夹中
  • @skuroda 你知道默认包在 ST3 中的位置吗?
【解决方案3】:

您需要 tmLanguage 文件的内容吗?如果是这样,您不应该直接访问它。相反,您应该使用sublime.load_resource(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

【讨论】:

  • 插件打包到存档时,它仅在 ST3 中不起作用。在 ST2 上按预期工作,手动安装时在 ST3 上工作。请看看这个file。我应该为 ST3 使用什么路径?如果 robot.tmLanguage 文件在包存档中并且我无法参考它来阅读它,我该如何将它放在 Packages/Robot Framework Assistant/robot.tmLanguage 中?
  • 你能澄清你想要做什么吗?由于它是一个 tmLanguage 文件,我假设您正在尝试为某些视图设置语法。我已经包含了有关如何执行此操作的说明。您不需要整个路径来设置语法(事实上,您在 ST2 中也不需要它)。
猜你喜欢
  • 1970-01-01
  • 2016-09-18
  • 2018-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-06
  • 2014-05-17
相关资源
最近更新 更多