mirror of
https://github.com/ckaczor/sqltoolsservice.git
synced 2026-01-21 17:24:03 -05:00
Skip formatting if the language flavor shows this is not an MSSQL doc (#445)
This commit is contained in:
@@ -53,6 +53,13 @@ namespace Microsoft.SqlTools.ServiceLayer.Formatter
|
||||
get { return ServiceProvider.GetService<WorkspaceService<SqlToolsSettings>>(); }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the language service. Note: should handle case where this is null in cases where unit tests do not set this up
|
||||
/// </summary>
|
||||
private LanguageService LanguageService
|
||||
{
|
||||
get { return ServiceProvider.GetService<LanguageService>(); }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Ensure formatter settings are always up to date
|
||||
@@ -105,6 +112,11 @@ namespace Microsoft.SqlTools.ServiceLayer.Formatter
|
||||
{
|
||||
return await Task.Factory.StartNew(() =>
|
||||
{
|
||||
if (ShouldSkipFormatting(docFormatParams))
|
||||
{
|
||||
return Array.Empty<TextEdit>();
|
||||
}
|
||||
|
||||
var range = docFormatParams.Range;
|
||||
ScriptFile scriptFile = GetFile(docFormatParams);
|
||||
if (scriptFile == null)
|
||||
@@ -117,10 +129,26 @@ namespace Microsoft.SqlTools.ServiceLayer.Formatter
|
||||
});
|
||||
}
|
||||
|
||||
private async Task<TextEdit[]> FormatAndReturnEdits(DocumentFormattingParams docFormatParams)
|
||||
private bool ShouldSkipFormatting(DocumentFormattingParams docFormatParams)
|
||||
{
|
||||
if (docFormatParams == null
|
||||
|| docFormatParams.TextDocument == null
|
||||
|| docFormatParams.TextDocument.Uri == null)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return (LanguageService != null && LanguageService.ShouldSkipNonMssqlFile(docFormatParams.TextDocument.Uri));
|
||||
}
|
||||
|
||||
private async Task<TextEdit[]> FormatAndReturnEdits(DocumentFormattingParams docFormatParams)
|
||||
{
|
||||
return await Task.Factory.StartNew(() =>
|
||||
{
|
||||
if (ShouldSkipFormatting(docFormatParams))
|
||||
{
|
||||
return Array.Empty<TextEdit>();
|
||||
}
|
||||
|
||||
var scriptFile = GetFile(docFormatParams);
|
||||
if (scriptFile == null
|
||||
|| scriptFile.FileLines.Count == 0)
|
||||
|
||||
@@ -36,7 +36,7 @@ namespace Microsoft.SqlTools.ServiceLayer.LanguageServices
|
||||
/// Main class for Language Service functionality including anything that requires knowledge of
|
||||
/// the language to perform, such as definitions, intellisense, etc.
|
||||
/// </summary>
|
||||
public sealed class LanguageService: IDisposable
|
||||
public class LanguageService: IDisposable
|
||||
{
|
||||
#region Singleton Instance Implementation
|
||||
|
||||
@@ -960,7 +960,11 @@ namespace Microsoft.SqlTools.ServiceLayer.LanguageServices
|
||||
return ShouldSkipNonMssqlFile(scriptFile.ClientFilePath);
|
||||
}
|
||||
|
||||
private bool ShouldSkipNonMssqlFile(string uri)
|
||||
/// <summary>
|
||||
/// Checks if a given URI is not an MSSQL file. Only files explicitly excluded by a language flavor change
|
||||
/// notification will be treated as skippable
|
||||
/// </summary>
|
||||
public virtual bool ShouldSkipNonMssqlFile(string uri)
|
||||
{
|
||||
bool isNonMssql = false;
|
||||
nonMssqlUriMap.TryGetValue(uri, out isNonMssql);
|
||||
|
||||
Reference in New Issue
Block a user