From 802239523ea5004041888acc2301b7b77d9852e8 Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Fri, 10 Jan 2014 22:55:27 +0100 Subject: [PATCH] fix #272 - TODO: XmlDoc completion --- .../Project/CSharpBinding.csproj | 1 + .../Completion/CSharpCompletionDataFactory.cs | 2 +- .../Project/Src/Completion/CompletionData.cs | 2 +- .../Completion/EventCreationCompletionData.cs | 4 +-- .../Src/Completion/XmlDocCompletionData.cs | 36 +++++++++++++++++++ 5 files changed, 40 insertions(+), 5 deletions(-) create mode 100644 src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/XmlDocCompletionData.cs diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj b/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj index eb1f315630..495773c7df 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj @@ -79,6 +79,7 @@ + diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/CSharpCompletionDataFactory.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/CSharpCompletionDataFactory.cs index db90e804e5..25597a1cdd 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/CSharpCompletionDataFactory.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/CSharpCompletionDataFactory.cs @@ -151,7 +151,7 @@ namespace CSharpBinding.Completion ICompletionData ICompletionDataFactory.CreateXmlDocCompletionData(string tag, string description, string tagInsertionText) { - return new CompletionData("TODO: XmlDoc completion"); + return new XmlDocCompletionData(tag, description, tagInsertionText); } #endregion diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/CompletionData.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/CompletionData.cs index 5e1dd91107..515a141e46 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/CompletionData.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/CompletionData.cs @@ -89,7 +89,7 @@ namespace CSharpBinding.Completion protected virtual object CreateFancyDescription() { - return null; + return Description; } } } diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/EventCreationCompletionData.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/EventCreationCompletionData.cs index 815692652a..c0152b76be 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/EventCreationCompletionData.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/EventCreationCompletionData.cs @@ -88,6 +88,4 @@ namespace CSharpBinding.Completion } } } -} - - +} \ No newline at end of file diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/XmlDocCompletionData.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/XmlDocCompletionData.cs new file mode 100644 index 0000000000..764ef65d17 --- /dev/null +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/XmlDocCompletionData.cs @@ -0,0 +1,36 @@ +// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) +// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) +// +using System; +using System.Linq; +using ICSharpCode.SharpDevelop; +using ICSharpCode.SharpDevelop.Editor.CodeCompletion; + +namespace CSharpBinding.Completion +{ + /// + /// Completion item for XMLDoc tags. + /// + class XmlDocCompletionData : CompletionData + { + public XmlDocCompletionData(string tag, string description, string tagInsertionText) : base(tag) + { + this.Description = description; + this.CompletionText = tagInsertionText ?? tag; + this.Image = ClassBrowserIconService.CodeTemplate; + } + + public override void Complete(CompletionContext context) + { + int index = CompletionText.IndexOf('|'); + if (index > -1) { + context.Editor.Document.Replace(context.StartOffset, context.Length, CompletionText.Remove(index, 1)); + context.Editor.Caret.Offset = context.StartOffset + index; + } else { + base.Complete(context); + } + } + } +} + +