Browse Source

Fix argument exception when using File->Save As and changing a file to a ASP.NET file extension when it was not previously.

pull/18/head
Matt Ward 14 years ago
parent
commit
69a29bc736
  1. 4
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/Folding/CSharpRazorLanguageBinding.cs
  2. 1
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/Folding/FoldGenerator.cs
  3. 5
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/Folding/HtmlLanguageBinding.cs
  4. 2
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/Folding/ITextEditorWithParseInformationFolding.cs
  5. 25
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/Folding/TextEditorWithParseInformationFolding.cs
  6. 4
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/Folding/VisualBasicRazorLanguageBinding.cs
  7. 4
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/Folding/WebFormsLanguageBinding.cs
  8. 23
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/Folding/FoldGeneratorTests.cs

4
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/Folding/CSharpRazorLanguageBinding.cs

@ -13,5 +13,9 @@ namespace ICSharpCode.AspNet.Mvc.Folding @@ -13,5 +13,9 @@ namespace ICSharpCode.AspNet.Mvc.Folding
new RazorFoldGeneratorFactory(".cshtml"))
{
}
public override string HighlightingSyntaxName {
get { return "C#/Razor"; }
}
}
}

1
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/Folding/FoldGenerator.cs

@ -20,6 +20,7 @@ namespace ICSharpCode.AspNet.Mvc.Folding @@ -20,6 +20,7 @@ namespace ICSharpCode.AspNet.Mvc.Folding
this.textEditor = textEditor;
this.foldParser = foldParser;
IsParseInformationFoldingEnabled = false;
this.textEditor.InstallFoldingManager();
}
bool IsParseInformationFoldingEnabled {

5
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/Folding/HtmlLanguageBinding.cs

@ -8,7 +8,7 @@ using ICSharpCode.SharpDevelop.Editor; @@ -8,7 +8,7 @@ using ICSharpCode.SharpDevelop.Editor;
namespace ICSharpCode.AspNet.Mvc.Folding
{
public class HtmlLanguageBinding : DefaultLanguageBinding
public abstract class HtmlLanguageBinding : DefaultLanguageBinding
{
ITextEditorWithParseInformationFoldingFactory textEditorFactory;
IFoldGeneratorFactory foldGeneratorFactory;
@ -30,6 +30,8 @@ namespace ICSharpCode.AspNet.Mvc.Folding @@ -30,6 +30,8 @@ namespace ICSharpCode.AspNet.Mvc.Folding
get { return LanguageProperties.None; }
}
public abstract string HighlightingSyntaxName { get; }
public override void Attach(ITextEditor editor)
{
Attach(textEditorFactory.CreateTextEditor(editor));
@ -38,6 +40,7 @@ namespace ICSharpCode.AspNet.Mvc.Folding @@ -38,6 +40,7 @@ namespace ICSharpCode.AspNet.Mvc.Folding
void Attach(ITextEditorWithParseInformationFolding editor)
{
foldGenerator = foldGeneratorFactory.CreateFoldGenerator(editor);
editor.UpdateSyntaxHighlighting(HighlightingSyntaxName);
}
public override void Detach()

2
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/Folding/ITextEditorWithParseInformationFolding.cs

@ -13,6 +13,8 @@ namespace ICSharpCode.AspNet.Mvc.Folding @@ -13,6 +13,8 @@ namespace ICSharpCode.AspNet.Mvc.Folding
bool IsParseInformationFoldingEnabled { get; set; }
void UpdateFolds(IEnumerable<NewFolding> folds);
void InstallFoldingManager();
string GetTextSnapshot();
void UpdateSyntaxHighlighting(string highlightingSyntaxName);
}
}

25
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/Folding/TextEditorWithParseInformationFolding.cs

@ -6,6 +6,7 @@ using System.Collections.Generic; @@ -6,6 +6,7 @@ using System.Collections.Generic;
using ICSharpCode.AvalonEdit;
using ICSharpCode.AvalonEdit.AddIn;
using ICSharpCode.AvalonEdit.Folding;
using ICSharpCode.AvalonEdit.Highlighting;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.AvalonEdit;
@ -20,10 +21,9 @@ namespace ICSharpCode.AspNet.Mvc.Folding @@ -20,10 +21,9 @@ namespace ICSharpCode.AspNet.Mvc.Folding
public TextEditorWithParseInformationFolding(ITextEditor textEditor)
{
this.textEditor = textEditor;
InstallFoldingManager();
}
void InstallFoldingManager()
public void InstallFoldingManager()
{
var textEditorAdapter = textEditor as AvalonEditTextEditorAdapter;
if (textEditorAdapter != null) {
@ -73,5 +73,26 @@ namespace ICSharpCode.AspNet.Mvc.Folding @@ -73,5 +73,26 @@ namespace ICSharpCode.AspNet.Mvc.Folding
{
FoldingManager.Uninstall(foldingManager);
}
public void UpdateSyntaxHighlighting(string name)
{
if (!IsUsingSyntaxhighlighting(name)) {
ChangeSyntaxHighlighting(name);
}
}
bool IsUsingSyntaxhighlighting(string name)
{
IHighlightingDefinition highlighting = CodeEditorView.SyntaxHighlighting;
if (highlighting != null) {
return highlighting.Name == name;
}
return false;
}
void ChangeSyntaxHighlighting(string name)
{
CodeEditorView.SyntaxHighlighting = HighlightingManager.Instance.GetDefinition(name);
}
}
}

4
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/Folding/VisualBasicRazorLanguageBinding.cs

@ -13,5 +13,9 @@ namespace ICSharpCode.AspNet.Mvc.Folding @@ -13,5 +13,9 @@ namespace ICSharpCode.AspNet.Mvc.Folding
new RazorFoldGeneratorFactory(".vbhtml"))
{
}
public override string HighlightingSyntaxName {
get { return "VBNET/Razor"; }
}
}
}

4
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/Folding/WebFormsLanguageBinding.cs

@ -21,5 +21,9 @@ namespace ICSharpCode.AspNet.Mvc.Folding @@ -21,5 +21,9 @@ namespace ICSharpCode.AspNet.Mvc.Folding
: base(textEditorFactory, foldGeneratorFactory)
{
}
public override string HighlightingSyntaxName {
get { return "ASP/XHTML"; }
}
}
}

23
src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/Folding/FoldGeneratorTests.cs

@ -76,6 +76,29 @@ namespace AspNet.Mvc.Tests.Folding @@ -76,6 +76,29 @@ namespace AspNet.Mvc.Tests.Folding
Assert.IsTrue(fakeTextEditor.IsParseInformationFoldingEnabled);
}
[Test]
public void Constructor_TextEditor_InstallFoldingManagerIsInstalled()
{
CreateFakeTextEditor();
CreateFoldGenerator();
fakeTextEditor.AssertWasCalled(textEditor => textEditor.InstallFoldingManager());
}
[Test]
public void Constructor_TextEditor_InstallFoldingManagerIsInstalledAfterParseInfoIsDisabled()
{
CreateFakeTextEditor();
fakeTextEditor.IsParseInformationFoldingEnabled = true;
bool parseInfoEnabled = true;
fakeTextEditor
.Stub(t => t.InstallFoldingManager())
.Do((Action)delegate { parseInfoEnabled = fakeTextEditor.IsParseInformationFoldingEnabled; });
CreateFoldGenerator();
Assert.IsFalse(parseInfoEnabled);
}
[Test]
public void GenerateFolds_MethodCalled_FoldsFromFoldParserUsedToUpdateTextEditor()
{

Loading…
Cancel
Save