#!/bin/sh
-vim -e -cdigraphs -cq | perl -CSD -nE '
- BEGIN {
+
+VERSION=1.02
+
+if [ "$#" -ne 0 ]
+then
+ echo "Usage: $0 >digraphs-vim.inc.pl"
+ echo 'Collect digraph data from vim, standard output as Perl hash.'
+ exit 64 # EX_USAGE
+fi
+
+VIM='vim -RXZ -i NONE -u NONE -N -n'
+
+$VIM -e -c'echo version' -cdigraphs -cq | perl -CSD -nE '
+ if ($. == 1) { # head
+ say "# digraphs list from vim version ", m/(\d+)\s*\z/;
+ say "# automatically generated by '"$0"'";
say "+{";
- }
- say "q{$1} => $3," while /\G(\S\S) (.[^ ]*) +([0-9]+)\s+/g;
- END {
+ } else { # body
+ while (/\G(\S\S) (.[^ ]*) +([0-9]+)\s+/g) {
+ my ($mnem, $chr, $cp) = ($1, $2, $3);
+ $mnem =~ s/(?=[\\}])/\\/g; # escape string delimiter
+ $chrstr = sprintf q("\x{%x}"), $cp;
+ say "q{$mnem} => $chrstr,";
+ }
+ } END { # foot
say "}";
+ exit warn "only $. lines of :digraphs output\n" if $. < 6;
}
'