awful.tag.move(new_index, target_tag):
    given an integer, 'new_index' move the 'target_tag' or selected() to
    the 'new_index' in screen[s]:tags() table

    this function does nothing unless:
        0 < new_index < #screen[s]:tags()
---
 lib/awful/tag.lua.in |   25 +++++++++++++++++++++++++
 1 files changed, 25 insertions(+), 0 deletions(-)

diff --git a/lib/awful/tag.lua.in b/lib/awful/tag.lua.in
index 749a76f..6d03add 100644
--- a/lib/awful/tag.lua.in
+++ b/lib/awful/tag.lua.in
@@ -76,6 +76,31 @@ function new(names, screen, layout)
     return tags
 end
 
+--- Move a tag to an absolute position in the screen[]:tags() table
+-- @param new_index Integer absolute position in the table to insert
+function move(new_index, target_tag)
+    -- lua indexing begins at one
+    if not new_index or new_index < 1 then return end
+    local target_tag = target_tag or selected()
+
+    local scr = target_tag.screen
+    local tmp_tags = capi.screen[scr]:tags()
+
+    -- can't push a tag past the end either
+    if new_index > #tmp_tags then return end
+
+    for i, t in ipairs(tmp_tags) do
+        if t == target_tag then
+            table.remove(tmp_tags, i)
+            break
+        end
+    end
+
+    -- for i, t in pairs(screen[target_tag.screen
+    table.insert(tmp_tags, new_index, target_tag)
+    capi.screen[scr]:tags(tmp_tags)
+end
+
 --- Delete a tag
 -- @param target_tag Optional tag object to delete, [tag.selected()]
 function delete(target_tag)
-- 
1.7.0.1


-- 
To unsubscribe, send mail to awesome-devel-unsubscr...@naquadah.org.

Reply via email to