Browse Source

Fixed forum-18320: exception when converting VB code using named arguments to Boo.

Add ShellExecuteDisplayBinding: allows to launch files using the default program associated with them in SharpDevelop's "Open With" menu.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2649 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 19 years ago
parent
commit
1cfbd49b36
  1. 4
      AddIns/ICSharpCode.SharpDevelop.addin
  2. 6
      src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Project/ConvertVisitorExpressions.cs
  3. 7
      src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Project/ConvertVisitorGlobal.cs
  4. 1
      src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
  5. 37
      src/Main/Base/Project/Src/Services/DisplayBinding/ShellExecuteDisplayBinding.cs

4
AddIns/ICSharpCode.SharpDevelop.addin

@ -1654,6 +1654,10 @@ @@ -1654,6 +1654,10 @@
insertafter = "Browser"
title = "Text editor"
class = "ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor.TextEditorDisplayBinding" />
<DisplayBinding id = "ShellExecute"
insertafter = "Text"
title = "Use the default Windows application for this file"
class = "ICSharpCode.SharpDevelop.ShellExecuteDisplayBinding" />
</Path>
<Path name = "/SharpDevelop/ViewContent/DefaultTextEditor/ClassMemberContextMenu">

6
src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Project/ConvertVisitorExpressions.cs

@ -122,6 +122,12 @@ namespace NRefactoryToBooConverter @@ -122,6 +122,12 @@ namespace NRefactoryToBooConverter
return null;
}
public object VisitNamedArgumentExpression(NamedArgumentExpression namedArgumentExpression, object data)
{
AddError(namedArgumentExpression, "Named arguments are not supported in boo. (argument name was " + namedArgumentExpression.Name + ")");
return namedArgumentExpression.Expression.AcceptVisitor(this, data);
}
public object VisitIdentifierExpression(IdentifierExpression identifierExpression, object data)
{
return new B.ReferenceExpression(GetLexicalInfo(identifierExpression), identifierExpression.Identifier);

7
src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Project/ConvertVisitorGlobal.cs

@ -180,18 +180,13 @@ namespace NRefactoryToBooConverter @@ -180,18 +180,13 @@ namespace NRefactoryToBooConverter
return null;
}
// Some classes are handled by their parent (NamedArgumentExpression by Attribute etc.)
// Some classes are handled by their parent (TemplateDefinition by TypeDeclaration/MethodDeclaration etc.)
// so we don't need to implement Visit for them.
public object VisitTemplateDefinition(TemplateDefinition templateDefinition, object data)
{
throw new ApplicationException("Visited TemplateDefinition.");
}
public object VisitNamedArgumentExpression(NamedArgumentExpression namedArgumentExpression, object data)
{
throw new ApplicationException("Visited NamedArgumentExpression.");
}
public object VisitInterfaceImplementation(InterfaceImplementation interfaceImplementation, object data)
{
throw new ApplicationException("Visited InterfaceImplementation.");

1
src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj

@ -89,6 +89,7 @@ @@ -89,6 +89,7 @@
<Compile Include="Src\Services\Debugger\BreakpointBookmarkEventArgs.cs" />
<Compile Include="Src\Services\DisplayBinding\ExternalProcessDisplayBinding.cs" />
<Compile Include="Src\Services\DisplayBinding\ISecondaryDisplayBinding.cs" />
<Compile Include="Src\Services\DisplayBinding\ShellExecuteDisplayBinding.cs" />
<Compile Include="Src\Services\File\OpenedFile.cs" />
<Compile Include="Src\Services\File\RecentOpen.cs" />
<Compile Include="Src\Services\Language\LanguageService.cs" />

37
src/Main/Base/Project/Src/Services/DisplayBinding/ShellExecuteDisplayBinding.cs

@ -0,0 +1,37 @@ @@ -0,0 +1,37 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
// <version>$Revision$</version>
// </file>
using System;
using ICSharpCode.Core;
using System.Diagnostics;
namespace ICSharpCode.SharpDevelop
{
/// <summary>
/// Opens files with the default Windows application for them.
/// </summary>
public class ShellExecuteDisplayBinding : IDisplayBinding
{
public bool CanCreateContentForFile(string fileName)
{
return !FileUtility.IsUrl(fileName);
}
public ICSharpCode.SharpDevelop.Gui.IViewContent CreateContentForFile(OpenedFile file)
{
if (file.IsDirty) {
// TODO: warn user that the file must be saved
}
try {
Process.Start(file.FileName);
} catch (Exception ex) {
MessageService.ShowError(ex.Message);
}
return null;
}
}
}
Loading…
Cancel
Save