Python 获取升华文本3插件中的文件语法选择
我有一个非常小的插件,可以从use语句开始打开perl文件模块。它实际上是基本的,它只是将“::”替换为“/”,然后如果文件存在于PERL5LIB中指定的路径中,它就会打开它。 我希望它仅在选择open file语法为perl时运行。 有没有API来获取这些信息? 这是我现在拥有的代码:Python 获取升华文本3插件中的文件语法选择,python,sublimetext3,sublimetext,sublime-text-plugin,Python,Sublimetext3,Sublimetext,Sublime Text Plugin,我有一个非常小的插件,可以从use语句开始打开perl文件模块。它实际上是基本的,它只是将“::”替换为“/”,然后如果文件存在于PERL5LIB中指定的路径中,它就会打开它。 我希望它仅在选择open file语法为perl时运行。 有没有API来获取这些信息? 这是我现在拥有的代码: class OpenPerlModule(sublime_plugin.TextCommand): def run(self, edit=None, url=None): perl_fi
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中引入的新语法,除了Allen Bargi的回答中描述的
self.view.settings().get(“syntax”)
之外,您还可以获取当前光标位置的范围,并检查其中的source.perl
:
import sublime_plugin
class FindScopeCommand(sublime_plugin.TextCommand):
def run(self, edit):
# `sel()` returns a list of Regions that are selected.
# Grab the beginning point of the first Region in the list.
first_point = self.view.sel()[0].a
# now, get the full scope name for that point
scope = self.view.scope_name(first_point)
if "source.perl" in scope:
print("You're using Perl. Yay!")
else:
print("Why don't you love Perl?")
如果语法为“Perl”:
将是一个更容易的测试,并将涵盖用户安装了第三方Perl语法的情况。谢谢,我将此标记为答案:-)我已经查找了一些参考指南,但大多数都缺乏一种或另一种方法,也许你也有一个关于在哪里找到这类信息的建议?这也是一个有效的解决方案,但要小心,你可能有嵌套的语法。这一切都取决于您的用例。例如,您可能在markdown文档中嵌套了perl代码(MarkdownEditing插件和我的旧击倒插件都添加了source.perl范围以突出显示嵌套的代码)。