migrate-config: also handle named workspaces correctly when their names come after the bindings (Thanks xpt)

next
Michael Stapelberg 2011-07-06 17:56:09 +02:00
parent 95ee21dc3b
commit 03aa95813e
2 changed files with 25 additions and 2 deletions

View File

@ -83,6 +83,21 @@ if (!need_to_convert()) {
exit 1;
}
# first pass: get workspace names
for my $line (@lines) {
next if $line =~ /^#/ || $line =~ /^$/;
my ($statement, $parameters) = ($line =~ /([a-zA-Z._-]+)(.*)/);
# skip everything but workspace lines
next unless defined($statement) and $statement eq 'workspace';
my ($number, $params) = ($parameters =~ /[ \t]+([0-9]+) (.+)/);
# save workspace name (unless the line is actually a workspace assignment)
$workspace_names{$number} = $params unless $params =~ /^output/;
}
for my $line (@lines) {
# directly use comments and empty lines
if ($line =~ /^#/ || $line =~ /^$/) {
@ -141,8 +156,7 @@ for my $line (@lines) {
print "$line\n";
next;
} else {
print "# XXX: workspace name will end up in the bindings, see below\n";
$workspace_names{$number} = $params;
print "# XXX: workspace name will end up in the corresponding bindings.\n";
next;
}
}

View File

@ -297,6 +297,15 @@ $output = migrate_config($input);
ok(!line_exists($output, qr|^workspace|), 'workspace name not present');
ok(line_exists($output, qr|^bindsym Mod1\+3 workspace work|), 'named workspace in bindings');
# The same, but in reverse order
$input = <<EOT;
bindsym Mod1+3 3
workspace 3 work
EOT
$output = migrate_config($input);
ok(!line_exists($output, qr|^workspace|), 'workspace name not present');
ok(line_exists($output, qr|^bindsym Mod1\+3 workspace work|), 'named workspace in bindings');
$output = migrate_config('bindsym Mod1+3 3');
ok(line_exists($output, qr|^bindsym Mod1\+3 workspace 3|), 'workspace changed');