python - 获取sublime text 3插件中的文件语法选择

标签 python sublimetext3 sublimetext sublime-text-plugin

我有一个非常小的插件,可以从 use 语句开始打开一个 perl 文件模块。它非常基本,只是用“/”替换“::”,然后如果文件存在于 PERL5LIB 中指定的路径之一,它会打开它。 我希望它仅在打开文件语法被选为 perl 时运行。 是否有任何 API 可以获取该信息? 这是我现在的代码:

class OpenPerlModule(sublime_plugin.TextCommand):
    def run(self, edit=None, url=None):
        perl_file = url.replace("::", "/")
        perl_dirs = os.environ.get('PERL5LIB')
        for perl_dir in perl_dirs.split(':'):
            if (os.path.exists(perl_dir + '/' + perl_file + '.pm')):
                self.view.window().open_file(perl_dir + '/' + perl_file + '.pm')
                return

(操作系统是Ubuntu)

最佳答案

这是您要查找的代码片段

self.view.settings().get("syntax")

您应该检查它是否与 Perl 相关的语法。我建议这样:

syntax = self.view.settings().get("syntax")
syntax.endswith("Perl.tmLanguage") or syntax.endswith("Perl.sublime-syntax")

第二个 or 子句用于覆盖 >=3080 中引入的新语法

关于python - 获取sublime text 3插件中的文件语法选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32740855/

相关文章:

python - 初学者需要有经验的建议来做出重要的选择

c++ - GCC编译编译64位

python - 阻止 Sublime 插件 TextCommand 在控制台上运行?

javascript - Sublime Text : Different Snippet for JavaScript ES5 vs ES6?

linux - Sublime text 在下面的行上添加另一个插入符号

使用 lxml、xpath 和 css 选择器的 Python 脚本也返回空列表

python - 我如何编写 if 条件以在 Python 中跳出 for 循环

python - Python 如何在一行中分配多个变量?

sublimetext3 - Sublime Text 3 的自定义折叠

javascript - BabylonJS Intellisense 适用于 Sublime Text?