diff --git a/Src/SwqlStudio/LexerService.cs b/Src/SwqlStudio/LexerService.cs index d6214bcc9..f1081dc9c 100644 --- a/Src/SwqlStudio/LexerService.cs +++ b/Src/SwqlStudio/LexerService.cs @@ -193,11 +193,15 @@ public IEnumerable GetAutoCompletionKeywords(int textPos) /// private IEnumerable FollowNavigationProperties(string proposedEntity) { + // we haven't got properly filled entities. + if (!_swisEntities.ContainsKey("")) + return Enumerable.Empty(); + var ns = _swisEntities[""]; foreach (var dot in ParsePaths(proposedEntity)) { - if (ns.NavigationProperties.ContainsKey(dot.Item2)) + if (ns.NavigationProperties.ContainsKey(dot.Item2) && _swisEntities.ContainsKey(ns.NavigationProperties[dot.Item2])) { ns = _swisEntities[ns.NavigationProperties[dot.Item2]]; } @@ -210,7 +214,7 @@ private IEnumerable FollowNavigationProperties(string proposedEntity) return ns.ColumnNames; } - private ExpectedCaretPosition DetectAutoCompletion(string text, int textPos) + private static ExpectedCaretPosition DetectAutoCompletion(string text, int textPos) { if (Settings.Default.IntellisenseEnabled) return new IntellisenseProvider(text).ParseFor(textPos); diff --git a/Src/SwqlStudio/MainForm.ApplicationService.cs b/Src/SwqlStudio/MainForm.ApplicationService.cs index 7b68d81a4..74f96e98d 100644 --- a/Src/SwqlStudio/MainForm.ApplicationService.cs +++ b/Src/SwqlStudio/MainForm.ApplicationService.cs @@ -13,7 +13,10 @@ public void AddTextToEditor(string text, ConnectionInfo info) if (info == null) info = ActiveConnectionInfo; - CreateQueryTab(info.Title, info); + IMetadataProvider metadataProvider; + _metadataProviders.TryGetValue(info, out metadataProvider); + + CreateQueryTab(info.Title, info, metadataProvider); ActiveQueryTab.QueryText = text; } diff --git a/Src/SwqlStudio/MainForm.cs b/Src/SwqlStudio/MainForm.cs index 8201f7c4a..54716f19f 100644 --- a/Src/SwqlStudio/MainForm.cs +++ b/Src/SwqlStudio/MainForm.cs @@ -121,7 +121,7 @@ private void AddNewQueryTab() } } - private QueryTab CreateQueryTab(string title, ConnectionInfo info, IMetadataProvider provider = null) + private QueryTab CreateQueryTab(string title, ConnectionInfo info, IMetadataProvider provider) { var tab = new TabPage(title) { BorderStyle = BorderStyle.None, Padding = new Padding(0) }; var queryTab = new QueryTab { ConnectionInfo = info, Dock = DockStyle.Fill, ApplicationService = this }; @@ -141,12 +141,6 @@ private QueryTab CreateQueryTab(string title, ConnectionInfo info, IMetadataProv return queryTab; } - private void CloneActiveTabWithNewQuery(string query) - { - QueryTab tab = CreateQueryTab(ActiveConnectionTab.ConnectionInfo.Title, ActiveConnectionTab.ConnectionInfo); - tab.QueryText = query; - } - private void menuFileOpen_Click(object sender, EventArgs e) { if (openFileDialog.ShowDialog() == DialogResult.OK) @@ -170,7 +164,10 @@ private void OpenFiles(string[] fns) var connectionInfo = ActiveConnectionInfo.Copy(); connectionInfo.Connect(); - queryTab = CreateQueryTab(Path.GetFileName(fn), connectionInfo); + IMetadataProvider metadataProvider; + _metadataProviders.TryGetValue(connectionInfo, out metadataProvider); + + queryTab = CreateQueryTab(Path.GetFileName(fn), connectionInfo, metadataProvider); queryTab.QueryText = File.ReadAllText(fn); // Modified flag is set during loading because the document // "changes" (from nothing to something). So, clear it again.