diff options
Diffstat (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/CompletionData.cs')
-rw-r--r-- | main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/CompletionData.cs | 39 |
1 files changed, 30 insertions, 9 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/CompletionData.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/CompletionData.cs index 2303d06b5e..e93c4687d0 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/CompletionData.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/CompletionData.cs @@ -30,11 +30,11 @@ using System; using System.Collections.Generic; using System.Linq; using MonoDevelop.Core; -using ICSharpCode.NRefactory.Completion; +using MonoDevelop.Ide.Editor.Extension; namespace MonoDevelop.Ide.CodeCompletion { - public class CompletionData : ICompletionData, IComparable + public class CompletionData : IComparable { protected CompletionData () {} @@ -43,6 +43,13 @@ namespace MonoDevelop.Ide.CodeCompletion public virtual string Description { get; set; } public virtual string CompletionText { get; set; } + /// <summary> + /// int.MaxValue == highest prioriy, + /// -int.MaxValue == lowest priority + /// </summary> + /// <value>The priority group.</value> + public virtual int PriorityGroup { get { return 0; } } + public virtual string GetDisplayDescription (bool isSelected) { return null; @@ -70,13 +77,13 @@ namespace MonoDevelop.Ide.CodeCompletion } } - public virtual IEnumerable<ICompletionData> OverloadedData { + public virtual IReadOnlyList<CompletionData> OverloadedData { get { throw new InvalidOperationException (); } } - public virtual void AddOverload (ICompletionData data) + public virtual void AddOverload (CompletionData data) { throw new InvalidOperationException (); } @@ -102,7 +109,7 @@ namespace MonoDevelop.Ide.CodeCompletion return result; } - public virtual void InsertCompletionText (CompletionListWindow window, ref KeyActions ka, Gdk.Key closeChar, char keyChar, Gdk.ModifierType modifier) + public virtual void InsertCompletionText (CompletionListWindow window, ref KeyActions ka, KeyDescriptor descriptor) { var currentWord = GetCurrentWord (window); window.CompletionWidget.SetCompletionText (window.CodeCompletionContext, currentWord, CompletionText); @@ -117,12 +124,12 @@ namespace MonoDevelop.Ide.CodeCompletion public virtual int CompareTo (object obj) { - if (!(obj is ICompletionData)) + if (!(obj is CompletionData)) return 0; - return Compare (this, (ICompletionData)obj); + return Compare (this, (CompletionData)obj); } - public static int Compare (ICompletionData a, ICompletionData b) + public static int Compare (CompletionData a, CompletionData b) { var result = ((a.DisplayFlags & DisplayFlags.Obsolete) == (b.DisplayFlags & DisplayFlags.Obsolete)) ? StringComparer.OrdinalIgnoreCase.Compare (a.DisplayText, b.DisplayText) : (a.DisplayFlags & DisplayFlags.Obsolete) != 0 ? 1 : -1; if (result == 0) { @@ -133,7 +140,7 @@ namespace MonoDevelop.Ide.CodeCompletion if (aIsImport && !bIsImport) return 1; if (aIsImport && bIsImport) - return StringComparer.Ordinal.Compare (a.Description, b.Description); + return StringComparer.Ordinal.Compare (((CompletionData)a).Description, ((CompletionData)b).Description); var ca = a as CompletionData; var cb = b as CompletionData; if (ca != null && cb != null && !ca.Icon.IsNull && !cb.Icon.IsNull) { @@ -144,5 +151,19 @@ namespace MonoDevelop.Ide.CodeCompletion } #endregion + + protected string ApplyDiplayFlagsFormatting (string markup) + { + if (!HasOverloads && (DisplayFlags & DisplayFlags.Obsolete) != 0 || HasOverloads && OverloadedData.All (data => (data.DisplayFlags & DisplayFlags.Obsolete) != 0)) + return "<s>" + markup + "</s>"; + if ((DisplayFlags & DisplayFlags.MarkedBold) != 0) + return "<b>" + markup + "</b>"; + return markup; + } + + public virtual string GetDisplayTextMarkup () + { + return ApplyDiplayFlagsFormatting (GLib.Markup.EscapeText (DisplayText)); + } } } |