--[[--------------------------------------------------
goto_line.lua
Author: mozers™
version: 1.0
------------------------------------------------------
При переходе на букмарк, текущее положение курсора на экране сохраняется
для чего текст прокручивается на нужное количество строк.
Теперь вам не придется искать курсор по всему экрану!
(Реализация Issue 21 http://code.google.com/p/scite-ru/issues/detail?id=21)

  Connection:
   In file SciTEStartup.lua add a line:
      dofile (props["SciteDefaultHome"].."\\tools\\goto_line.lua")
--]]--------------------------------------------------

local function GotoLine(line)
	local linecur = editor:LineFromPosition(editor.CurrentPos)
	local linecur_onscreen = linecur - editor.FirstVisibleLine
	editor:GotoLine(line)
	local line_onscreen = line - editor.FirstVisibleLine
	if line_onscreen ~= linecur_onscreen then
		editor:LineScroll(0, line_onscreen - linecur_onscreen)
	end
	return 0
end

-- Add user event handler OnSendEditor
local old_OnSendEditor = OnSendEditor
function OnSendEditor(id_msg, wp, lp)
	local result
	if old_OnSendEditor then result = old_OnSendEditor(id_msg, wp, lp) end
	if id_msg == SCI_GOTOLINE then
		GotoLine(wp)
	end
	return result
end