From 380bf605a194b6c678a1260f3f73dcad06d0edf6 Mon Sep 17 00:00:00 2001 From: Tyler Leonhardt Date: Thu, 26 Sep 2019 09:56:37 -0700 Subject: [PATCH 1/3] fix UNC intellisense backslash --- .../Server/LanguageServer.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/PowerShellEditorServices.Protocol/Server/LanguageServer.cs b/src/PowerShellEditorServices.Protocol/Server/LanguageServer.cs index 9c7134def..9ba10db12 100644 --- a/src/PowerShellEditorServices.Protocol/Server/LanguageServer.cs +++ b/src/PowerShellEditorServices.Protocol/Server/LanguageServer.cs @@ -2010,8 +2010,13 @@ private static CompletionItem CreateCompletionItem( // This causes the editing cursor to be placed *before* the final quote after completion, // which makes subsequent path completions work. See this part of the LSP spec for details: // https://microsoft.github.io/language-server-protocol/specification#textDocument_completion - int len = completionDetails.CompletionText.Length; - completionText = completionDetails.CompletionText.Insert(len - 1, "$0"); + + // Since we want to use a "tab stop" we need to escape a few things for Textmate to render properly. + var sb = new StringBuilder(completionDetails.CompletionText) + .Replace("\\", "\\\\") + .Replace("}", "\\}") + .Replace("$", "\\$"); + completionText = sb.Insert(sb.Length - 1, "$0").ToString(); insertTextFormat = InsertTextFormat.Snippet; } From 1d7222f970838b911a9de383189e88e3dbfbf9d2 Mon Sep 17 00:00:00 2001 From: Tyler Leonhardt Date: Fri, 27 Sep 2019 07:56:43 -0700 Subject: [PATCH 2/3] use here string --- src/PowerShellEditorServices.Protocol/Server/LanguageServer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/PowerShellEditorServices.Protocol/Server/LanguageServer.cs b/src/PowerShellEditorServices.Protocol/Server/LanguageServer.cs index 9ba10db12..3cb1a3de8 100644 --- a/src/PowerShellEditorServices.Protocol/Server/LanguageServer.cs +++ b/src/PowerShellEditorServices.Protocol/Server/LanguageServer.cs @@ -2013,7 +2013,7 @@ private static CompletionItem CreateCompletionItem( // Since we want to use a "tab stop" we need to escape a few things for Textmate to render properly. var sb = new StringBuilder(completionDetails.CompletionText) - .Replace("\\", "\\\\") + .Replace(@"\", @"\\") .Replace("}", "\\}") .Replace("$", "\\$"); completionText = sb.Insert(sb.Length - 1, "$0").ToString(); From bf5d7656e2d03c579ccea47212794c51d6a7a281 Mon Sep 17 00:00:00 2001 From: Tyler Leonhardt Date: Fri, 27 Sep 2019 09:00:33 -0700 Subject: [PATCH 3/3] here everywhere --- .../Server/LanguageServer.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/PowerShellEditorServices.Protocol/Server/LanguageServer.cs b/src/PowerShellEditorServices.Protocol/Server/LanguageServer.cs index 3cb1a3de8..f7b4854ae 100644 --- a/src/PowerShellEditorServices.Protocol/Server/LanguageServer.cs +++ b/src/PowerShellEditorServices.Protocol/Server/LanguageServer.cs @@ -2014,8 +2014,8 @@ private static CompletionItem CreateCompletionItem( // Since we want to use a "tab stop" we need to escape a few things for Textmate to render properly. var sb = new StringBuilder(completionDetails.CompletionText) .Replace(@"\", @"\\") - .Replace("}", "\\}") - .Replace("$", "\\$"); + .Replace(@"}", @"\}") + .Replace(@"$", @"\$"); completionText = sb.Insert(sb.Length - 1, "$0").ToString(); insertTextFormat = InsertTextFormat.Snippet; }