diff --git a/automation/autoload/select-overlaps.moon b/automation/autoload/select-overlaps.moon index c561a19b2..b9b2a60a8 100644 --- a/automation/autoload/select-overlaps.moon +++ b/automation/autoload/select-overlaps.moon @@ -19,13 +19,22 @@ export script_description = tr"Select lines which begin while another non-commen export script_author = "Thomas Goyne" export script_version = "2" -select_overlaps = (subs) -> - -- filter subtitles lines to just dialogue lines and sort them by time - dialogue = {} - for i, line in ipairs subs - if line.class == "dialogue" - line.i = i - table.insert dialogue, line +select_overlaps = (subs, selection) -> + is_dialogue = (line) -> + line.class == "dialogue" and not line.comment + + -- Attach the original index to each line so that we know what to update in + -- the subs object after sorting by time + prepare = (i, line) -> + line.i = i + line + + -- Filter subtitles lines to just dialogue lines and sort them by time + dialogue = if #selection <= 1 + [prepare i, line for i, line in ipairs subs when is_dialogue line] + else + [prepare i, subs[i] for i in *selection when is_dialogue subs[i]] + table.sort dialogue, (a,b) -> a.start_time < b.start_time or (a.start_time == b.start_time and a.i < b.i) @@ -36,6 +45,7 @@ select_overlaps = (subs) -> end_time = line.end_time else table.insert overlaps, line.i + overlaps aegisub.register_macro script_name, script_description, select_overlaps