src/Tools/8bit/perl/generators/gen-isa_gnu_emacs.pl
author oheimb
Tue, 25 Jun 1996 17:44:43 +0200
changeset 1826 2a2c0dbeb4ac
child 2795 d136fff43370
permissions -rwxr-xr-x
Initial revision
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1826
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
     1
#!/usr/local/dist/DIR/perl4/bin/perl
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
     2
#
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
     3
# gen-isa_gnu_emacs
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
     4
# Franz Regensburger <regensbu@informatik.tu-muenchen.de>
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
     5
# 21.3.95
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
     6
#
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
     7
# last changed: 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
     8
#
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
     9
# configures the script `isa_gnu_emacs'
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    10
#
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    11
# 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    12
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    13
# I like to see the output as it happens (flushed output)
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    14
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    15
$| = 1;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    16
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    17
# cash current working directory 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    18
require "pwd.pl";
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    19
&initpwd;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    20
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    21
$initial_dir = $ENV{'PWD'};
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    22
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    23
########################
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    24
# comand line processing
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    25
# processes all known switches and ingnores others.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    26
# first non-switch which is the name of a text file is 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    27
# interpreted as name of configuration file.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    28
#
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    29
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    30
# initialize
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    31
$config_file="";
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    32
$do_debug = 0;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    33
$do_ddebug = 0;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    34
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    35
while (@ARGV){
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    36
    $cur_arg = shift @ARGV;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    37
    if ($cur_arg eq '-d')  {$do_debug = 1;}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    38
    elsif ($cur_arg eq '-dd') {$do_debug = 1; $do_ddebug = 1;}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    39
    elsif ((-T $cur_arg) && !$config_file) {$config_file = $cur_arg;}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    40
}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    41
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    42
# complain if no configuration file is found
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    43
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    44
if ($config_file eq "") {
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    45
    print "\nno configuration file suplied or argument is not a text file\n\n";
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    46
    print "usage gen-isa_gnu_emacs [-d -dd] configfile\n", 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    47
          "options must be seperated by blanks!";
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    48
    die "\n";
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    49
}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    50
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    51
print "debug mode is on\n" if $do_debug;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    52
print "double debug mode is on\n" if $do_ddebug;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    53
print "name of configuration file is $config_file\n" if $do_debug;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    54
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    55
########################
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    56
# open the configuration file
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    57
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    58
open(INFILE,$config_file) || die "can't open $config_file: $!\n";
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    59
print "opened configuration file,\nprocessing\n" if $do_debug;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    60
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    61
########################
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    62
# search for general setup variables
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    63
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    64
print "\ngeneral setup\n" if $do_debug;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    65
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    66
########################
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    67
# search for PACK
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    68
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    69
$pack = $ENV{'ISABELLE8BIT'};
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    70
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    71
if ($pack eq "") {
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    72
    die "\ncan't find label PACK in configuration file\n";}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    73
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    74
if (! (-d $pack)){
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    75
    die "\nPACK is not a directory\n";}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    76
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    77
########################
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    78
# search for GNU_EMACS_DIR
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    79
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    80
#$gnu_emacs_dir = &look_for_value('^\s*GNU_EMACS_DIR\s*"(.*)"',"GNU_EMACS_DIR");
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    81
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    82
#if ($gnu_emacs_dir eq "") {
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    83
#    die "\ncan't find GNU_EMACS_DIR  in configuration file\n";}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    84
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    85
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    86
#if (!(-r $pack."/".$gnu_emacs_dir && -w $pack."/".$gnu_emacs_dir && -x $pack."/".$gnu_emacs_dir)){
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    87
#    die "\nneed read, write and execute permission for directory GNU_EMACS_DIR\n";}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    88
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    89
$gnu_emacs_dir = "gnu_emacs";
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    90
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    91
########################
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    92
# configuration of KEY_MAP
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    93
print "\nsetup for KEY_MAP\n" if $do_debug;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    94
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    95
########################
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    96
# search for BEGIN_KEY_MAP
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    97
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    98
$found = &look_for_label('^\s*BEGIN_KEY_MA(P)',"BEGIN_KEY_MAP");
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    99
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   100
if ($found eq "") {
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   101
    die "\ncan't find BEGIN_KEY_MAP in configuration file\n";}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   102
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   103
########################
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   104
# read the KEY_MAP
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   105
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   106
$index = 0;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   107
$found = 0;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   108
$end_key_map = 0;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   109
$pattern = 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   110
'^\s*MOD\s*(None|Mod1|Mod2|Mod4|Shift|Ctrl)\s*KEY\s*([a-zA-Z]|F\d{1,2})\s*CODE\s*([0-9a-fA-F][0-9a-fA-F](\s*,\s*[0-9a-fA-F][0-9a-fA-F])*)\s*$';
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   111
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   112
while (<INFILE> ){
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   113
    if (/^\s*END_KEY_MAP/){
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   114
	    print "line $.: END_KEY_MAP found\n" if $do_debug;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   115
	    $found = 1;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   116
	    $end_key_map = $index - 1;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   117
	    last;}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   118
    elsif (($modifiers,$key,$codeseq) = /$pattern/){
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   119
	$key_map[$index]= join(':',$modifiers,$key,$codeseq);
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   120
	print "line $.: \"$key_map[$index]\"\n" if $do_ddebug;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   121
	$index +=1;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   122
    }
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   123
    else {
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   124
	print "Is this a comment? line $.: $_\n" ;}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   125
}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   126
if (!$found){
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   127
	die "\ncan't find END_KEY_MAP in configuration file\n";}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   128
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   129
if ($end_low_table < $start_low_table){
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   130
	die "\nNo entries in KEY_MAP\n";}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   131
    else {print 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   132
	"computed index for END_KEY_MAP is $end_key_map\n" if $do_debug;}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   133
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   134
########################
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   135
# we reached the end of the configuration file
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   136
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   137
print "\nprocessing of configuration file completed\n" if $do_debug;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   138
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   139
########################
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   140
# close the handle for config file
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   141
close(INFILE);
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   142
print "closed configuration file\n" if $do_debug;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   143
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   144
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   145
#######################################################################
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   146
# modify the sources 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   147
#######################################################################
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   148
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   149
########################
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   150
# change to directory GNU_EMACS_DIR and open the file `isa_gnu_emacs' 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   151
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   152
chdir $pack."/".$gnu_emacs_dir || die "can't cd to $gnu_emacs_dir: $!\n";
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   153
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   154
########################
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   155
# configure isa_gnu_emacs
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   156
# 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   157
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   158
$filename = "isa_gnu_emacs.emacs";
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   159
print "\nconfiguring $filename\n" if $do_debug;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   160
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   161
open(INFILE ,$filename) || die "can't open $filename: $!\n";
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   162
print "opened $filename for reading\n" if $do_ddebug;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   163
open(OUTFILE,">tmp.txt") || die "can't open temporary file tmp.txt: $!\n";
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   164
print "opened tmp.txt for writing\n" if $do_ddebug;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   165
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   166
$found = &replicate_until('^\s*;;\s*BEGIN-KEY-(MAP)',
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   167
             'BEGIN-KEY-MAP');
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   168
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   169
if ( $found eq "") {
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   170
    die "\ncan't find `BEGIN-KEY-MAP'\n";}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   171
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   172
# print header of table
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   173
printf(OUTFILE ";; BEGIN-KEY-MAP\n");
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   174
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   175
#print the table
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   176
$index = 0;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   177
while ($index < $end_key_map) {
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   178
    $entry = &translate_entry(split(/:/,$key_map[$index]));
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   179
    printf(OUTFILE "%s\n", $entry);
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   180
    $index += 1;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   181
}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   182
# print the last item
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   183
$entry = &translate_entry(split(/:/,$key_map[$index]));
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   184
printf(OUTFILE "%s\n", $entry);
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   185
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   186
# print footer of table
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   187
printf(OUTFILE ";; END-KEY-MAP\n");
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   188
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   189
# skip the table in the input file
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   190
$found = &skip_until('^\s*;;\s*END-KEY-(MAP)','END-KEY-MAP');
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   191
if ($found eq "") {
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   192
    die "\ncan't find END-KEY-MAP in file $filename\n";}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   193
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   194
## replicate the rest of the input file
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   195
while (<INFILE> ){printf(OUTFILE "%s",$_);}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   196
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   197
close(INFILE);
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   198
close(OUTFILE);
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   199
print "closed $filename and tmp.txt\n" if $do_ddebug;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   200
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   201
$status = system("cp tmp.txt $filename") ;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   202
if ($status) { die "can't copy tmp.txt to $filename: $!\n";}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   203
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   204
print "copied tmp.txt to $filename\n" if $do_ddebug;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   205
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   206
$status = system("rm -f tmp.txt");
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   207
    if ($status) {die "can't remove file tmp.txt: $!\n";}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   208
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   209
print "removed tmp.txt to $filename\n" if $do_ddebug;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   210
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   211
########################
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   212
# END of script
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   213
# 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   214
print "\nconfiguration of isa_gnu_emacs  properly terminated\n\n";
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   215
exit(0);
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   216
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   217
#######################################################################
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   218
# subroutines
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   219
#######################################################################
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   220
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   221
sub look_for_value {
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   222
    local ($pattern,$label) = @_;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   223
    local ($temp) = "";
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   224
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   225
    while (<INFILE> ){
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   226
	if (($temp) = /$pattern/){
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   227
	    print "line $.: $label is $temp\n" if $do_debug;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   228
	    last;}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   229
    }
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   230
    return $temp;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   231
}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   232
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   233
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   234
sub look_for_label {
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   235
    local ($pattern,$label) = @_;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   236
    local ($temp) = "";
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   237
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   238
    while (<INFILE> ){
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   239
	if (($temp) = /$pattern/){
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   240
	    print "line $.: $label found\n" if $do_debug;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   241
	    last;}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   242
    }
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   243
    return $temp;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   244
}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   245
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   246
sub replicate_until {
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   247
    local ($pattern,$label) = @_;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   248
    local ($temp) = "";
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   249
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   250
    while (<INFILE> ){
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   251
	if (($temp) = /$pattern/){
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   252
	    print "line $.: $label found\n" if $do_debug;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   253
	    last;}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   254
	else {printf(OUTFILE "%s",$_);}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   255
    }
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   256
    return $temp;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   257
}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   258
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   259
sub skip_until {
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   260
    local ($pattern,$label) = @_;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   261
    local ($temp) = "";
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   262
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   263
    while (<INFILE> ){
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   264
	if (($temp) = /$pattern/){
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   265
	    print "line $.: $label found\n" if $do_debug;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   266
	    last;}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   267
    }
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   268
    return $temp;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   269
}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   270
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   271
sub double_bs {
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   272
    local ($string) = @_;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   273
    local ($element);
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   274
    local (@temp1);
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   275
    local (@temp2) = (); 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   276
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   277
    # find the hex-numbers
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   278
    @temp1 = split(/(\\x[0-9a-fA-F][0-9a-fA-F])/,$string);
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   279
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   280
    #duplicate all backslashes in elements which are not hexnumbers
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   281
    while(@temp1) { 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   282
	$element = shift(@temp1);
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   283
	if ($element =~ /\\x[0-9a-fA-F][0-9a-fA-F]/){
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   284
	    push(@temp2,$element);} 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   285
	else{
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   286
	    $element =~ s/\\/\\\\/g;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   287
	    push(@temp2,$element);}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   288
    }
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   289
    return (join('',@temp2));
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   290
}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   291
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   292
# strip leading and trailing blanks
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   293
sub strip_blanks{
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   294
    local ($string) = @_;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   295
    $string =~ s/^\s*((\S+)|(\S.*\S))\s*$/$1/g;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   296
    return $string;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   297
}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   298
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   299
# translate an entry for `isa_gnu_emacs' script
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   300
sub translate_entry{
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   301
    local ($mod,$key,$code) = @_;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   302
    local (@codelist);
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   303
    local ($string);
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   304
    local ($emacs_mod);
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   305
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   306
    # we have to construct an emacs modifier
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   307
    if ($mod eq "None") { # No Modifier
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   308
	if ($key =~ /^[a-zA-Z]$/) { # key is not a function key
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   309
	    $emacs_mod = "\"$key\"";}    
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   310
	else { # key must be a function key, we translate the F to lowercase
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   311
	    $key =~ tr/F/f/;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   312
	    $emacs_mod = "[".$key."]";}}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   313
    elsif ($mod eq "Mod1") { # Mod2 is Meta key in emacs
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   314
	if ($key =~ /^[a-zA-Z]$/) { # key is not a function key
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   315
	    $emacs_mod = "[?\\M-".$key."]";}    
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   316
	else { # key must be a function key, we translate the F to lowercase
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   317
	    $key =~ tr/F/f/;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   318
	    $emacs_mod = "[M-".$key."]";}}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   319
    elsif ($mod eq "Mod2") { # Mod2 is Super key in emacs
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   320
	if ($key =~ /^[a-zA-Z]$/) { # key is not a function key
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   321
	    $emacs_mod = "[?\\s-".$key."]";}    
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   322
	else { # key must be a function key, we translate the F to lowercase
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   323
	    $key =~ tr/F/f/;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   324
	    $emacs_mod = "[s-".$key."]";}}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   325
    elsif ($mod eq "Mod4") { # Mod4 is  Hyper key in emacs
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   326
	if ($key =~ /^[a-zA-Z]$/) { # key is not a function key
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   327
	    $emacs_mod = "[?\\H-".$key."]";}    
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   328
	else { # key must be a function key, we translate the F to lowercase
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   329
	    $key =~ tr/F/f/;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   330
	    $emacs_mod = "[H-".$key."]";}}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   331
    elsif ($mod eq "Ctrl") { # Ctrl is  Control key in emacs
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   332
	if ($key =~ /^[a-zA-Z]$/) { # key is not a function key
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   333
	    $emacs_mod = "[?\\C-".$key."]";}    
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   334
	else { # key must be a function key, we translate the F to lowercase
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   335
	    $key =~ tr/F/f/;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   336
	    $emacs_mod = "[C-".$key."]";}}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   337
    else { # modifier must be Shift
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   338
	if ($key =~ /^[a-zA-Z]$/) { # key is not a function key
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   339
	    $key =~ tr/a-z/A-Z/;    # we translate to uppercase
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   340
	    $emacs_mod = "\"$key\"";}    
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   341
	else { # key must be a function key, we translate the F to lowercase
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   342
	    $key =~ tr/F/f/;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   343
	    $emacs_mod = "[S-".$key."]";}}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   344
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   345
    # split the sequence of key codes
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   346
    @codelist = split(/\s*,\s*/,$code);
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   347
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   348
    # generate key codes
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   349
    $code="";
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   350
    foreach $string (@codelist){
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   351
   	$code .= "(insert \"". sprintf("\\%o",hex($string)) ."\")";}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   352
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   353
    # assemble the whole line
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   354
    $string = 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   355
	"(global-set-key ".$emacs_mod." '(lambda () (interactive) " .
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   356
	 $code. "))";
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   357
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   358
    return $string;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   359
}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   360
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   361
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   362
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   363