mirror of
https://github.com/vim/vim.git
synced 2025-11-15 23:14:06 -05:00
Problem: No terminal emulator support. Cannot properly run commands in the
GUI. Cannot run a job interactively with an ssh connection.
Solution: Very early implementation of the :terminal command. Includes
libvterm converted to ANSI C. Many parts still missing.
52 lines
986 B
Perl
52 lines
986 B
Perl
#!/usr/bin/perl
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
my ( $encname ) = $ARGV[0] =~ m{/([^/.]+).tbl}
|
|
or die "Cannot parse encoding name out of $ARGV[0]\n";
|
|
|
|
print <<"EOF";
|
|
static const struct StaticTableEncoding encoding_$encname = {
|
|
{
|
|
NULL, /* init */
|
|
&decode_table /* decode */
|
|
},
|
|
{
|
|
EOF
|
|
|
|
my $row = 0;
|
|
while( <> ) {
|
|
s/\s*#.*//; # strip comment
|
|
|
|
if ($_ =~ m{^\d+/\d+}) {
|
|
my ($up, $low) = ($_ =~ m{^(\d+)/(\d+)});
|
|
my $thisrow = $up * 16 + $low;
|
|
while ($row < $thisrow) {
|
|
print " 0x0, /* $row */\n";
|
|
++$row;
|
|
}
|
|
}
|
|
|
|
s{^(\d+)/(\d+)}{""}e; # Remove 3/1
|
|
s{ = }{""}e; # Remove " = "
|
|
s{"(.)"}{sprintf "0x%04x", ord $1}e; # Convert "A" to 0x41
|
|
s{U\+}{0x}; # Convert U+0041 to 0x0041
|
|
|
|
s{$}{, /* $row */}; # append comma and index
|
|
|
|
print " $_";
|
|
|
|
++$row;
|
|
}
|
|
|
|
while ($row < 128) {
|
|
print " 0x0, /* $row */\n";
|
|
++$row;
|
|
}
|
|
|
|
print <<"EOF";
|
|
}
|
|
};
|
|
EOF
|