Browse Source

VBNetLanguageBinding returns LanguageProperties.VBNet, so that Context actions now work also for VB.

Context actions and Highlight symbol are enabled only for .cs and .vb files.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@6347 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
pull/1/head
Martin Koníček 16 years ago
parent
commit
9485a07bdb
  1. 5
      src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetLanguageBinding.cs
  2. 24
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CaretReferencesRenderer.cs
  3. 12
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorView.cs
  4. 14
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActionsRenderer.cs
  5. 2
      src/Main/Base/Project/Src/Editor/Commands/ClassMemberMenuBuilder.cs
  6. 2
      src/Main/Base/Project/Src/Services/RefactoringService/ContextActions/ContextActionsBulbControl.xaml.cs
  7. 4
      src/Main/Base/Project/Src/Services/RefactoringService/ContextActions/ContextActionsService.cs
  8. 3
      src/Main/Base/Project/Src/Services/RefactoringService/ContextActionsHelper.cs

5
src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetLanguageBinding.cs

@ -7,6 +7,7 @@ @@ -7,6 +7,7 @@
using System;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Editor;
namespace ICSharpCode.VBNetBinding
@ -23,5 +24,9 @@ namespace ICSharpCode.VBNetBinding @@ -23,5 +24,9 @@ namespace ICSharpCode.VBNetBinding
public override IBracketSearcher BracketSearcher {
get { return new VBNetBracketSearcher(); }
}
public override LanguageProperties Properties {
get { return LanguageProperties.VBNet; }
}
}
}

24
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CaretReferencesRenderer.cs

@ -38,7 +38,15 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -38,7 +38,15 @@ namespace ICSharpCode.AvalonEdit.AddIn
ExpressionHighlightRenderer highlightRenderer;
ResolveResult lastResolveResult;
public bool IsEnabled
{
get {
string fileName = this.Editor.FileName;
return CodeEditorOptions.Instance.HighlightSymbol && (fileName.EndsWith(".cs") || fileName.EndsWith(".vb"));
}
}
/// <summary>
/// In the code editor, highlights all references to the expression under the caret (for better code readability).
/// </summary>
@ -62,22 +70,22 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -62,22 +70,22 @@ namespace ICSharpCode.AvalonEdit.AddIn
void TimerTick(object sender, EventArgs e)
{
if (!CodeEditorOptions.Instance.HighlightSymbol)
return;
this.delayTimer.Stop();
// almost the same as DebuggerService.HandleToolTipRequest
if (!IsEnabled)
return;
var referencesToBeHighlighted = GetReferencesInCurrentFile(this.lastResolveResult);
this.highlightRenderer.SetHighlight(referencesToBeHighlighted);
}
void TimerMoveTick(object sender, EventArgs e)
{
if (!CodeEditorOptions.Instance.HighlightSymbol)
return;
this.delayMoveTimer.Stop();
this.delayTimer.Stop();
if (!IsEnabled)
return;
var resolveResult = GetExpressionUnderCaret();
if (resolveResult == null) {
this.lastResolveResult = resolveResult;

12
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorView.cs

@ -60,7 +60,7 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -60,7 +60,7 @@ namespace ICSharpCode.AvalonEdit.AddIn
this.TextArea.TextView.MouseDown += TextViewMouseDown;
this.TextArea.Caret.PositionChanged += HighlightBrackets;
SetUpTabSnippetHandler();
SetupTabSnippetHandler();
}
protected override string FileName {
@ -74,8 +74,10 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -74,8 +74,10 @@ namespace ICSharpCode.AvalonEdit.AddIn
HighlightBrackets(null, e);
else if (e.PropertyName == "EnableFolding")
UpdateParseInformation();
else if (e.PropertyName == "HighlightSymbol")
this.caretReferencesRenderer.ClearHighlight();
else if (e.PropertyName == "HighlightSymbol") {
if (this.caretReferencesRenderer != null)
this.caretReferencesRenderer.ClearHighlight();
}
}
#region CaretPositionChanged - Bracket Highlighting
@ -102,7 +104,7 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -102,7 +104,7 @@ namespace ICSharpCode.AvalonEdit.AddIn
#endregion
#region Custom Tab command (code snippet expansion)
void SetUpTabSnippetHandler()
void SetupTabSnippetHandler()
{
var editingKeyBindings = this.TextArea.DefaultInputHandler.Editing.InputBindings.OfType<KeyBinding>();
var tabBinding = editingKeyBindings.Single(b => b.Key == Key.Tab && b.Modifiers == ModifierKeys.None);
@ -346,7 +348,7 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -346,7 +348,7 @@ namespace ICSharpCode.AvalonEdit.AddIn
#region Ctrl+Click Go To Definition
GoToDefinition goToDefinitionCommand;
protected GoToDefinition GotoDefinitionCommand {
protected GoToDefinition GotoDefinitionCommand {
get
{
if (goToDefinitionCommand == null)

14
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActionsRenderer.cs

@ -34,6 +34,18 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -34,6 +34,18 @@ namespace ICSharpCode.AvalonEdit.AddIn
DispatcherTimer delayMoveTimer;
const int delayMoveMilliseconds = 100;
public bool IsEnabled
{
get {
try {
string fileName = this.Editor.FileName;
return fileName.EndsWith(".cs") || fileName.EndsWith(".vb");
} catch {
return false;
}
}
}
public ContextActionsRenderer(CodeEditorView editor)
{
if (editor == null)
@ -79,6 +91,8 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -79,6 +91,8 @@ namespace ICSharpCode.AvalonEdit.AddIn
void TimerMoveTick(object sender, EventArgs e)
{
this.delayMoveTimer.Stop();
if (!IsEnabled)
return;
var availableActions = ContextActionsService.Instance.GetAvailableActions(this.Editor);
var availableActionsVM = new ObservableCollection<ContextActionViewModel>(

2
src/Main/Base/Project/Src/Editor/Commands/ClassMemberMenuBuilder.cs

@ -57,6 +57,7 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands @@ -57,6 +57,7 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands
if (!FindReferencesAndRenameHelper.IsReadOnly(member.DeclaringType) &&
!(member is IProperty && ((IProperty)member).IsIndexer)) {
cmd = new MenuCommand("${res:SharpDevelop.Refactoring.RenameCommand}", Rename);
cmd.ShortcutKeys = Keys.Control | Keys.R;
cmd.Tag = member;
list.Add(cmd);
}
@ -68,6 +69,7 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands @@ -68,6 +69,7 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands
}
cmd = new MenuCommand("${res:SharpDevelop.Refactoring.FindReferencesCommand}", FindReferences);
cmd.ShortcutKeys = Keys.F12;
cmd.Tag = member;
list.Add(cmd);

2
src/Main/Base/Project/Src/Services/RefactoringService/ContextActions/ContextActionsBulbControl.xaml.cs

@ -38,7 +38,7 @@ namespace ICSharpCode.SharpDevelop.Refactoring @@ -38,7 +38,7 @@ namespace ICSharpCode.SharpDevelop.Refactoring
get { return isOpen; }
set {
isOpen = value;
this.Header.Opacity = isOpen ? 1.0 : 1.0;
this.Header.Opacity = isOpen ? 1.0 : 0.7;
this.Header.BorderThickness = isOpen ? new Thickness(1, 1, 1, 0) : new Thickness(1);
this.ActionsTreeView.Visibility = isOpen ? Visibility.Visible : Visibility.Collapsed;
}

4
src/Main/Base/Project/Src/Services/RefactoringService/ContextActions/ContextActionsService.cs

@ -39,8 +39,8 @@ namespace ICSharpCode.SharpDevelop.Refactoring @@ -39,8 +39,8 @@ namespace ICSharpCode.SharpDevelop.Refactoring
/// </summary>
public IEnumerable<IContextAction> GetAvailableActions(ITextEditor editor)
{
//var parseTask = ParserService.BeginParseCurrentViewContent();
//parseTask.Wait();
var parseTask = ParserService.BeginParseCurrentViewContent();
parseTask.Wait();
var editorContext = new EditorContext(editor);
// could run providers in parallel
foreach (var provider in this.providers) {

3
src/Main/Base/Project/Src/Services/RefactoringService/ContextActionsHelper.cs

@ -34,9 +34,6 @@ namespace ICSharpCode.SharpDevelop.Refactoring @@ -34,9 +34,6 @@ namespace ICSharpCode.SharpDevelop.Refactoring
{
var baseClassList = @class.ClassInheritanceTree.Where(
baseClass => (baseClass != @class) && (baseClass.CompilationUnit != null) && (baseClass.CompilationUnit.FileName != null));
// Reverse to show the base classes from the most general to the most derived one
//.Reverse();
//baseClassList.Sort(new BaseClassComparer());
var popupViewModel = new ContextActionsViewModel { Title = MenuService.ConvertLabel(StringParser.Parse(
"${res:SharpDevelop.Refactoring.BaseClassesOf}", new StringTagPair("Name", @class.Name)))};
popupViewModel.Actions = new PopupListViewModelBuilder().BuildListViewModel(baseClassList);

Loading…
Cancel
Save