From 4c835b5ef90ec8b44a401bab628ec3021022dd46 Mon Sep 17 00:00:00 2001 From: koniu Date: Mon, 31 Aug 2009 20:34:46 +0100 Subject: [PATCH] awful.prompt: add 'font' to run() args Also changes prompt_text_with_cursor() to take a table instead of list of arguments allowing to incorporate font setting and 'prettyprompt' settings into the function. Signed-off-by: koniu Signed-off-by: Julien Danjou --- lib/awful/prompt.lua.in | 59 +++++++++++++++++++++++++++++++++---------------- 1 file changed, 40 insertions(+), 19 deletions(-) diff --git a/lib/awful/prompt.lua.in b/lib/awful/prompt.lua.in index 9fdac86e..1d20f106 100644 --- a/lib/awful/prompt.lua.in +++ b/lib/awful/prompt.lua.in @@ -104,35 +104,45 @@ end -- Draw the prompt text with a cursor. +-- @param args The table of arguments. -- @param text The text. +-- @param font The font. +-- @param prompt The text prefix. -- @param text_color The text color. -- @param cursor_color The cursor color. -- @param cursor_pos The cursor position. --- @param cursor_pos The cursor underline style. +-- @param cursor_ul The cursor underline style. -- @param selectall If true cursor is rendered on the entire text. -local function prompt_text_with_cursor(text, text_color, cursor_color, cursor_pos, cursor_ul, selectall) - local char, spacer, text_start, text_end - if not text then text = "" end - if #text < cursor_pos then +local function prompt_text_with_cursor(args) + local char, spacer, text_start, text_end, ret + local text = args.text or "" + local prompt = args.prompt or "" + local underline = args.cursor_ul or "none" + + if args.selectall then + if #text == 0 then char = " " else char = util.escape(text) end + spacer = " " + text_start = "" + text_end = "" + elseif #text < args.cursor_pos then char = " " spacer = "" + text_start = util.escape(text) + text_end = "" else - char = util.escape(text:sub(cursor_pos, cursor_pos)) + char = util.escape(text:sub(args.cursor_pos, args.cursor_pos)) spacer = " " + text_start = util.escape(text:sub(1, args.cursor_pos - 1)) + text_end = util.escape(text:sub(args.cursor_pos + 1)) end - text_start = util.escape(text:sub(1, cursor_pos - 1)) - text_end = util.escape(text:sub(cursor_pos + 1)) - if selectall then - char = text_start .. char .. text_end - text_start = "" - text_end = "" - end - local underline = cursor_ul or "none" - return text_start .. "" .. char .. "" .. text_end .. spacer + + ret = prompt .. text_start .. "" .. char .. "" .. text_end .. spacer + if args.font then ret = "" .. ret .. "" end + return ret end --- Run a prompt in a box. --- @param args A table with optional arguments: fg_cursor, bg_cursor, ul_cursor, prompt, text, selectall . +-- @param args A table with optional arguments: fg_cursor, bg_cursor, ul_cursor, prompt, text, selectall, font. -- @param textbox The textbox to use for the prompt. -- @param exe_callback The callback function to call with command as argument when finished. -- @param completion_callback The callback function to call to get completion. @@ -150,6 +160,7 @@ function run(args, textbox, exe_callback, completion_callback, history_path, his local cur_col = args.bg_cursor or theme.bg_focus or "white" local cur_ul = args.ul_cursor local text = args.text or "" + local font = args.font or theme.font history_check_load(history_path, history_max) local history_index = history_items(history_path) + 1 @@ -160,7 +171,11 @@ function run(args, textbox, exe_callback, completion_callback, history_path, his if not textbox or not exe_callback then return end - textbox.text = prettyprompt .. prompt_text_with_cursor(text, inv_col, cur_col, cur_pos, cur_ul, args.selectall) + textbox.text = prompt_text_with_cursor{ + text = text, text_color = inv_col, cursor_color = cur_col, + cursor_pos = cur_pos, cursor_ul = cur_ul, selectall = args.selectall, + font = font, prompt = prettyprompt } + capi.keygrabber.run( function (modifiers, key, event) if event ~= "press" then return true end @@ -240,7 +255,10 @@ function run(args, textbox, exe_callback, completion_callback, history_path, his if ncomp == 1 then return true end if ncomp == 2 then command = command_before_comp - textbox.text = prettyprompt .. prompt_text_with_cursor(command_before_comp, inv_col, cur_col, cur_pos, args.selectall) + textbox.text = prompt_text_with_cursor{ + text = command_before_comp, text_color = inv_col, cursor_color = cur_col, + cursor_pos = cur_pos, cursor_ul = cur_ul, selectall = args.selectall, + font = font, prompt = prettyprompt } return true end @@ -321,7 +339,10 @@ function run(args, textbox, exe_callback, completion_callback, history_path, his end -- Update textbox - textbox.text = prettyprompt .. prompt_text_with_cursor(command, inv_col, cur_col, cur_pos, cur_ul, args.selectall) + textbox.text = prompt_text_with_cursor{ + text = command, text_color = inv_col, cursor_color = cur_col, + cursor_pos = cur_pos, cursor_ul = cur_ul, selectall = args.selectall, + font = font, prompt = prettyprompt } return true end) -- 2.11.4.GIT