psql: tab-completion fails SET var=
(in hopes that the current changes to tab-completion will help to get this fixed)
tab-completion goes wrong on SET setting=...
example:
If you want to input "set search_path=myschema;" without spaces around '=',
and you try tab-completion halfway the schemaname:
set search_path=mysch
^tab
then the initial part of the schema name ('mysch') gets removed and replaced with 'TO'.
So that you now have:
set search_path=TO <cursor>
You lose the part of the schema name that was already input.
With spaces that doesn't happen, but after all tabcompletion is about avoiding keystrokes and errors.
Tab-completion is great and this search_path-annoyance happens to me all the time; my fingers
can't seem to learn this exception.
(pgsql 9.2devel, problem also in latest 9.1.3)
Thanks,
Erik Rijkers
On Fri, Mar 30, 2012 at 08:15:22PM +0200, Erik Rijkers wrote:
(in hopes that the current changes to tab-completion will help to get this fixed)
tab-completion goes wrong on SET setting=...
example:
If you want to input "set search_path=myschema;" without spaces around '=',
and you try tab-completion halfway the schemaname:set search_path=mysch
^tabthen the initial part of the schema name ('mysch') gets removed and replaced with 'TO'.
So that you now have:
set search_path=TO <cursor>
You lose the part of the schema name that was already input.
With spaces that doesn't happen, but after all tabcompletion is about avoiding keystrokes and errors.
Tab-completion is great and this search_path-annoyance happens to me all the time; my fingers
can't seem to learn this exception.(pgsql 9.2devel, problem also in latest 9.1.3)
I have fixed this with the attached patch. It does not do any further
competion of DEFAULT or other known settings if the equal sign has no
space before it.
--
Bruce Momjian <bruce@momjian.us> http://momjian.us
EnterpriseDB http://enterprisedb.com
+ It's impossible for everything to be true. +
Attachments:
psql.difftext/x-diff; charset=us-asciiDownload
diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c
new file mode 100644
index 8a74877..bfba1dd
*** a/src/bin/psql/tab-complete.c
--- b/src/bin/psql/tab-complete.c
*************** psql_completion(char *text, int start, i
*** 2842,2847 ****
--- 2842,2848 ----
pg_strcasecmp(prev_wd, "TABLESPACE") != 0 &&
pg_strcasecmp(prev_wd, "SCHEMA") != 0 &&
prev_wd[strlen(prev_wd) - 1] != ')' &&
+ prev_wd[strlen(prev_wd) - 1] != '=' &&
pg_strcasecmp(prev4_wd, "DOMAIN") != 0)
COMPLETE_WITH_CONST("TO");
/* Suggest possible variable values */