• Tom Lane's avatar
    Improve tab completion for ANALYZE, EXPLAIN, and VACUUM. · 121213d9
    Tom Lane authored
    Previously, we made no attempt to provide tab completion in these
    statements' optional parenthesized options lists.  This patch teaches
    psql to do so.
    
    To prevent the option completions from being offered after we've already
    seen a complete parenthesized option list, it's necessary to improve
    word_matches() so that it allows a wildcard '*' in the middle of an
    alternative, not only at the end as formerly.  That requires only a
    little more code than before, and it allows us to test for "incomplete
    parenthesized options" with a test like
    
        else if (HeadMatches2("EXPLAIN", "(*") &&
                 !HeadMatches2("EXPLAIN", "(*)"))
    
    In addition, add some logic to offer column names in the context of
    "ANALYZE tablename ( ...", and likewise for VACUUM.  This isn't real
    complete; it won't offer column names again after a comma.  But it's
    better than before, and it doesn't take much code.
    
    Justin Pryzby, reviewed at various times by Álvaro Herrera, Arthur
    Zakirov, and Edmund Horner; some additional fixups by me
    
    Discussion: https://postgr.es/m/20180529000623.GA21896@telsasoft.com
    121213d9
tab-complete.c 163 KB