Skip to content

Commit

Permalink
Fixed autocomplete of functions that have a defined lookup type param…
Browse files Browse the repository at this point in the history
…eter
  • Loading branch information
MarkMpn committed Dec 5, 2024
1 parent 488d65e commit 535cbd1
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 12 deletions.
15 changes: 9 additions & 6 deletions MarkMpn.Sql4Cds.LanguageServer/Autocomplete/Autocomplete.cs
Original file line number Diff line number Diff line change
Expand Up @@ -540,7 +540,7 @@ public IEnumerable<SqlAutocompleteItem> GetSuggestions(string text, int pos)
message.IsValidAsTableValuedFunction())
{
if (!Guid.TryParse(table.Key, out _))
items.Add(new TVFAutocompleteItem(message, table.Key, currentLength));
items.Add(new TVFAutocompleteItem(message, instance, table.Key, currentLength));

attributes.AddRange(GetMessageOutputAttributes(message, instance));
}
Expand Down Expand Up @@ -786,7 +786,7 @@ private IEnumerable<SqlAutocompleteItem> AutocompleteTableName(string currentWor

// Show TVF list
if (fromClause && ds.Metadata != null)
list.AddRange(ds.MessageCache.GetAllMessages().Where(x => x.IsValidAsTableValuedFunction()).Select(x => new TVFAutocompleteItem(x, _columnOrdering, currentLength)));
list.AddRange(ds.MessageCache.GetAllMessages().Where(x => x.IsValidAsTableValuedFunction()).Select(x => new TVFAutocompleteItem(x, _columnOrdering, ds, currentLength)));
}
}
else if (TryParseTableName(currentWord, out var instanceName, out var schemaName, out var tableName, out var parts, out var lastPartLength))
Expand Down Expand Up @@ -856,7 +856,7 @@ private IEnumerable<SqlAutocompleteItem> AutocompleteTableName(string currentWor
if (fromClause)
{
messages = messages.Where(e => e.IsValidAsTableValuedFunction() && e.Name.StartsWith(lastPart, StringComparison.OrdinalIgnoreCase));
list.AddRange(messages.Select(e => new TVFAutocompleteItem(e, _columnOrdering, lastPartLength)));
list.AddRange(messages.Select(e => new TVFAutocompleteItem(e, _columnOrdering, instance, lastPartLength)));
}
}
}
Expand Down Expand Up @@ -1552,16 +1552,19 @@ class TVFAutocompleteItem : SqlAutocompleteItem
{
private readonly Message _message;
private readonly ColumnOrdering _columnOrdering;
private readonly DataSource _dataSource;

public TVFAutocompleteItem(Message message, ColumnOrdering columnOrdering, int replaceLength) : base(message.Name, replaceLength, CompletionItemKind.Function)
public TVFAutocompleteItem(Message message, ColumnOrdering columnOrdering, DataSource dataSource, int replaceLength) : base(message.Name, replaceLength, CompletionItemKind.Function)
{
_message = message;
_columnOrdering = columnOrdering;
_dataSource = dataSource;
}

public TVFAutocompleteItem(Message message, string alias, int replaceLength) : base(alias, replaceLength, CompletionItemKind.Function)
public TVFAutocompleteItem(Message message, DataSource dataSource, string alias, int replaceLength) : base(alias, replaceLength, CompletionItemKind.Function)
{
_message = message;
_dataSource = dataSource;
}

public override string ToolTipTitle
Expand All @@ -1582,7 +1585,7 @@ public override string ToolTipText
else
parameters = parameters.OrderBy(p => p.Position);

return _message.Name + "(" + String.Join(", ", parameters.Select(p => p.Name + " " + p.GetSqlDataType(null).ToSql())) + ")";
return _message.Name + "(" + String.Join(", ", parameters.Select(p => p.Name + " " + p.GetSqlDataType(_dataSource).ToSql())) + ")";
}
set => base.ToolTipText = value;
}
Expand Down
15 changes: 9 additions & 6 deletions MarkMpn.Sql4Cds.XTB/Autocomplete.cs
Original file line number Diff line number Diff line change
Expand Up @@ -539,7 +539,7 @@ public IEnumerable<SqlAutocompleteItem> GetSuggestions(string text, int pos)
message.IsValidAsTableValuedFunction())
{
if (!Guid.TryParse(table.Key, out _))
items.Add(new TVFAutocompleteItem(message, table.Key, currentLength));
items.Add(new TVFAutocompleteItem(message, instance, table.Key, currentLength));

attributes.AddRange(GetMessageOutputAttributes(message, instance));
}
Expand Down Expand Up @@ -785,7 +785,7 @@ private IEnumerable<SqlAutocompleteItem> AutocompleteTableName(string currentWor

// Show TVF list
if (fromClause && ds.MessageCache != null)
list.AddRange(ds.MessageCache.GetAllMessages().Where(x => x.IsValidAsTableValuedFunction()).Select(x => new TVFAutocompleteItem(x, _columnOrdering, currentLength)));
list.AddRange(ds.MessageCache.GetAllMessages().Where(x => x.IsValidAsTableValuedFunction()).Select(x => new TVFAutocompleteItem(x, _columnOrdering, ds, currentLength)));
}
}
else if (TryParseTableName(currentWord, out var instanceName, out var schemaName, out var tableName, out var parts, out var lastPartLength))
Expand Down Expand Up @@ -855,7 +855,7 @@ private IEnumerable<SqlAutocompleteItem> AutocompleteTableName(string currentWor
if (fromClause)
{
messages = messages.Where(e => e.IsValidAsTableValuedFunction() && e.Name.StartsWith(lastPart, StringComparison.OrdinalIgnoreCase));
list.AddRange(messages.Select(e => new TVFAutocompleteItem(e, _columnOrdering, lastPartLength)));
list.AddRange(messages.Select(e => new TVFAutocompleteItem(e, _columnOrdering, instance, lastPartLength)));
}
}
}
Expand Down Expand Up @@ -1534,16 +1534,19 @@ class TVFAutocompleteItem : SqlAutocompleteItem
{
private readonly Message _message;
private readonly ColumnOrdering _columnOrdering;
private readonly DataSource _dataSource;

public TVFAutocompleteItem(Message message, ColumnOrdering columnOrdering, int replaceLength) : base(message.Name, replaceLength, 25)
public TVFAutocompleteItem(Message message, ColumnOrdering columnOrdering, DataSource dataSource, int replaceLength) : base(message.Name, replaceLength, 25)
{
_message = message;
_columnOrdering = columnOrdering;
_dataSource = dataSource;
}

public TVFAutocompleteItem(Message message, string alias, int replaceLength) : base(alias, replaceLength, 25)
public TVFAutocompleteItem(Message message, DataSource dataSource, string alias, int replaceLength) : base(alias, replaceLength, 25)
{
_message = message;
_dataSource = dataSource;
}

public override string ToolTipTitle
Expand All @@ -1564,7 +1567,7 @@ public override string ToolTipText
else
parameters = parameters.OrderBy(p => p.Position);

return _message.Name + "(" + String.Join(", ", parameters.Select(p => p.Name + " " + p.GetSqlDataType(null).ToSql())) + ")";
return _message.Name + "(" + String.Join(", ", parameters.Select(p => p.Name + " " + p.GetSqlDataType(_dataSource).ToSql())) + ")";
}
set => base.ToolTipText = value;
}
Expand Down

0 comments on commit 535cbd1

Please sign in to comment.