Excerpts from Noah Misch's message of sáb ene 14 12:20:18 -0300 2012: > Occasionally, I have a SQL file destined for psql's \i command whose name > contains a space. Less often, I'll have a .csv destined for \copy with the > same problem. psql's filename completion does not handle these well. It > completes on the literal name, but the commands will only recognize quoted > names. For example, given a file "foo bar", "\i f<TAB>" will complete to "\i > foo bar", which will not execute. If I type "\i 'f<TAB>", completion will not > help at all. > > The attached patch wraps rl_filename_completion_function() to dequote on input > and enquote on output. Now, "\i f<TAB>" and "\i 'f<TAB>" will both complete > to "\i 'foo bar'", which executes as expected. The new code handles embedded > whitespace, quotes, and backslashes.
Nice -- thanks, pushed. > tab-complete.c works in terms of whitespace-separated words. As such, "\i > 'foo b<TAB>" does not complete, because tab-complete.c has no notion of quotes > affecting token boundaries. It thinks "'foo" is one token and "b" is another. Yeah, it's a bit annoying if you have both "a b" and "a c". If you have a file named a\b, attempting to complete past a\\ doesn't work either. (If you have 'a\\ it does work, however). -- Álvaro Herrera <alvhe...@commandprompt.com> The PostgreSQL Company - Command Prompt, Inc. PostgreSQL Replication, Consulting, Custom Development, 24x7 support -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers