2013-11-02 21 views
-1

我为sublme text 3开发插件。我需要获得最接近游标字的代码。离光标字最近的代码

例如,如果我得到的游标,图像...

how to get nearest to cursor word

...这个插件应该返回字run

....或者至少数10对应位置char u in line 4

然后我就可以从号码得到word run 10和文本行4

但现在我只能得到linetext上,我得到了光标:

import sublime, sublime_plugin 

class line_nearest_to_cursor_wordCommand(sublime_plugin.WindowCommand): 
    def run(self):    
     print('line_nearest_to_cursor_word called') 
     view = self.window.active_view() 
     region1 = view.sel()[0] 
     line = view.line(region1) 
     linetext = view.substr(line) 
     print(linetext) 

当我打印region1它给出了两个数字,但他们是奇怪的:

print (region1) # prints (113, 113), but 113 is not position of char "u" in line " def run(self):" 

所以问题以书面形式记录方法getXcoordPositionOnLine ...

xCoord = getXcoordPositionOnLine(region1) 
    print xCoord 

..这会给我一个光标在线的位置。

或者也许有更好的解决方案。

回答

2

昨天我回复了a similar question。看看这些文档,如果你在昨天的回答中简单地用word代替line,我相信你会得到你正在寻找的东西。

view = self.window.active_view() 
word = view.word(view.sel()[0]) 
wordtext = view.substr(word) 

正如@skuroda所示,通过查看文档可以轻松解决这个问题。这并不难理解。

1

虽然我想格式化还有些问题,但请尝试查看API文档。通过浏览文档可能会回答大量您的问题。这些可用于ST3的here。有鉴于此,请参阅文档中的view#word(point)view#word(region)

1

这里就是我想region1(113, 113)手段,你如何能够使用它的API来获取你想要的东西,或者至少为你提供足够的信息,以便能够写东西像getXcoordPositionOnLine()功能自己。

API documentation说,一个sublime.Region具有两个属性,ab,它代表所述第一和第二端部区域。我相信这些只是从文本缓冲区开始的两个整数偏移量,在这种情况下它们相同的原因是因为该区域是空的(即没有字符实际上被它选中,因为它们是相同的值,这意味着它实际上是游标的位置)。

为了说明下面是在另一个编辑器中的问题中显示的代码片段的屏幕截图,其中我从中选择了从字面上的“r”和“u”之间的所有文本“跑”。该编辑器在右下角附近有一个指示符,显示当前选中的字节/行的总数。请注意,这是显示113/4 - 意思是“r”是文本缓冲区中的字符,因为它前面有3个新行字符,所以它的行号是和。

screenshot of the code snippet shown another editor sublime.Region S还拥有XPOS属性,它听起来就像是表示由最后换行符的偏移量的字符(并会在这种情况下,我想有点像10)。进一步阅读文档使我怀疑你可能能够从region1代表光标所代表的最接近单词view.substr(view.word(region1)返回的值。

+0

谢谢澄清 –