使用“ open_file”命令以特定的行号打开文件

时间:2019-06-15 15:10:48

标签: sublimetext3 sublime-text-plugin

我的问题类似于SublimeHQ论坛中的thread

我在CultureInfo ci = new CultureInfo("fa-Ir"); dataGridView1.Columns[5].DefaultCellStyle.FormatProvider = ci; dataGridView1.Columns[5].DefaultCellStyle.Format = "dd/MM/yyyy"; dataGridView1.Columns[4].DefaultCellStyle.FormatProvider = ci; dataGridView1.Columns[4].DefaultCellStyle.Format = "dd/MM/yyyy"; 文件中添加了一些条目以打开文件,例如

Default.sublime-commands

它们工作正常,但我希望其中一个打开特定的行号,但找不到正确的符号。

这不会在第123行打开文件,而是打开文件路径:{ "caption": "File Open: File Name", "command": "open_file", "args": {"file": "/path/to/file.ext"} },

/path/to/file.ext:123

他们建议:

尝试将{ "caption": "File Open: File Name", "command": "open_file", "args": {"file": "/path/to/file.ext:123"} }, 添加到参数列表。 API open_file需要具有标志“flags” : 1才能从文件名中提取行/列,也许是相同的。

ENCODED_POSITION

但这也失败了。

{ "caption": "File Open: File Name", "command": "open_file", "args": {"file": "/path/to/file.ext:123", "flags":1} },

sublime.py

api_reference

def open_file(self, fname, flags=0, group=-1):

但是在open_file(file_name, <flags>) 键中,我们使用args而不是filefile_name

在哪里注明?

如何在不创建新插件的情况下执行此操作?

1 个答案:

答案 0 :(得分:2)

open_file命令确实不处理文件名末尾带有编码位置的文件名。该特定命令是在核心而不是插件中实现的,这意味着无法自省其参数,并且如果尝试使用不正确的参数调用它,也不会产生任何类型的错误。因此,无法确定是否存在某种方式来调用编码的位置信息,而无需手动尝试使用参数和值来查看其操作或要求开发人员提供此类信息(或在添加时添加)。不在那里)。

API参考适用于实际的插件;它不会以任何直接方式与可能正好存在相同名称的任何命令关联。您在实际的API定义中看到的参数通常与所记录的不同。

这样做的一个原因是API方法通常是类方法,这意味着在声明它们时不需要隐式self参数,而在调用它们时就不需要它们。另外,由于清楚,历史原因等原因,自变量通常具有与实际名称不同的书面名称。一个例子是file_namefname之间的上述区别;除非您使用关键字参数调用该方法,否则这种区别并不重要。

有时候,API方法的参数也没有记录,这可能有多种原因。上面的group参数就是一个例子,它确定文件在哪个文件组中打开。 API允许它,但是除非您查看适当的文件,否则您不知道可以使用它。

这是一条漫长的说法,据我所知,没有办法解决这个问题。您链接的论坛帖子中的一个就是一个例子。一个比较简单的例子是:

import sublime
import sublime_plugin


class OpenFileEncodedCommand(sublime_plugin.WindowCommand):
    def run(self, file):
        self.window.open_file(file, sublime.ENCODED_POSITION)

这实现了open_file_encoded命令,该命令允许您将:row:row:col添加到提供的文件名中。这与上面链接的插件稍有不同,它需要显式的rowcol参数来指定位置。

在实践中,一个取决于另一个,取决于您要如何指定位置信息。