我有一个非常小的插件,可以从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)
答案 0 :(得分:2)
以下是您正在寻找的代码段
self.view.settings().get("syntax")
您应该检查它是否是与Perl相关的语法。我建议这样的事情:
syntax = self.view.settings().get("syntax")
syntax.endswith("Perl.tmLanguage") or syntax.endswith("Perl.sublime-syntax")
第二个或子句是为了涵盖> = 3080
中引入的新语法答案 1 :(得分:2)
除了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?")