diff src/libvterm/tbl2inc_c.pl @ 11621:b8299e742f41 v8.0.0693

patch 8.0.0693: no terminal emulator support commit https://github.com/vim/vim/commit/e4f25e4a8db2c8a8a71a4ba2a68540b3ab341e42 Author: Bram Moolenaar <Bram@vim.org> Date: Fri Jul 7 11:54:15 2017 +0200 patch 8.0.0693: no terminal emulator support 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.
author Christian Brabandt <cb@256bit.org>
date Fri, 07 Jul 2017 12:00:04 +0200
parents
children
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/src/libvterm/tbl2inc_c.pl
@@ -0,0 +1,51 @@
+#!/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