Skip to content
This repository was archived by the owner on Mar 12, 2020. It is now read-only.

Commit e236685

Browse files
authored
Merge pull request #211 from mtxr/feature/completions-selectors
Add a setting to disable completion for selectors
2 parents a409f14 + 8dd1dc6 commit e236685

File tree

3 files changed

+39
-18
lines changed

3 files changed

+39
-18
lines changed

SQLTools.py

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -456,21 +456,19 @@ def on_query_completions(view, prefix, locations):
456456
if not len(locations):
457457
return None
458458

459-
# disable completions inside strings
460-
if view.match_selector(locations[0], 'string'):
461-
return None
459+
ignoreSelectors = ST.completion.getIgnoreSelectors()
460+
if ignoreSelectors:
461+
for selector in ignoreSelectors:
462+
if view.match_selector(locations[0], selector):
463+
return None
462464

463-
# show completions only for specific selectors
464-
selectors = ST.completion.getSelectors()
465-
selectorMatched = False
466-
if selectors:
467-
for selector in selectors:
465+
activeSelectors = ST.completion.getActiveSelectors()
466+
if activeSelectors:
467+
for selector in activeSelectors:
468468
if view.match_selector(locations[0], selector):
469-
selectorMatched = True
470469
break
471-
472-
if not selectorMatched:
473-
return None
470+
else:
471+
return None
474472

475473
# sublimePrefix = prefix
476474
# sublimeCompletions = view.extract_completions(sublimePrefix, locations[0])

SQLTools.sublime-settings

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,17 +87,28 @@
8787
},
8888

8989
/**
90-
* The list of syntax selectors for which the plugin autocompletion will be active.
90+
* The list of syntax selectors for which the autocompletion will be active.
9191
* An empty list means autocompletion always active.
9292
*/
93-
"selectors": [
93+
"autocomplete_selectors_active": [
9494
"source.sql",
9595
"source.pgsql",
9696
"source.plpgsql.postgres",
9797
"source.plsql.oracle",
9898
"source.tsql"
9999
],
100100

101+
/**
102+
* The list of syntax selectors for which the autocompletion will be disabled.
103+
*/
104+
"autocomplete_selectors_ignore": [
105+
"string.quoted.single.sql",
106+
"string.quoted.single.pgsql",
107+
"string.quoted.single.postgres",
108+
"string.quoted.single.oracle",
109+
"string.group.quote.oracle"
110+
],
111+
101112
/**
102113
* Command line interface options for each RDBMS.
103114
* In this file, the section `cli` above has the names you can use here.

SQLToolsAPI/Completion.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -172,8 +172,17 @@ def __init__(self, allTables, allColumns, allFunctions, settings=None):
172172
if settings is None:
173173
settings = {}
174174

175-
# get completion selectors from settings
176-
self.selectors = settings.get('selectors', [])
175+
# check old setting name ('selectors') first for compatibility
176+
activeSelectors = settings.get('selectors', None)
177+
if not activeSelectors:
178+
activeSelectors = settings.get(
179+
'autocomplete_selectors_active',
180+
['source.sql'])
181+
self.activeSelectors = activeSelectors
182+
183+
self.ignoreSelectors = settings.get(
184+
'autocomplete_selectors_ignore',
185+
['string.quoted.single.sql'])
177186

178187
# determine type of completions
179188
self.completionType = settings.get('autocompletion', 'smart')
@@ -198,8 +207,11 @@ def __init__(self, allTables, allColumns, allFunctions, settings=None):
198207

199208
self.allKeywords.append(CompletionItem('Keyword', keyword))
200209

201-
def getSelectors(self):
202-
return self.selectors
210+
def getActiveSelectors(self):
211+
return self.activeSelectors
212+
213+
def getIgnoreSelectors(self):
214+
return self.ignoreSelectors
203215

204216
def isDisabled(self):
205217
return self.completionType is None

0 commit comments

Comments
 (0)