用Ruby编程TextMate。TextMate.go_to存在问题。

3
我正在修改TextMate bundle,尽管我是Ruby的初学者。我试图解决的问题是在命令输出后将插入符号移动到某个位置的问题。
基本上发生的情况是这样的:我按下一个键组合触发一个命令来过滤文档,并在相关位置插入文本,然后用新的过滤文本替换文档退出。
接下来我想要发生的是插入符号回到原来的位置。当我找到TextMate.go_to函数时,我非常高兴,但我只能让它部分起作用。该函数: positionY = ENV['TM_LINE_NUMBER'] positionX = ENV['TM_LINE_INDEX'] ... TextMate.go_to :line => positionY, :column => positionX; #column no worky
我可以让插入符号到达正确的行,但列参数不起作用。我尝试调整它们甚至只使用列参数来执行函数,但没有成功。我还尝试了一个硬编码的整数,但是positionX参数打印出正确的行索引,所以我怀疑那里没有任何问题。

这篇是我找到的唯一关于这种方法的文档,但我看了一下textmate.rb文件,对我这个无经验的人来说,似乎我在正确使用它。

我知道这可以通过宏来实现,但如果可能的话,我想避免使用宏。 我也知道,如果选择“插入片段”,则可以使用标记,但那样我必须先清除文档,并且我还没有真正弄清楚如何在不使用“替换文档”选项的情况下完成此操作。 有人能帮忙吗?

1个回答

4

让我们来看一下绑定的源代码:

def go_to(options = {})
  default_line = options.has_key?(:file) ? 1 : ENV['TM_LINE_NUMBER']
  options = {:file => ENV['TM_FILEPATH'], :line => default_line, :column => 1}.merge(options)
  if options[:file]
    `open "txmt://open?url=file://#{e_url options[:file]}&line=#{options[:line]}&column=#{options[:column]}"`
  else
    `open "txmt://open?line=#{options[:line]}&column=#{options[:column]}"`
  end
end

相当于一种hack的方式,绑定设置了一个txmt:// URL并在shell中调用open。因此,首先要做的是构建一个打开的URL,并在终端/浏览器中输入它,以查看TextMate是否尊重列参数。如果有效,则可能是由于您版本的Textmate.go_to实现存在错误。

似乎就是这样了,是的。它可以从终端和另一个 TM 命令正常打开。看起来脚本中有些东西阻止了列的正确设置。我需要进行调查。 - Martin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接