diff options
author | Darik Gamble <darik.gamble@gmail.com> | 2016-10-17 13:48:02 -0400 |
---|---|---|
committer | Darik Gamble <darik.gamble@gmail.com> | 2016-10-17 13:48:55 -0400 |
commit | 088190220741f3a307c8ccc9990bfd3c49381237 (patch) | |
tree | e2665a42b99981ed0a3f74d47c28da8d234b7c32 | |
parent | 59d892ae0ea35cee16e101618ab2e7cea0841d61 (diff) |
If prev_keyword is an unrecognized keyword, go backward until we find a recognized one
-rw-r--r-- | pgcli/packages/sqlcompletion.py | 5 | ||||
-rw-r--r-- | tests/test_sqlcompletion.py | 9 |
2 files changed, 14 insertions, 0 deletions
diff --git a/pgcli/packages/sqlcompletion.py b/pgcli/packages/sqlcompletion.py index 71654b55..f079d495 100644 --- a/pgcli/packages/sqlcompletion.py +++ b/pgcli/packages/sqlcompletion.py @@ -452,6 +452,11 @@ def suggest_based_on_last_token(token, stmt): if not schema: suggestions.append(Schema()) return tuple(suggestions) + elif token.is_keyword: + # token is a keyword we haven't implemented any special handling for + # go backwards in the query until we find one we do recognize + prev_keyword = stmt.reduce_to_prev_keyword(n_skip=1) + return suggest_based_on_last_token(prev_keyword, stmt) else: return (Keyword(),) diff --git a/tests/test_sqlcompletion.py b/tests/test_sqlcompletion.py index 68c9e3de..cda827b9 100644 --- a/tests/test_sqlcompletion.py +++ b/tests/test_sqlcompletion.py @@ -744,3 +744,12 @@ def test_column_keyword_suggests_columns(sql): Column(table_refs=((None, 'foo', None, False),)), ]) + +def test_handle_unrecognized_kw_generously(): + sql = 'SELECT * FROM sessions WHERE session = 1 AND ' + suggestions = suggest_type(sql, sql) + expected = Column(table_refs=((None, 'sessions', None, False),)) + + assert expected in set(suggestions) + + |