Skip to content

Commit 5a44708

Browse files
committed
Adds lang service switch
1 parent 520ca4f commit 5a44708

File tree

6 files changed

+42
-5
lines changed

6 files changed

+42
-5
lines changed

package.json

+6
Original file line numberDiff line numberDiff line change
@@ -1196,6 +1196,12 @@
11961196
"default": false,
11971197
"description": "%mssql.intelliSense.lowerCaseSuggestions%",
11981198
"scope": "window"
1199+
},
1200+
"mssql.intelliSense.setQueryEditorLanguageToNone": {
1201+
"type": "boolean",
1202+
"default": false,
1203+
"description": "%mssql.intelliSense.setQueryEditorLanguageToNone%",
1204+
"scope": "window"
11991205
},
12001206
"mssql.persistQueryResultTabs": {
12011207
"type": "boolean",

package.nls.json

+1
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@
101101
"mssql.enableQueryHistoryFeature":"Should Query History feature be enabled",
102102
"mssql.intelliSense.lowerCaseSuggestions":"Should IntelliSense suggestions be lowercase",
103103
"mssql.persistQueryResultTabs":"Should query result selections and scroll positions be saved when switching tabs (may impact performance)",
104+
"mssql.intelliSense.setQueryEditorLanguageToNone":"Should the editor language be set to None when a query editor is opened.",
104105
"mssql.queryHistoryLimit":"Number of query history entries to show in the Query History view",
105106
"mssql.createAzureFunction":"Create Azure Function with SQL binding",
106107
"mssql.query.maxXmlCharsToStore":"Maximum number of characters to store for each value in XML columns after running a query. Default value: 2,097,152. Valid value range: 1 to 2,147,483,647.",

src/constants/constants.ts

+1
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,7 @@ export const configQueryHistoryLimit = 'queryHistoryLimit';
162162
export const configEnableQueryHistoryCapture = 'enableQueryHistoryCapture';
163163
export const configEnableQueryHistoryFeature = 'enableQueryHistoryFeature';
164164
export const configEnableExperimentalFeatures = 'mssql.enableExperimentalFeatures';
165+
export const configIntelliSense = 'intelliSense';
165166

166167
// ToolsService Constants
167168
export const serviceInstallingTo = 'Installing SQL tools service to';

src/controllers/connectionManager.ts

+16-3
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import { IAccount } from '../models/contracts/azure';
2323
import * as ConnectionContracts from '../models/contracts/connection';
2424
import { ClearPooledConnectionsRequest, ConnectionSummary } from '../models/contracts/connection';
2525
import * as LanguageServiceContracts from '../models/contracts/languageService';
26-
import { EncryptOptions, IConnectionProfile } from '../models/interfaces';
26+
import { EncryptOptions, IConnectionProfile, IntelliSenseConfig } from '../models/interfaces';
2727
import { PlatformInformation, Runtime } from '../models/platform';
2828
import * as Utils from '../models/utils';
2929
import { IPrompter, IQuestion, QuestionTypes } from '../prompts/question';
@@ -872,9 +872,22 @@ export default class ConnectionManager {
872872

873873
// Note: must call flavor changed before connecting, or the timer showing an animation doesn't occur
874874
if (this.statusView) {
875-
this.statusView.languageFlavorChanged(fileUri, Constants.mssqlProviderName);
875+
const configuration = vscode.workspace.getConfiguration(Constants.extensionConfigSectionName);
876+
const intelliSenseConfig = configuration.get<IntelliSenseConfig>(Constants.configIntelliSense);
877+
const flavor = intelliSenseConfig.setQueryEditorLanguageToNone ? Constants.noneProviderName : Constants.mssqlProviderName;
878+
this.statusView.languageFlavorChanged(fileUri, flavor);
876879
this.statusView.connecting(fileUri, connectionCreds);
877-
this.statusView.languageFlavorChanged(fileUri, Constants.mssqlProviderName);
880+
this.statusView.languageFlavorChanged(fileUri, flavor);
881+
882+
// Notify the language service that the editor with the specified URI doesn't have a language flavor to avoid error squiggles
883+
if (flavor === Constants.noneProviderName) {
884+
SqlToolsServerClient.instance.sendNotification(LanguageServiceContracts.LanguageFlavorChangedNotification.type,
885+
<LanguageServiceContracts.DidChangeLanguageFlavorParams>{
886+
uri: fileUri,
887+
language: 'sql',
888+
flavor: Constants.noneProviderName
889+
});
890+
}
878891
}
879892
this.vscodeWrapper.logToOutputChannel(
880893
LocalizedConstants.msgConnecting(connectionCreds.server, fileUri)

src/controllers/mainController.ts

+14-2
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import * as Constants from '../constants/constants';
1313
import * as LocalizedConstants from '../constants/locConstants';
1414
import SqlToolsServerClient from '../languageservice/serviceclient';
1515
import * as ConnInfo from '../models/connectionInfo';
16-
import { CompletionExtensionParams, CompletionExtLoadRequest, RebuildIntelliSenseNotification } from '../models/contracts/languageService';
16+
import { CompletionExtensionParams, CompletionExtLoadRequest, DidChangeLanguageFlavorParams, LanguageFlavorChangedNotification, RebuildIntelliSenseNotification } from '../models/contracts/languageService';
1717
import { ScriptOperation } from '../models/contracts/scripting/scriptingRequest';
1818
import { SqlOutputContentProvider } from '../models/sqlOutputContentProvider';
1919
import * as Utils from '../models/utils';
@@ -1288,8 +1288,20 @@ export default class MainController implements vscode.Disposable {
12881288
this._connectionMgr.onDidOpenTextDocument(doc);
12891289

12901290
if (doc && doc.languageId === Constants.languageId) {
1291+
const isLanguageSetToNone = this.configuration.get('mssql.intelliSense.setQueryEditorLanguageToNone');
1292+
const flavor = isLanguageSetToNone ? Constants.noneProviderName : Constants.mssqlProviderName;
12911293
// set encoding to false
1292-
this._statusview.languageFlavorChanged(doc.uri.toString(true), Constants.mssqlProviderName);
1294+
this._statusview.languageFlavorChanged(doc.uri.toString(true), flavor);
1295+
1296+
// Notify the language service that the editor with the specified URI doesn't have a language flavor to avoid error squiggles.
1297+
if (flavor === Constants.noneProviderName) {
1298+
SqlToolsServerClient.instance.sendNotification(LanguageFlavorChangedNotification.type,
1299+
<DidChangeLanguageFlavorParams>{
1300+
uri: doc.uri.toString(true),
1301+
language: 'sql',
1302+
flavor: Constants.noneProviderName
1303+
});
1304+
}
12931305
}
12941306

12951307
if (doc && doc.languageId === Constants.sqlPlanLanguageId) {

src/models/interfaces.ts

+4
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ import * as vscodeMssql from 'vscode-mssql';
1010
import { AzureAuthType } from './contracts/azure';
1111

1212
// interfaces
13+
export interface IntelliSenseConfig {
14+
setQueryEditorLanguageToNone: boolean;
15+
}
16+
1317
export enum ContentType {
1418
Root = 0,
1519
Messages = 1,

0 commit comments

Comments
 (0)