awful.prompt: new arg 'selectall' in add()

If set along with 'text' (prefilled content) it will position the cursor at
the beginning of the line and and on text input (and not control keys,
arrows, etc.) will overwrite the prefilled content with the new input.

Signed-off-by: koniu <gkusnierz@gmail.com>
This commit is contained in:
koniu 2008-11-19 10:44:27 +00:00 committed by Julien Danjou
parent 65d5e29141
commit b4f16ff649
1 changed files with 3 additions and 2 deletions

View File

@ -121,7 +121,7 @@ local function prompt_text_with_cursor(text, text_color, cursor_color, cursor_po
end end
--- Run a prompt in a box. --- Run a prompt in a box.
-- @param args A table with optional arguments: fg_cursor, bg_cursor, ul_cursor, prompt. -- @param args A table with optional arguments: fg_cursor, bg_cursor, ul_cursor, prompt, text, selectall .
-- @param textbox The textbox to use for the prompt. -- @param textbox The textbox to use for the prompt.
-- @param exe_callback The callback function to call with command as argument when finished. -- @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. -- @param completion_callback The callback function to call to get completion.
@ -143,7 +143,7 @@ function run(args, textbox, exe_callback, completion_callback, history_path, his
history_check_load(history_path, history_max) history_check_load(history_path, history_max)
local history_index = history_items(history_path) + 1 local history_index = history_items(history_path) + 1
-- The cursor position -- The cursor position
local cur_pos = text:len() + 1 local cur_pos = (args.selectall and 1) or text:len() + 1
-- The completion element to use on completion request. -- The completion element to use on completion request.
local ncomp = 1 local ncomp = 1
if not textbox or not exe_callback then if not textbox or not exe_callback then
@ -279,6 +279,7 @@ function run(args, textbox, exe_callback, completion_callback, history_path, his
-- len() is UTF-8 aware but #key is not, -- len() is UTF-8 aware but #key is not,
-- so check that we have one UTF-8 char but advance the cursor of # position -- so check that we have one UTF-8 char but advance the cursor of # position
if key:len() == 1 then if key:len() == 1 then
if args.selectall and cur_pos == 1 then command = "" end
command = command:sub(1, cur_pos - 1) .. key .. command:sub(cur_pos) command = command:sub(1, cur_pos - 1) .. key .. command:sub(cur_pos)
cur_pos = cur_pos + #key cur_pos = cur_pos + #key
end end