mirror of
https://github.com/levinsv/pgadmin3.git
synced 2026-05-15 06:05:49 -06:00
55 lines
2.2 KiB
Perl
55 lines
2.2 KiB
Perl
#!/usr/bin/perl
|
|
##########################################################################
|
|
##
|
|
## pgAdmin III - Tab completion
|
|
##
|
|
## Copyright (C) 2002 - 2016, The pgAdmin Development Team
|
|
## This software is released under the PostgreSQL Licence
|
|
##
|
|
## tab-complete.pl - Script to build tab-complete.inc
|
|
##
|
|
##########################################################################
|
|
|
|
|
|
# This script builds tab-complete.inc from tab-complete.c. The
|
|
# source file (tab-complete.c) should be copied from the latest
|
|
# PostgreSQL sources (src/bin/psql/tab-complete.c), so we don't
|
|
# have to do all the work ourselves...
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
open(F, "tab-complete.c") || die("Could not open tab-complete.c!");
|
|
undef $/;
|
|
my $alltxt = <F>;
|
|
close(F);
|
|
|
|
# Get rid of everything before and after the parts we're interested in
|
|
$alltxt =~ /.*(typedef struct SchemaQuery.*)\/\* GENERATOR FUNCTIONS\s+.*/s || die("Failed match 1");
|
|
$alltxt = $1;
|
|
|
|
# Get rid of forward declarations and initialize_readline
|
|
$alltxt =~ /(.*)\/\*\s+Forward declaration of functions \*\/.*(\/\* The completion function\..*)/s || die("Failed match 2");
|
|
$alltxt = $1 . $2;
|
|
|
|
# Get rid of completion macros, we define them ourselves
|
|
$alltxt =~ /(.*)\/\* A couple of macros to ease typing.*\*\/\s+#define COMPLETE_WITH_QUERY.*\s+(\/\*\s+\* Assembly instructions.*)/s || die("Failed match 4");
|
|
$alltxt = $1 . $2;
|
|
|
|
# Rewrite matches that don't use the macros
|
|
$alltxt =~ s/completion_matches\(text, create_command_generator\)/complete_create_command\(text\)/gs || die("Failed match 5");
|
|
$alltxt =~ s/completion_matches\(text, filename_completion_function\)/complete_filename\(\)/gs || die("Failed match 6");
|
|
|
|
# We're going to return char*, not char**
|
|
$alltxt =~ s/static char \*\*\s+psql_completion/static char \* psql_completion/s || die("Failed match 7");
|
|
$alltxt =~ s/char\s+\*\*matches = NULL/char \*matches = NULL/s || die("Failed match 8");
|
|
|
|
# Add an extra parameter to psql_completion
|
|
$alltxt =~ s/psql_completion\(char \*text, int start, int end\)/psql_completion\(char \*text, int start, int end, void \*dbptr\)/s || die("Failed match 9");
|
|
|
|
open(F,">tab-complete.inc") || die("Could not open tab-complete.inc!");
|
|
print F $alltxt;
|
|
print F "\n\n";
|
|
close(F);
|
|
|
|
print "Done.\n";
|