diff options
author | Amjith Ramanujam <amjith.r@gmail.com> | 2014-12-19 00:10:15 -0800 |
---|---|---|
committer | Amjith Ramanujam <amjith.r@gmail.com> | 2014-12-19 00:10:15 -0800 |
commit | 8bd1d9dd7e2f33aed255c607efab6a2daf55fc92 (patch) | |
tree | 7cdf2ba460fab2d1a438f19a5634c219a0984bf6 | |
parent | 632ce9d3573a50343fca27ff56689679abd92f91 (diff) | |
parent | e2877870456e0146380c3b3519cb1289e4f56a86 (diff) |
Merge pull request #2 from j-bennet/master
attempt to suggest column name when function is typed
-rw-r--r-- | pgcli/packages/sqlcompletion.py | 7 | ||||
-rw-r--r-- | pgcli/pgcompleter.py | 1 | ||||
-rw-r--r-- | tests/test_sqlcompletion.py | 18 |
3 files changed, 24 insertions, 2 deletions
diff --git a/pgcli/packages/sqlcompletion.py b/pgcli/packages/sqlcompletion.py index 6e45f435..3d46e85c 100644 --- a/pgcli/packages/sqlcompletion.py +++ b/pgcli/packages/sqlcompletion.py @@ -29,7 +29,12 @@ def suggest_type(full_text, text_before_cursor): last_token = parsed[0].token_prev(len(parsed[0].tokens)) last_token = last_token.value if last_token else '' - if last_token.lower() in ('set', 'by'): + def is_function_word(word): + return word and len(word) > 1 and word[-1] == '(' + + if is_function_word(word_before_cursor): + return ('columns', extract_tables(full_text)) + elif last_token.lower() in ('set', 'by', 'distinct'): return ('columns', extract_tables(full_text)) elif last_token.lower() in ('select', 'where', 'having'): return ('columns-and-functions', extract_tables(full_text)) diff --git a/pgcli/pgcompleter.py b/pgcli/pgcompleter.py index 9361320d..b693869c 100644 --- a/pgcli/pgcompleter.py +++ b/pgcli/pgcompleter.py @@ -1,6 +1,5 @@ from __future__ import print_function from collections import defaultdict -import itertools from prompt_toolkit.completion import Completer, Completion from .packages.sqlcompletion import suggest_type from .packages.parseutils import last_word diff --git a/tests/test_sqlcompletion.py b/tests/test_sqlcompletion.py new file mode 100644 index 00000000..d31042f0 --- /dev/null +++ b/tests/test_sqlcompletion.py @@ -0,0 +1,18 @@ +from pgcli.packages.sqlcompletion import suggest_type + +class TestSqlCompletion: + def test_lparen_suggest_cols(self): + suggestion = suggest_type('SELECT MAX( FROM table_name', 'SELECT MAX(') + assert (suggestion and suggestion[0] == 'columns') + + def test_select_suggest_cols_and_funcs(self): + suggestion = suggest_type('SELECT ', 'SELECT ') + assert (suggestion and suggestion[0] == 'columns-and-functions') + + def test_from_suggest_tables(self): + suggestion = suggest_type('SELECT * FROM ', 'SELECT * FROM ') + assert (suggestion and suggestion[0] == 'tables') + + def test_distinct_suggest_cols(self): + suggestion = suggest_type('SELECT DISTINCT ', 'SELECT DISTINCT ') + assert (suggestion and suggestion[0] == 'columns') |