From: | Dean Rasheed <dean(dot)a(dot)rasheed(at)gmail(dot)com> |
---|---|
To: | Josh Kupershmidt <schmiddy(at)gmail(dot)com> |
Cc: | pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: [BUGS] Tab completion of function arguments not working in all cases |
Date: | 2012-06-18 10:56:53 |
Message-ID: | CAEZATCUQKZUV-Y0TT7A5sX_TK2Hd91qOWH7UMCcnin06KNsM0A@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs pgsql-hackers |
On 18 June 2012 04:21, Josh Kupershmidt <schmiddy(at)gmail(dot)com> wrote:
> +1 for the idea. I find the existing behavior rather confusing,
> particularly the fact that a schema-qualified function name will be
> tab-completed, i.e. this works.
>
> DROP FUNCTION my_schema.my<TAB>
>
> but then, as your second example above shows, no completions are
> subsequently offered for the function arguments.
>
> As a side note unrelated to this patch, I also dislike how function
> name tab-completions will not fill in the opening parenthesis, which
> makes for unnecessary work for the user, as one then has to type the
> parenthesis and hit tab again to get possible completions for the
> function arguments. The current behavior causes:
> DROP FUNCTION my_f<TAB>
>
> which completes to:
> DROP FUNCTION my_function
>
> enter parenthesis, and hit tab:
> DROP FUNCTION my_function(<TAB>
>
> which, if there is only one match, could complete to:
> DROP FUNCTION my_function(integer)
>
> when the last three steps could have been consolidated with better
> tab-completion. Perhaps this could be a TODO.
>
Hmm, I find that it does automatically fill in the opening
parenthesis, but only once there is a space after the completed
function name. So
"DROP FUNCTION my_f<TAB>" completes to "DROP FUNCTION my_function "
(note the space at the end). Then pressing <TAB> one more time gives
"DROP FUNCTION my_function ( ", and then pressing <TAB> again gives
the function arguments.
Alternatively "DROP FUNCTION my_function<TAB>" (no space after
function name) first completes to "DROP FUNCTION my_function " (adding
the space), and then completes with the opening parenthesis, and then
with the function arguments.
It's a bit clunky, but I find that repeatedly pressing <TAB> is easier
than typing the opening bracket.
>> The attached patch fixes these problems by introducing a new macro
>> COMPLETE_WITH_ARG, similar to the existing COMPLETE_WITH_ATTR, which
>> seems to be the nearest analogous code that covers all the edge cases.
>
> Anyway, on to the review of the patch itself:
>
> * Submission *
>
> Patch applies cleanly to git head, and regression tests are not
> expected for tab-completion enhancements.
>
> * Features & Usability *
>
> I've verified that tab-completing of the first argument to functions
> for DROP FUNCTION and ALTER FUNCTION commands for the most part works
> as expected. The one catch I noticed was that
> Query_for_list_of_arguments wasn't restricting its results to
> currently-visible functions, so with a default search_path, if you
> have these two functions defined:
>
> public.doppelganger(text)
> my_schema.doppelganger(bytea)
>
> and then try:
>
> DROP FUNCTION doppelganger(<TAB>
>
> you get tab-completions for both "text)" and "bytea(", when you
> probably expected only the former. That's easy to fix though, please
> see attached v2 patch.
>
Good catch.
I think that's a useful additional test, and is also consistent with
the existing code in Query_for_list_of_attributes.
> * Coding *
>
> The new macro COMPLETE_WITH_ARG seems fine. The existing code used
> malloc() directly for DROP FUNCTION and ALTER FUNCTION
> (tab-complete.c, around lines 867 and 2190), which AIUI is frowned
> upon in favor of pg_malloc(). The patch avoids this ugliness by using
> the new COMPLETE_WITH_ARG macro, so that's a nice fixup.
>
> Overall, a nice fix for an overlooked piece of the tab-completion machinery.
>
> Josh
Thanks for the review.
Cheers,
Dean
From | Date | Subject | |
---|---|---|---|
Next Message | m.mittmann | 2012-06-18 13:15:02 | BUG #6697: postgres.exe crashed |
Previous Message | Josh Kupershmidt | 2012-06-18 03:21:27 | Re: [BUGS] Tab completion of function arguments not working in all cases |
From | Date | Subject | |
---|---|---|---|
Next Message | Heikki Linnakangas | 2012-06-18 10:59:00 | Re: Resource Owner reassign Locks |
Previous Message | Heikki Linnakangas | 2012-06-18 10:54:40 | Re: Resource Owner reassign Locks |