import sublime, sublime_plugin class PromptGotoLineCommand(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 GotoLineCommand(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)