From: Michael Stapelberg Date: Sun, 28 Aug 2011 15:01:37 +0000 (+0200) Subject: migrate-config: use \s, be a bit more whitespace tolerant (+test) (Thanks sbedivere) X-Git-Tag: 4.0.2~6^2 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=96b219f27b33072af9afff687edac6a894dcbbc1;p=i3%2Fi3 migrate-config: use \s, be a bit more whitespace tolerant (+test) (Thanks sbedivere) Fixes: #457 --- diff --git a/i3-migrate-config-to-v4 b/i3-migrate-config-to-v4 index 0a8db2de..4dd4418f 100755 --- a/i3-migrate-config-to-v4 +++ b/i3-migrate-config-to-v4 @@ -67,7 +67,7 @@ sub need_to_convert { # have a look at bindings next unless $line =~ /^bind/; - my ($statement, $key, $command) = ($line =~ /([a-zA-Z_-]+)[ \t]+([^ \t]+)[ \t]+(.*)/); + my ($statement, $key, $command) = ($line =~ /([a-zA-Z_-]+)\s+([^\s]+)\s+(.*)/); return 0 if $command =~ /^layout/ || $command =~ /^floating/ || $command =~ /^workspace/ || @@ -94,7 +94,7 @@ for my $line (@lines) { # skip everything but workspace lines next unless defined($statement) and $statement eq 'workspace'; - my ($number, $params) = ($parameters =~ /[ \t]+([0-9]+) (.+)/); + my ($number, $params) = ($parameters =~ /\s+([0-9]+)\s+(.+)/); # save workspace name (unless the line is actually a workspace assignment) $workspace_names{$number} = $params unless $params =~ /^output/; @@ -124,7 +124,7 @@ for my $line (@lines) { # workspace_bar is gone, you should use i3bar now if ($statement eq 'workspace_bar') { - $workspace_bar = ($parameters =~ /[ \t+](yes|true|on|enable|active)/); + $workspace_bar = ($parameters =~ /\s+(yes|true|on|enable|active)/); print "# XXX: REMOVED workspace_bar line. There is no internal workspace bar in v4.\n"; next; } @@ -153,7 +153,7 @@ for my $line (@lines) { # one form of this is still ok (workspace assignments), the other (named workspaces) isn’t if ($statement eq 'workspace') { - my ($number, $params) = ($parameters =~ /[ \t]+([0-9]+) (.+)/); + my ($number, $params) = ($parameters =~ /\s+([0-9]+)\s+(.+)/); if ($params =~ /^output/) { print "$line\n"; next; @@ -187,7 +187,7 @@ sub convert_command { stack-limit ); - my ($statement, $key, $command) = ($line =~ /([a-zA-Z_-]+)[ \t]+([^ \t]+)[ \t]+(.*)/); + my ($statement, $key, $command) = ($line =~ /([a-zA-Z_-]+)\s+([^\s]+)\s+(.*)/); # turn 'bind' to 'bindcode' $statement = 'bindcode' if $statement eq 'bind'; @@ -234,14 +234,14 @@ sub convert_command { # goto command is now obsolete due to criteria + focus command if ($command =~ /^goto/) { - my ($mark) = ($command =~ /^goto (.*)/); + my ($mark) = ($command =~ /^goto\s+(.*)/); print qq|$statement $key [con_mark="$mark"] focus\n|; return; } # the jump command is also obsolete due to criteria + focus if ($command =~ /^jump/) { - my ($params) = ($command =~ /^jump (.*)/); + my ($params) = ($command =~ /^jump\s+(.*)/); if ($params =~ /^"/) { # jump ["]window class[/window title]["] ($params) = ($params =~ /^"([^"]+)"/); @@ -262,8 +262,8 @@ sub convert_command { } if (!$replaced && $command =~ /^focus/) { - my ($what) = ($command =~ /^focus (.*)/); - $what =~ s/[ \t]//g; + my ($what) = ($command =~ /^focus\s+(.*)/); + $what =~ s/\s//g; if ($what eq 'ft') { $what = 'mode_toggle'; } elsif ($what eq 'floating' || $what eq 'tiling') { @@ -277,7 +277,7 @@ sub convert_command { } if ($command =~ /^mode/) { - my ($parameters) = ($command =~ /^mode (.*)/); + my ($parameters) = ($command =~ /^mode\s+(.*)/); print qq|$statement $key mode "$parameters"\n|; return; } @@ -286,7 +286,7 @@ sub convert_command { if ($command =~ /^resize/) { # OLD: resize [+|-]\n") # NEW: resize [ px] [or ppt] - my ($direction, $sign, $px) = ($command =~ /^resize (left|right|top|bottom) ([+-])([0-9]+)/); + my ($direction, $sign, $px) = ($command =~ /^resize\s+(left|right|top|bottom)\s+([+-])([0-9]+)/); my $cmd = 'resize '; $cmd .= ($sign eq '+' ? 'grow' : 'shrink') . ' '; if ($direction eq 'top') { diff --git a/testcases/t/71-config-migrate.t b/testcases/t/71-config-migrate.t index fb331c48..6b41f2c1 100644 --- a/testcases/t/71-config-migrate.t +++ b/testcases/t/71-config-migrate.t @@ -264,6 +264,13 @@ ok(line_exists($output, qr|^bindsym Mod1\+f resize shrink right 20 px$|), 'resiz $output = migrate_config('bindsym Mod1+f resize bottom +23'); ok(line_exists($output, qr|^bindsym Mod1\+f resize grow down 23 px$|), 'resize bottom changed'); +##################################################################### +# also resizing, but with indention this time +##################################################################### + +$output = migrate_config("bindsym Mod1+f resize left \t +10"); +ok(line_exists($output, qr|^bindsym Mod1\+f resize grow left 10 px$|), 'resize left changed'); + ##################################################################### # check whether jump's parameters get changed correctly #####################################################################