wmiirc-rumai

git clone git://oldgit.suckless.org/wmiirc-rumai/
Log | Files | Refs | README | LICENSE

commit a2b7c225c5b8d0a388f683934bb563bc5ffd2cc5
parent a7a489a6e122d09a0bf6c9e95ee5deb6681d5674
Author: Suraj N. Kurapati <sunaku@gmail.com>
Date:   Mon, 11 Sep 2006 01:30:51 -0700

[project @ f57d995fe7c089eade1fc7c9d7bd38a44c4e9a8c]

[project @ 57]
add IxpNode#{basename,dirname}
up  swapping left & right no longer operates on group
fix Area#setup_for_insertion! now updates its path... so moving to bogus columns now works for all selection

Diffstat:
fs.rb | 8++++++++
wm.rb | 28++++++++++++++++------------
wmiirc | 12++++--------
3 files changed, 28 insertions(+), 20 deletions(-)

diff --git a/fs.rb b/fs.rb @@ -136,6 +136,14 @@ class IxpNode IxpFs.exist? @path end + def basename + File.basename @path + end + + def dirname + File.dirname @path + end + # Accesses the given sub-path. def [] aSubPath child = IxpNode.new("#{@path}/#{aSubPath}") diff --git a/wm.rb b/wm.rb @@ -157,7 +157,7 @@ class Wmii < IxpNode selected_clients.each do |c| # resolve stale paths caused by destructive operations unless c.exist? - c = find_client(File.basename(c.path), curView) + c = find_client(c.basename, curView) c || next # skip upon failure end @@ -213,7 +213,7 @@ class Wmii < IxpNode # Returns the index of this region in the parent. def index - File.basename(@path).to_i + basename.to_i end # Returns the next region in the parent. @@ -259,7 +259,7 @@ class Wmii < IxpNode # Puts focus on this region. def focus! ['select', 'view'].each do |cmd| - parent.ctl = "#{cmd} #{File.basename @path}" + parent.ctl = "#{cmd} #{basename}" end end end @@ -339,10 +339,11 @@ class Wmii < IxpNode aClients.flatten! return if aClients.empty? - dstIdx = setup_for_insertion(aClients.shift) + setup_for_insertion! aClients.shift + dst = self.index aClients.each do |c| - c.ctl = "sendto #{dstIdx}" + c.ctl = "sendto #{dst}" end end @@ -355,11 +356,12 @@ class Wmii < IxpNode list.first.focus! end - dstIdx = setup_for_insertion(aClients.shift) - parent[dstIdx].sel.ctl = 'swap up' + setup_for_insertion! aClients.shift + parent.sel.ctl = 'swap up' + dst = self.index aClients.each do |c| - c.ctl = "sendto #{dstIdx}" + c.ctl = "sendto #{dst}" end end @@ -369,8 +371,8 @@ class Wmii < IxpNode end private - # Sets up this area for insertion and returns the area ID into which insertion is performed. - def setup_for_insertion aFirstClient + # Updates the path of this area for proper insertion and inserts the given client. + def setup_for_insertion! aFirstClient dstIdx = self.index maxIdx = parent.indices.last @@ -386,11 +388,13 @@ class Wmii < IxpNode else dstIdx = maxIdx end + + @path = "#{dirname}/#{dstIdx}" + else aFirstClient.ctl = "sendto #{dstIdx}" - end - dstIdx + end end end diff --git a/wmiirc b/wmiirc @@ -302,18 +302,14 @@ SHORTCUTS = { SHORTCUTS["#{LAYOUT}z"].call end, - # swap each selected client with the one to its left + # swap the currently focused client with the one to its left "#{SWAP}#{LEFT}" => lambda do - WM.with_selection do |c| - c.ctl = 'swap prev' - end + WM.focused_client.ctl = 'swap prev' end, - # swap each selected client with the one to its right + # swap the currently focused client with the one to its right "#{SWAP}#{RIGHT}" => lambda do - WM.with_selection do |c| - c.ctl = 'swap next' - end + WM.focused_client.ctl = 'swap next' end, # swap each selected client with the one below it