У меня есть плагин для sublime text 3
, который позволяет мне перемещать курсор на строку по ее номеру:
import sublime, sublime_plugin
class prompt_goto_lineCommand(sublime_plugin.WindowCommand):
def run(self):
self.window.show_input_panel("Goto Line:", "", self.on_done, None, None)
pass
def on_done(self, text):
try:
line = int(text)
if self.window.active_view():
self.window.active_view().run_command("goto_line", {"line": line} )
except ValueError:
pass
class go_to_lineCommand(sublime_plugin.TextCommand):
def run(self, edit, line):
# Convert from 1 based to a 0 based line number
line = int(line) - 1
# Negative line numbers count from the end of the buffer
if line < 0:
lines, _ = self.view.rowcol(self.view.size())
line = lines + line + 1
pt = self.view.text_point(line, 0)
self.view.sel().clear()
self.view.sel().add(sublime.Region(pt))
self.view.show(pt)
Я хочу улучшить его, чтобы я мог перемещать курсор в первую строку, содержащую указанную строку. Это похоже на поиск по файлу: например, если передать ему строку "class go_to_lineCommand"
, плагин должен переместить курсор в строку 17:
и, возможно, выберите строку class go_to_lineCommand
.
Проблема сводится к поиску regionWithGivenString
, а потом я могу его выбрать:
self.view.sel().add(regionWithGivenString)
Но не знаю, как получить regionWithGivenString
.
Я попытался
- найти в Google: sub nofollow плагин найти и выделить текст
- проверьте api
Но все равно безрезультатно.
iced coffee script
:a = (require './c/d/e/file.js').doMethod()
. Я перемещаю курсор на эту строку, нажимаю короткую клавишу, и этот великолепный плагин открывает файлfile.js
и выбирает для меня методdoMethod
. - person Maxim Yefremov   schedule 01.11.2013view#find
иview#find_all
. Они возвращают регион и массив регионов соответственно. Конечно, конечный результат будет таким же, как у плагина, предоставленного lhuang. - person skuroda   schedule 02.11.2013