From 6c2f0f432053ef4ab7b7e7d8183ff3c3d9f3b73d Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Sat, 23 Aug 2014 10:57:33 +0200 Subject: [PATCH 01/12] Avoid unnecessary access to entity.Documentation. Improves code completion performance. --- .../Project/Src/Completion/EntityCompletionData.cs | 3 ++- .../Project/Src/Completion/TypeCompletionData.cs | 5 ++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/EntityCompletionData.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/EntityCompletionData.cs index 65ea84fc1b..9eee9b02f4 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/EntityCompletionData.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/EntityCompletionData.cs @@ -37,8 +37,9 @@ namespace CSharpBinding.Completion public EntityCompletionData(IEntity entity) : base(entity.Name) { this.entity = entity; - this.Description = entity.Documentation; this.Image = ClassBrowserIconService.GetIcon(entity); + // don't set this.Description -- we use CreateFancyDescription() instead, + // and accessing entity.Documentation in the constructor is too slow } protected override object CreateFancyDescription() diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/TypeCompletionData.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/TypeCompletionData.cs index e2351811c4..dcedf8519d 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/TypeCompletionData.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/TypeCompletionData.cs @@ -35,10 +35,9 @@ namespace CSharpBinding.Completion public TypeCompletionData(IType type) : base(type.Name) { this.type = type; - ITypeDefinition typeDef = type.GetDefinition(); - if (typeDef != null) - this.Description = typeDef.Documentation; this.Image = ClassBrowserIconService.GetIcon(type); + // don't set this.Description -- we use CreateFancyDescription() instead, + // and accessing entity.Documentation in the constructor is too slow } protected override object CreateFancyDescription() From a0d84c9cc88584773f84590c21152b5dbf60abbb Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Sat, 23 Aug 2014 08:13:32 +0200 Subject: [PATCH 02/12] fix bug in code completion: space should trigger insertion --- .../Project/Src/Services/ParserService/CodeCompletionOptions.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Main/Base/Project/Src/Services/ParserService/CodeCompletionOptions.cs b/src/Main/Base/Project/Src/Services/ParserService/CodeCompletionOptions.cs index 730bb2ac95..61c81972e7 100644 --- a/src/Main/Base/Project/Src/Services/ParserService/CodeCompletionOptions.cs +++ b/src/Main/Base/Project/Src/Services/ParserService/CodeCompletionOptions.cs @@ -84,7 +84,7 @@ namespace ICSharpCode.SharpDevelop } public static string CompletionCharList { - get { return properties.Get("CompletionCharList", @"{}[]().,:;+-*/%&|^!~=<>?@#'""\"); } + get { return properties.Get("CompletionCharList", @" {}[]().,:;+-*/%&|^!~=<>?@#'""\"); } set { properties.Set("CompletionCharList", value); } } From 4170e41ea8af3edd4ac2b4f8fcc523b7df4eb9b9 Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Sat, 23 Aug 2014 08:21:04 +0200 Subject: [PATCH 03/12] fix #542: Code completion window description tooltip missing --- .../CodeCompletion/CompletionWindow.cs | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/CodeCompletion/CompletionWindow.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/CodeCompletion/CompletionWindow.cs index 3a81b86a0f..bf1c8ac678 100644 --- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/CodeCompletion/CompletionWindow.cs +++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/CodeCompletion/CompletionWindow.cs @@ -64,8 +64,6 @@ namespace ICSharpCode.AvalonEdit.CodeCompletion } #region ToolTip handling - public bool ShowDocumentationTooltips { get; set; } - void toolTip_Closed(object sender, RoutedEventArgs e) { // Clear content after tooltip is closed. @@ -77,11 +75,6 @@ namespace ICSharpCode.AvalonEdit.CodeCompletion void completionList_SelectionChanged(object sender, SelectionChangedEventArgs e) { - if (!ShowDocumentationTooltips) { - toolTip.IsOpen = false; - return; - } - var item = completionList.SelectedItem; if (item == null) return; From d41e13e16434fa55ed9a17fb911cb3ef74f6e5ac Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Sat, 23 Aug 2014 11:40:28 +0200 Subject: [PATCH 04/12] fix #543: Ctrl+Space Code completion description tooltip for classes should include namespace name --- .../Project/Src/Completion/EntityCompletionData.cs | 2 +- .../CSharpBinding/Project/Src/Completion/TypeCompletionData.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/EntityCompletionData.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/EntityCompletionData.cs index 9eee9b02f4..16d627ef43 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/EntityCompletionData.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/EntityCompletionData.cs @@ -45,7 +45,7 @@ namespace CSharpBinding.Completion protected override object CreateFancyDescription() { return new FlowDocumentScrollViewer { - Document = XmlDocFormatter.CreateTooltip(entity, false), + Document = XmlDocFormatter.CreateTooltip(entity, entity is ITypeDefinition), VerticalScrollBarVisibility = ScrollBarVisibility.Auto }; } diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/TypeCompletionData.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/TypeCompletionData.cs index dcedf8519d..a60836e910 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/TypeCompletionData.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/TypeCompletionData.cs @@ -43,7 +43,7 @@ namespace CSharpBinding.Completion protected override object CreateFancyDescription() { return new FlowDocumentScrollViewer { - Document = XmlDocFormatter.CreateTooltip(type, false), + Document = XmlDocFormatter.CreateTooltip(type), VerticalScrollBarVisibility = ScrollBarVisibility.Auto }; } From 2bdddf31366acc674968fb3f2f34210974fd4fe6 Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Sat, 23 Aug 2014 14:11:04 +0200 Subject: [PATCH 05/12] add special handling for enum member completion data --- .../Project/CSharpBinding.csproj | 1 + .../Completion/CSharpCompletionDataFactory.cs | 3 +- .../Completion/EnumMemberCompletionData.cs | 52 +++++++++++++++++++ 3 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/EnumMemberCompletionData.cs diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj b/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj index 970be27a88..848785d6fb 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj @@ -78,6 +78,7 @@ + diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/CSharpCompletionDataFactory.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/CSharpCompletionDataFactory.cs index c3f005e892..9396dc084c 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/CSharpCompletionDataFactory.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/CSharpCompletionDataFactory.cs @@ -86,8 +86,7 @@ namespace CSharpBinding.Completion ICompletionData ICompletionDataFactory.CreateMemberCompletionData(IType type, IEntity member) { - string typeName = builder.ConvertType(type).ToString(); - return new CompletionData(typeName + "." + member.Name); + return new EnumMemberCompletionData(type, member, builder); } ICompletionData ICompletionDataFactory.CreateLiteralCompletionData(string title, string description, string insertText) diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/EnumMemberCompletionData.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/EnumMemberCompletionData.cs new file mode 100644 index 0000000000..9d0b2c9d33 --- /dev/null +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/EnumMemberCompletionData.cs @@ -0,0 +1,52 @@ +// Copyright (c) 2014 AlphaSierraPapa for the SharpDevelop Team +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this +// software and associated documentation files (the "Software"), to deal in the Software +// without restriction, including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all copies or +// substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. + +using System; +using System.Linq; +using System.Windows.Controls; +using ICSharpCode.NRefactory.CSharp.Refactoring; +using ICSharpCode.NRefactory.TypeSystem; +using ICSharpCode.SharpDevelop; +using ICSharpCode.SharpDevelop.Editor; +namespace CSharpBinding.Completion +{ + class EnumMemberCompletionData : CompletionData + { + IType enumType; + + IEntity member; + + public EnumMemberCompletionData(IType enumType, IEntity member, TypeSystemAstBuilder builder) : base(enumType.Name + "." + member.Name) + { + this.enumType = enumType; + this.member = member; + this.Image = ClassBrowserIconService.Const; + this.CompletionText = builder.ConvertType(enumType).ToString() + "." + member.Name; + } + + protected override object CreateFancyDescription() + { + return new FlowDocumentScrollViewer { + Document = XmlDocFormatter.CreateTooltip(member, false), + VerticalScrollBarVisibility = ScrollBarVisibility.Auto + }; + } + } +} + + From a81b6c234937c4b17fc906bf91a6c52529bb1e88 Mon Sep 17 00:00:00 2001 From: julodnik Date: Sun, 29 Jun 2014 14:06:13 +0200 Subject: [PATCH 06/12] Add Underline attribute in syntax highlighting --- data/resources/StringResources.resx | 3 +++ .../Src/CustomizedHighlightingColor.cs | 1 + .../Src/Options/CustomizedHighlightingItem.cs | 17 ++++++++++++++--- .../Src/Options/HighlightingOptions.xaml | 2 ++ .../Src/Options/IHighlightingItem.cs | 5 +++++ .../Src/Options/NamedColorHighlightingItem.cs | 16 +++++++++++++++- .../Src/Options/SimpleHighlightingItem.cs | 1 + .../CustomizingHighlighter.cs | 3 ++- .../Src/View/HexEditOptionsPanel.xaml.cs | 2 ++ .../Highlighting/HighlightedInlineBuilder.cs | 2 +- .../Highlighting/HighlightingColor.cs | 15 +++++++++++++++ .../Highlighting/HighlightingColorizer.cs | 8 ++++++-- .../Highlighting/Xshd/V2Loader.cs | 1 + .../Xshd/XmlHighlightingDefinition.cs | 1 + .../Highlighting/Xshd/XshdColor.cs | 8 ++++++++ 15 files changed, 77 insertions(+), 8 deletions(-) diff --git a/data/resources/StringResources.resx b/data/resources/StringResources.resx index 0be935f412..0fd83c63fb 100644 --- a/data/resources/StringResources.resx +++ b/data/resources/StringResources.resx @@ -1729,6 +1729,9 @@ Examples: "120", "MainClass", "Main.cs, 120". Italic + + Underlined + Export highlighting colors diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CustomizedHighlightingColor.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CustomizedHighlightingColor.cs index a5df6f78c6..c113ed576c 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CustomizedHighlightingColor.cs +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CustomizedHighlightingColor.cs @@ -43,6 +43,7 @@ namespace ICSharpCode.AvalonEdit.AddIn public bool Bold { get; set; } public bool Italic { get; set; } + public bool Underline { get; set; } public Color? Foreground { get; set; } public Color? Background { get; set; } diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Options/CustomizedHighlightingItem.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Options/CustomizedHighlightingItem.cs index ce076196b5..e18c5be58a 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Options/CustomizedHighlightingItem.cs +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Options/CustomizedHighlightingItem.cs @@ -66,6 +66,7 @@ namespace ICSharpCode.AvalonEdit.AddIn.Options { OnPropertyChanged("Bold"); OnPropertyChanged("Italic"); + OnPropertyChanged("Underline"); OnPropertyChanged("Foreground"); OnPropertyChanged("UseDefaultForeground"); OnPropertyChanged("Background"); @@ -73,7 +74,7 @@ namespace ICSharpCode.AvalonEdit.AddIn.Options OnPropertyChanged("IsCustomized"); } - void SetCustomization(bool? bold = null, bool? italic = null, + void SetCustomization(bool? bold = null, bool? italic = null, bool? underline = null, Color? foreground = null, bool? useDefaultForeground = null, Color? background = null, bool? useDefaultBackground = null) { @@ -82,6 +83,7 @@ namespace ICSharpCode.AvalonEdit.AddIn.Options newColor.Name = this.Name; newColor.Bold = bold ?? this.Bold; newColor.Italic = italic ?? this.Italic; + newColor.Underline = underline ?? this.Underline; if (useDefaultBackground ?? this.UseDefaultBackground) newColor.Background = null; @@ -99,7 +101,7 @@ namespace ICSharpCode.AvalonEdit.AddIn.Options else if (customization != null) customizationList.Remove(customization); - if (newColor.Bold == original.Bold && newColor.Italic == original.Italic && + if (newColor.Bold == original.Bold && newColor.Italic == original.Italic && newColor.Underline == original.Underline && (newColor.Background == null) == original.UseDefaultBackground && (newColor.Background == null || newColor.Background == original.Background) && (newColor.Foreground == null) == original.UseDefaultForeground && @@ -140,6 +142,15 @@ namespace ICSharpCode.AvalonEdit.AddIn.Options } } + public bool Underline { + get { + return (customization != null) ? customization.Underline : original.Underline; + } + set { + SetCustomization(underline: value); + } + } + public Color Foreground { get { return (customization != null) ? (customization.Foreground ?? original.Foreground) : original.Foreground; @@ -191,7 +202,7 @@ namespace ICSharpCode.AvalonEdit.AddIn.Options public void Reset() { original.Reset(); - SetCustomization(original.Bold, original.Italic, original.Foreground, original.UseDefaultForeground, original.Background, original.UseDefaultBackground); + SetCustomization(original.Bold, original.Italic, original.Underline, original.Foreground, original.UseDefaultForeground, original.Background, original.UseDefaultBackground); AllPropertiesChanged(); } diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Options/HighlightingOptions.xaml b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Options/HighlightingOptions.xaml index 93508d4370..b78fff3c35 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Options/HighlightingOptions.xaml +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Options/HighlightingOptions.xaml @@ -44,6 +44,8 @@ Content="{core:Localize Dialog.HighlightingEditor.ColorDlg.Bold}"/> +