+if (open(FO, '>', "$userdir/userbind.tmp")) {
+ my %used = ();
+ if (open(FI, "$userdir/bind/user.bind")) {
+ while (my $l = <FI>) {
+ my $found = 0;
+ for my $k (keys %bindings) {
+ if ($l =~ /^\s*\\bind\s+\"$k\"/) {
+ $found = 1;
+ if (! defined($used{$k})) {
+ $used{$k} = 1;
+ $l = "\\bind \"$k\" \"" . join(' ', @{$bindings{$k}}) . "\"\n";
+ print FO $l;
+ last;
+ }
+ }
+ print FO $l if (! $found);
+ }
+ }
+ close(FI);
+ }
+ else {
+ print FO "## This file is automatically generated by lyx\n";
+ print FO "## All modifications will be lost\n";
+ print FO "\n\n";
+ print FO "Format 4\n\n";
+ }
+ for my $k (keys %bindings) {
+ if (! defined($used{$k})) {
+ $used{$k} = 1;
+ my $l = "\\bind \"$k\" \"" . join(' ', @{$bindings{$k}}) . "\"\n";
+ print FO $l;
+ }
+ }
+ close(FO);
+ rename("$userdir/userbind.tmp", "$userdir/bind/user.bind");
+}
+