awful.util.deprecate: display deprecations only once

This remembers displayed tracebacks and skips them if they were
displayed already.
This commit is contained in:
Daniel Hahler 2015-02-09 20:23:03 +01:00
parent 3a160c9363
commit 8df51d0b8c
1 changed files with 9 additions and 1 deletions

View File

@ -30,13 +30,21 @@ util.table = {}
util.shell = os.getenv("SHELL") or "/bin/sh" util.shell = os.getenv("SHELL") or "/bin/sh"
local displayed_deprecations = {}
--- Display a deprecation notice, but only once per traceback.
-- @param see Optional message to a new method / function to use.
function util.deprecate(see) function util.deprecate(see)
local tb = debug.traceback()
if util.table.hasitem(displayed_deprecations, tb) then
return
end
table.insert(displayed_deprecations, tb)
io.stderr:write("W: awful: function is deprecated") io.stderr:write("W: awful: function is deprecated")
if see then if see then
io.stderr:write(", see " .. see) io.stderr:write(", see " .. see)
end end
io.stderr:write("\n") io.stderr:write("\n")
io.stderr:write(debug.traceback()) io.stderr:write(tb)
end end
--- Strip alpha part of color. --- Strip alpha part of color.