]> git.madduck.net Git - etc/awesome.git/blobdiff - helpers.lua

madduck's git repository

Every one of the projects in this repository is available at the canonical URL git://git.madduck.net/madduck/pub/<projectpath> — see each project's metadata for the exact URL.

All patches and comments are welcome. Please squash your changes to logical commits before using git-format-patch and git-send-email to patches@git.madduck.net. If you'd read over the Git project's submission guidelines and adhered to them, I'd be especially grateful.

SSH access, as well as push access can be individually arranged.

If you use my repositories frequently, consider adding the following snippet to ~/.gitconfig and using the third clone URL listed for each project:

[url "git://git.madduck.net/madduck/"]
  insteadOf = madduck:

no need to set naughty.config.defaults as preset, because it's implicit; closes #290
[etc/awesome.git] / helpers.lua
index 9755dc0405e072980b6e937d8e47acb8206c0432..b1a195caafe9a9e9f44125012bbda2cda2cf1ba7 100644 (file)
@@ -92,8 +92,9 @@ end
 
 helpers.timer_table = {}
 
 
 helpers.timer_table = {}
 
-function helpers.newtimer(_name, timeout, fun, nostart)
-    local name = timeout
+function helpers.newtimer(name, timeout, fun, nostart, stoppable)
+    if not name or #name == 0 then return end
+    name = (stoppable and name) or timeout
     if not helpers.timer_table[name] then
         helpers.timer_table[name] = timer({ timeout = timeout })
         helpers.timer_table[name]:start()
     if not helpers.timer_table[name] then
         helpers.timer_table[name] = timer({ timeout = timeout })
         helpers.timer_table[name]:start()
@@ -102,6 +103,7 @@ function helpers.newtimer(_name, timeout, fun, nostart)
     if not nostart then
         helpers.timer_table[name]:emit_signal("timeout")
     end
     if not nostart then
         helpers.timer_table[name]:emit_signal("timeout")
     end
+    return stoppable and helpers.timer_table[name]
 end
 
 -- }}}
 end
 
 -- }}}
@@ -175,14 +177,29 @@ function helpers.spairs(t)
     end
 end
 
     end
 end
 
--- create a lain textbox widget
+-- create a textbox with no spacing issues
 function helpers.make_widget_textbox()
 function helpers.make_widget_textbox()
-    local w = wibox.widget.textbox('')
+    local w = wibox.widget.textbox()
     local t = wibox.widget.base.make_widget(w)
     t.widget = w
     return t
 end
 
     local t = wibox.widget.base.make_widget(w)
     t.widget = w
     return t
 end
 
+-- shallow copy a table
+function helpers.table_shallowcopy(orig)
+    local orig_type = type(orig)
+    local copy
+    if orig_type == 'table' then
+        copy = {}
+        for orig_key, orig_value in pairs(orig) do
+            copy[orig_key] = orig_value
+        end
+    else -- number, string, boolean, etc
+        copy = orig
+    end
+    return copy
+end
+
 -- }}}
 
 return helpers
 -- }}}
 
 return helpers