获取sublime text 3插件中的文件语法选择
Get file syntax selection in sublime text 3 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
(OS 是 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?")
我有一个非常小的插件,可以从 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
(OS 是 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?")