• Tom Lane's avatar
    Don't treat complete_from_const as equivalent to complete_from_list. · b4771d7c
    Tom Lane authored
    Commit 4f3b38fe supposed that complete_from_const() is equivalent to
    the one-element-list case of complete_from_list(), but that's not
    really true at all.  complete_from_const() supposes that the completion
    is certain enough to justify wiping out whatever the user typed, while
    complete_from_list() will only provide completions that match the
    word-so-far.
    
    In practice, given the lame parsing technology used by tab-complete.c,
    it's fairly hard to believe that we're *ever* certain enough about
    a completion to justify auto-correcting user input that doesn't match.
    
    Hence, remove the inappropriate unification of the two cases.
    As things now stand, complete_from_const() is used only for the
    situation where we have no matches and we need to keep readline
    from applying its default complete-with-file-names behavior.
    
    This (mis?) behavior actually exists much further back, but
    I'm hesitant to change it in released branches.  It's not too
    late for v12, though, especially seeing that the aforesaid
    commit is new in v12.
    
    Per gripe from Ken Tanzer.
    
    Discussion: https://postgr.es/m/CAD3a31XpXzrZA9TT3BqLSHghdTK+=cXjNCE+oL2Zn4+oWoc=qA@mail.gmail.com
    b4771d7c
tab-complete.c 165 KB