aboutsummaryrefslogtreecommitdiffstats
path: root/em-dash.lua
blob: c52aa1bb8e9316a2c5a270855e68c261f2f852fb (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
script_name = "Em-dash"
script_description = "I do not have an em-dash key on my keyboard"
script_author = "garret"
script_version = "2.1.0"

local em = "—"

local function have_cursor_funcs()
	return aegisub.gui and aegisub.gui.get_cursor and aegisub.gui.set_cursor
end

local function insert(sub, sel, act)
	local line  = sub[act]
	local pos   = aegisub.gui.get_cursor()
	local start = string.sub(line.text, 1, pos - 1)
	local end_  = string.sub(line.text, pos)
	line.text = start .. em .. end_
	aegisub.gui.set_cursor(pos + 1)
	sub[act] = line
end

local function append(sub, sel)
	for si, li in ipairs(sel) do
		local line = sub[li]
		if string.sub(line.text, -1) == "-" then
			line.text = line.text:sub(1, #line.text - 1)
		end
			line.text = line.text..em
		sub[li] = line
	end
	aegisub.set_undo_point(script_name)
end

local function replace(sub, sel)
	for si, li in ipairs(sel) do
		local line = sub[li]
		local text = sub[li].text
		text = text:gsub("%-%-",em)
		line.text=text
		sub[li] = line
	end
	aegisub.set_undo_point(script_name)
end

aegisub.register_macro(script_name.."/Append", "Appends an Em-dash to the selected line(s)", append)
aegisub.register_macro(script_name.."/Replace", "Replaces -- with "..em, replace)
if have_cursor_funcs() then
	aegisub.register_macro(script_name.."/Insert", "Inserts an em-dash at the cursor position", insert)
end