summaryrefslogtreecommitdiff
path: root/osd.lua
diff options
context:
space:
mode:
authorDavid Vazgenovich Shakaryan <dvshakaryan@gmail.com>2026-02-04 23:06:15 -0800
committerDavid Vazgenovich Shakaryan <dvshakaryan@gmail.com>2026-02-04 23:06:15 -0800
commitca004728498a71afd401cf6b8cdc949742b7ea0f (patch)
tree64a08975359c0116b2be1bcd2a23b55ff20d1e68 /osd.lua
parent2fbe621881f0ac3d7f74d117bc7f6de404a9a882 (diff)
downloadmpv-iptv-menu-ca004728498a71afd401cf6b8cdc949742b7ea0f.tar.gz
mpv-iptv-menu-ca004728498a71afd401cf6b8cdc949742b7ea0f.tar.xz
allow filtering search results by type
Diffstat (limited to 'osd.lua')
-rw-r--r--osd.lua36
1 files changed, 28 insertions, 8 deletions
diff --git a/osd.lua b/osd.lua
index a793286..348f0d2 100644
--- a/osd.lua
+++ b/osd.lua
@@ -159,18 +159,38 @@ function mt:menu_title(menu)
local col = menu.search_active and colour.selected or colour.title
if menu.type == 'search' then
- str = str:gsub('<text>', asscape(menu.search_text))
+ local start = #menu.search_text - #menu.search_term
+ local prefix = menu.search_text:sub(1, start)
+ local term = menu.search_text:sub(start + 1)
+
+ if str:find('<text>', 1, true) then
+ str = str:gsub('<text>', function()
+ return colour.search_prefix ..
+ asscape(prefix) .. col .. asscape(term)
+ end)
+ end
if str:find('<text_with_cursor>', 1, true) then
- str = str:gsub('<text_with_cursor>',
- asscape(menu.search_text:sub(
- 1, menu.search_cursor - 1)) ..
- cursor_glyph ..
- asscape(menu.search_text:sub(
- menu.search_cursor)))
+ local idx = menu.search_cursor
+ if idx <= start then
+ prefix = asscape(prefix:sub(1, idx - 1)) ..
+ col .. cursor_glyph ..
+ colour.search_prefix ..
+ asscape(prefix:sub(idx))
+ term = asscape(term)
+ else
+ idx = idx - start
+ prefix = asscape(prefix)
+ term = asscape(term:sub(1, idx - 1)) ..
+ cursor_glyph .. asscape(term:sub(idx))
+ end
+ str = str:gsub('<text_with_cursor>', function()
+ return colour.search_prefix .. prefix .. col ..
+ term
+ end)
end
- str = str:gsub('<colour.info>', colour.info)
+ str = str:gsub('<colour%.info>', colour.info)
str = str:gsub('<num_matches>', #menu.options)
str = str:gsub('<num_total>', #menu.search_options)
end