summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoakim Koljonen <koljonen@Joakims-MacBook-Pro-2.local>2016-07-08 16:51:55 +0200
committerJoakim Koljonen <koljonen@Joakims-MacBook-Pro-2.local>2016-07-08 16:51:55 +0200
commitf94bd6882d4e8eff4c53039b8612b557b80b2094 (patch)
tree98c74ca449f7166fea0c6b03aea80552be522427
parent6894c8ecaac64f4b5baaa383ea689e658782d05e (diff)
Some changes to sorting of suggestions
-rw-r--r--pgcli/pgcompleter.py16
-rw-r--r--tests/test_smart_completion_public_schema_only.py12
2 files changed, 16 insertions, 12 deletions
diff --git a/pgcli/pgcompleter.py b/pgcli/pgcompleter.py
index 5bfbb691..087aa051 100644
--- a/pgcli/pgcompleter.py
+++ b/pgcli/pgcompleter.py
@@ -319,7 +319,7 @@ class PGCompleter(Completer):
+ tuple(c for c in item))
item = self.case(item)
- priority = type_priority, prio, sort_key, priority_func(item), lexical_priority
+ priority = sort_key, type_priority, prio, priority_func(item), lexical_priority
matches.append(Match(
completion=Completion(item, -text_len, display_meta=meta),
@@ -399,7 +399,8 @@ class PGCompleter(Completer):
return [Match(completion=Completion(collist, -1,
display_meta='columns', display='*'), priority=(1,1,1))]
- return self.find_matches(word_before_cursor, flat_cols, meta='column')
+ return self.find_matches(word_before_cursor, flat_cols,
+ meta='column', type_priority=90)
def alias(self, tbl, tbls):
""" Generate a unique table alias
@@ -552,7 +553,8 @@ class PGCompleter(Completer):
if not word_before_cursor.startswith('pg_'):
schema_names = [s for s in schema_names if not s.startswith('pg_')]
- return self.find_matches(word_before_cursor, schema_names, meta='schema')
+ return self.find_matches(word_before_cursor, schema_names,
+ meta='schema', type_priority=50)
def get_from_clause_item_matches(self, suggestion, word_before_cursor):
alias = self.generate_aliases
@@ -574,7 +576,8 @@ class PGCompleter(Completer):
if alias:
tables = [self.case(t) + ' ' + self.alias(t, suggestion.tables)
for t in tables]
- return self.find_matches(word_before_cursor, tables, meta='table')
+ return self.find_matches(word_before_cursor, tables,
+ meta='table', type_priority=40)
def get_view_matches(self, suggestion, word_before_cursor, alias=False):
@@ -586,7 +589,8 @@ class PGCompleter(Completer):
if alias:
views = [self.case(v) + ' ' + self.alias(v, suggestion.tables)
for v in views]
- return self.find_matches(word_before_cursor, views, meta='view')
+ return self.find_matches(word_before_cursor, views,
+ meta='view', type_priority=30)
def get_alias_matches(self, suggestion, word_before_cursor):
aliases = suggestion.aliases
@@ -595,7 +599,7 @@ class PGCompleter(Completer):
def get_database_matches(self, _, word_before_cursor):
return self.find_matches(word_before_cursor, self.databases,
- meta='database')
+ meta='database', type_priority=45)
def get_keyword_matches(self, _, word_before_cursor):
return self.find_matches(word_before_cursor, self.keywords,
diff --git a/tests/test_smart_completion_public_schema_only.py b/tests/test_smart_completion_public_schema_only.py
index df73d51b..4802db45 100644
--- a/tests/test_smart_completion_public_schema_only.py
+++ b/tests/test_smart_completion_public_schema_only.py
@@ -561,17 +561,17 @@ def test_table_names_after_from(completer, complete_event, text):
assert set(result) == set(testdata.schemas() + testdata.tables()
+ testdata.views() + testdata.functions())
assert [c.text for c in result] == [
+ 'public',
+ 'orders',
+ '"select"',
+ 'users',
+ '"Users"',
+ 'user_emails',
'_custom_fun()',
'custom_fun()',
'custom_func1()',
'custom_func2()',
- 'orders',
- 'public',
- '"select"',
'set_returning_func()',
- 'user_emails',
- 'users',
- '"Users"',
]
def test_auto_escaped_col_names(completer, complete_event):