awful.prompt: add 'autoexec' argument
If set the prompt will execute the command upon completion which returns only one match. Signed-off-by: koniu <gkusnierz@gmail.com> Signed-off-by: Uli Schlachter <psychon@znc.in>
This commit is contained in:
parent
9e79d18747
commit
595b344156
|
@ -143,7 +143,7 @@ local function prompt_text_with_cursor(args)
|
||||||
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, text, selectall, font.
|
-- @param args A table with optional arguments: fg_cursor, bg_cursor, ul_cursor, prompt, text, selectall, font, autoexec.
|
||||||
-- @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.
|
||||||
|
@ -178,6 +178,14 @@ function run(args, textbox, exe_callback, completion_callback, history_path, his
|
||||||
cursor_pos = cur_pos, cursor_ul = cur_ul, selectall = selectall,
|
cursor_pos = cur_pos, cursor_ul = cur_ul, selectall = selectall,
|
||||||
font = font, prompt = prettyprompt }
|
font = font, prompt = prettyprompt }
|
||||||
|
|
||||||
|
local exec = function()
|
||||||
|
textbox.text = ""
|
||||||
|
history_add(history_path, command)
|
||||||
|
capi.keygrabber.stop()
|
||||||
|
exe_callback(command)
|
||||||
|
if done_callback then done_callback() end
|
||||||
|
end
|
||||||
|
|
||||||
capi.keygrabber.run(
|
capi.keygrabber.run(
|
||||||
function (modifiers, key, event)
|
function (modifiers, key, event)
|
||||||
if event ~= "press" then return true end
|
if event ~= "press" then return true end
|
||||||
|
@ -193,11 +201,7 @@ function run(args, textbox, exe_callback, completion_callback, history_path, his
|
||||||
elseif (mod.Control and (key == "j" or key == "m"))
|
elseif (mod.Control and (key == "j" or key == "m"))
|
||||||
or (not mod.Control and key == "Return")
|
or (not mod.Control and key == "Return")
|
||||||
or (not mod.Control and key == "KP_Enter") then
|
or (not mod.Control and key == "KP_Enter") then
|
||||||
textbox.text = ""
|
exec()
|
||||||
history_add(history_path, command)
|
|
||||||
capi.keygrabber.stop()
|
|
||||||
exe_callback(command)
|
|
||||||
if done_callback then done_callback() end
|
|
||||||
-- We already unregistered ourselves so we don't want to return
|
-- We already unregistered ourselves so we don't want to return
|
||||||
-- true, otherwise we may unregister someone else.
|
-- true, otherwise we may unregister someone else.
|
||||||
return true
|
return true
|
||||||
|
@ -269,9 +273,15 @@ function run(args, textbox, exe_callback, completion_callback, history_path, his
|
||||||
command_before_comp = command
|
command_before_comp = command
|
||||||
cur_pos_before_comp = cur_pos
|
cur_pos_before_comp = cur_pos
|
||||||
end
|
end
|
||||||
command, cur_pos = completion_callback(command_before_comp, cur_pos_before_comp, ncomp)
|
local matches
|
||||||
|
command, cur_pos, matches = completion_callback(command_before_comp, cur_pos_before_comp, ncomp)
|
||||||
ncomp = ncomp + 1
|
ncomp = ncomp + 1
|
||||||
key = ""
|
key = ""
|
||||||
|
-- execute if only one match found and autoexec flag set
|
||||||
|
if matches and #matches == 1 and args.autoexec then
|
||||||
|
exec()
|
||||||
|
return true
|
||||||
|
end
|
||||||
else
|
else
|
||||||
ncomp = 1
|
ncomp = 1
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue