Re: [PATCH] Tab complete EXECUTE FUNCTION for CREATE (EVENT) TRIGGER

Dagfinn Ilmari Mannsåker <ilmari@ilmari.org>

From: ilmari@ilmari.org (Dagfinn Ilmari Mannsåker )
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Michael Paquier <michael@paquier.xyz>, David Fetter <david@fetter.org>, pgsql-hackers@postgresql.org
Date: 2018-10-25T11:25:33Z
Lists: pgsql-hackers
Tom Lane <tgl@sss.pgh.pa.us> writes:

> Michael Paquier <michael@paquier.xyz> writes:
>> On Wed, Oct 24, 2018 at 10:36:41AM +0100, Dagfinn Ilmari Mannsåker wrote:
>>> Fair point. I was unsure about whether to complete every supported
>>> variant or just the new one.  Updated patches attached.
>
>> One problem with this approach is that a user needs to use twice tab.
>> The first time is to show "EXECUTE", and the second time is to show
>> automatically "PROCEDURE" or "FUNCTION" automatically.
>
> Yeah.  Why don't we keep the existing behavior of completing both
> words at once, but make it server-version-dependent which completion
> you get?

I did that initially, but because COMPLETE_WITH() requres constant
arguments, I had to repeat the whole list with just changing PROCEDURE
to FUNCTION, which I thought was undesirably repetitive.  If there's a
more concise alternative to the below, or the consensus is that saving
one TAB press is worth it, I'll change it.

    else if (HeadMatches("CREATE", "TRIGGER") && TailMatches("ON", MatchAny))
        if (pset.sversion >= 110000)
            COMPLETE_WITH("NOT DEFERRABLE", "DEFERRABLE", "INITIALLY",
                          "REFERENCING", "FOR", "WHEN (", "EXECUTE FUNCTION");
        else
            COMPLETE_WITH("NOT DEFERRABLE", "DEFERRABLE", "INITIALLY",
                          "REFERENCING", "FOR", "WHEN (", "EXECUTE PROCEDURE");

- ilmari
-- 
"The surreality of the universe tends towards a maximum" -- Skud's Law
"Never formulate a law or axiom that you're not prepared to live with
 the consequences of."                              -- Skud's Meta-Law


Commits

  1. Add tab completion of EXECUTE FUNCTION for CREATE TRIGGER in psql

  2. Improve tab completion of CREATE EVENT TRIGGER in psql

  3. Improve tab completion for ANALYZE, EXPLAIN, and VACUUM.