Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release Move cursor to equivalent position inside next similarly named Region v1.00 #1470

Merged
merged 1 commit into from
Dec 11, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
-- @description Move cursor to equivalent position inside next similarly named Region
-- @author amagalma
-- @version 1.00
-- @donation https://www.paypal.me/amagalma

local cur_pos = reaper.GetCursorPosition()
local cur_region, _ = {}
_, cur_region.idx = reaper.GetLastMarkerAndCurRegion( 0, cur_pos )
if cur_region.idx == -1 then return end
_, _, cur_region.start, _, cur_region.name = reaper.EnumProjectMarkers( cur_region.idx )
local cur_pos_in_Region = cur_pos - cur_region.start


local function KeepWords(str)
local t, c = {}, 0
for word in str:gmatch("%w+") do
if not tonumber(word) then
c = c + 1
t[c] = word
end
end
return table.concat(t)
end


local function compareStrings(A, B)
if A == B then
return true
end

local numA, numB = tonumber(A), tonumber(B)
if numA and numB then
return numB >= numA
end

return KeepWords(A) == KeepWords(B)
end


local i = cur_region.idx+1
while true do
local retval, isrgn, pos, rgnend, name = reaper.EnumProjectMarkers( i )
if retval == 0 then break end
if isrgn then
if compareStrings(cur_region.name, name) then
local wanted_pos = pos + cur_pos_in_Region
if wanted_pos <= rgnend then
reaper.SetEditCurPos(pos + cur_pos_in_Region, true, true)
break
end
end
end
i = i + 1
end
Loading