awful.prompt.run: handle command return value from hooks

This commit is contained in:
Daniel Hahler 2015-09-27 18:01:18 +02:00
parent b3c7efd5e4
commit ba0d8e38e5
1 changed files with 14 additions and 4 deletions

View File

@ -228,6 +228,9 @@ end
-- @tparam[opt] table args.hooks The "hooks" argument uses a syntax similar to -- @tparam[opt] table args.hooks The "hooks" argument uses a syntax similar to
-- `awful.key`. It will call a function for the matching modifiers + key. -- `awful.key`. It will call a function for the matching modifiers + key.
-- It receives the command (widget text/input) as an argument. -- It receives the command (widget text/input) as an argument.
-- If the callback returns a command, this will be passed to the
-- `exe_callback`, otherwise nothing gets executed by default, and the hook
-- needs to handle it.
-- hooks = { -- hooks = {
-- -- Apply startup notification properties with Shift-Return. -- -- Apply startup notification properties with Shift-Return.
-- {{"Shift" }, "Return", function(command) -- {{"Shift" }, "Return", function(command)
@ -238,10 +241,8 @@ end
-- -- with ":" in a terminal. -- -- with ":" in a terminal.
-- {{}, "Return", function(command) -- {{}, "Return", function(command)
-- if command:sub(1,1) == ":" then -- if command:sub(1,1) == ":" then
-- command = terminal .. ' -e ' .. command:sub(2) -- return terminal .. ' -e ' .. command:sub(2)
-- end -- end
-- mypromptbox[awful.screen.focused()]:spawn_and_handle_error(
-- command)
-- end} -- end}
-- } -- }
-- @param textbox The textbox to use for the prompt. -- @param textbox The textbox to use for the prompt.
@ -365,7 +366,16 @@ function prompt.run(args, textbox, exe_callback, completion_callback, history_pa
match = match and mod[v2] match = match and mod[v2]
end end
if match or #modifiers == 0 then if match or #modifiers == 0 then
exec(v[3]) local cb
local ret = v[3](command)
if ret then
command = ret
cb = exe_callback
else
-- No callback.
cb = function() end
end
exec(cb)
return return
end end
end end