Browse Source

Slightly improved C# formatting. custom edit actions are now working again.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@16 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Mike Krüger 21 years ago
parent
commit
f6d4ee4e4f
  1. 5
      AddIns/ICSharpCode.SharpDevelop.addin
  2. 69
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingStrategy.cs
  3. 1
      src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
  4. 2
      src/Main/Base/Project/Src/TextEditor/Bookmarks/Pad/Nodes/BookmarkFolderNode.cs
  5. 3
      src/Main/Base/Project/Src/TextEditor/Codons/EditActionErbauer.cs
  6. 2
      src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Pad/Nodes/SearchFolderNode.cs
  7. 70
      src/SharpDevelop.sln

5
AddIns/ICSharpCode.SharpDevelop.addin

@ -7,6 +7,7 @@ @@ -7,6 +7,7 @@
<Runtime>
<Import assembly="../bin/ICSharpCode.SharpDevelop.dll"/>
<Import assembly="../bin/ICSharpCode.TextEditor.dll"/>
</Runtime>
<Path name = "/SharpDevelop/Workbench/Ambiences">
@ -1827,11 +1828,11 @@ @@ -1827,11 +1828,11 @@
<!-- Note : Most actions are put directly into the control, because
they're used for the standalone version too, only put keys in the
tree that are sharpdevelop specific, general keys put into TextAreaControl.GenerateDefaultActions -->
<!-- <Path name = "/AddIns/DefaultTextEditor/EditActions">
<Path name = "/AddIns/DefaultTextEditor/EditActions">
<EditAction id = "TemplateCompletion" class = "ICSharpCode.SharpDevelop.DefaultEditor.Actions.TemplateCompletion" keys = "Control|J"/>
<EditAction id = "CodeCompletionPopup" class = "ICSharpCode.SharpDevelop.DefaultEditor.Actions.CodeCompletionPopup" keys = "Control|Space"/>
<EditAction id = "IndentSelection" class = "ICSharpCode.TextEditor.Actions.IndentSelection" keys = "Control|I"/>
</Path> -->
</Path>
<Path name = "/SharpDevelop/Workbench/Pads">

69
src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingStrategy.cs

@ -179,6 +179,40 @@ namespace CSharpBinding.FormattingStrategy @@ -179,6 +179,40 @@ namespace CSharpBinding.FormattingStrategy
return curlyCounter > 0;
}
bool IsInsideNonVerbatimString(TextArea textArea, LineSegment curLine, int cursorOffset)
{
// scan cur line if it is inside a string or single line comment (//)
bool insideString = false;
char stringstart = ' ';
bool verbatim = false; // true if the current string is verbatim (@-string)
char c = ' ';
char lastchar;
for (int i = curLine.Offset; i < cursorOffset; ++i) {
lastchar = c;
c = textArea.Document.GetCharAt(i);
if (insideString) {
if (c == stringstart) {
if (verbatim && i + 1 < cursorOffset && textArea.Document.GetCharAt(i + 1) == '"') {
++i; // skip escaped character
} else {
insideString = false;
}
} else if (c == '\\' && !verbatim) {
++i; // skip escaped character
}
} else if (c == '/' && i + 1 < cursorOffset && textArea.Document.GetCharAt(i + 1) == '/') {
return false;
} else if (c == '"' || c == '\'') {
stringstart = c;
insideString = true;
verbatim = (c == '"') && (lastchar == '@');
}
}
return insideString && !verbatim;
}
bool IsInsideStringOrComment(TextArea textArea, LineSegment curLine, int cursorOffset)
{
// scan cur line if it is inside a string or single line comment (//)
@ -187,15 +221,17 @@ namespace CSharpBinding.FormattingStrategy @@ -187,15 +221,17 @@ namespace CSharpBinding.FormattingStrategy
bool verbatim = false; // true if the current string is verbatim (@-string)
char c = ' ';
char lastchar;
for (int i = curLine.Offset; i < cursorOffset; ++i) {
lastchar = c;
c = textArea.Document.GetCharAt(i);
if (insideString) {
if (c == stringstart) {
if (verbatim && i + 1 < cursorOffset && textArea.Document.GetCharAt(i + 1) == '"')
if (verbatim && i + 1 < cursorOffset && textArea.Document.GetCharAt(i + 1) == '"') {
++i; // skip escaped character
else
} else {
insideString = false;
}
} else if (c == '\\' && !verbatim) {
++i; // skip escaped character
}
@ -207,6 +243,7 @@ namespace CSharpBinding.FormattingStrategy @@ -207,6 +243,7 @@ namespace CSharpBinding.FormattingStrategy
verbatim = (c == '"') && (lastchar == '@');
}
}
return insideString;
}
@ -300,6 +337,21 @@ namespace CSharpBinding.FormattingStrategy @@ -300,6 +337,21 @@ namespace CSharpBinding.FormattingStrategy
#endregion
#region FormatLine
bool NeedEndregion(IDocument document)
{
int regions = 0;
int endregions = 0;
foreach (LineSegment line in document.LineSegmentCollection) {
string text = document.GetText(line).Trim();
if (text.StartsWith("#region")) {
++regions;
} else if (text.StartsWith("#endregion")) {
++endregions;
}
}
return regions > endregions;
}
public override int FormatLine(TextArea textArea, int lineNr, int cursorOffset, char ch) // used for comment tag formater/inserter
{
LineSegment curLine = textArea.Document.GetLineSegment(lineNr);
@ -347,12 +399,12 @@ namespace CSharpBinding.FormattingStrategy @@ -347,12 +399,12 @@ namespace CSharpBinding.FormattingStrategy
}
return 0;
}
if (ch != '\n' && ch != '>') {
if (IsInsideStringOrComment(textArea, curLine, cursorOffset)) {
return 0;
}
}
switch (ch) {
case '>':
if (IsInsideDocumentationComment(textArea, curLine, cursorOffset)) {
@ -389,6 +441,12 @@ namespace CSharpBinding.FormattingStrategy @@ -389,6 +441,12 @@ namespace CSharpBinding.FormattingStrategy
case '{':
return textArea.Document.FormattingStrategy.IndentLine(textArea, lineNr);
case '\n':
if (IsInsideNonVerbatimString(textArea, lineAbove, lineAbove.Offset + lineAbove.Length)) {
textArea.Document.Insert(lineAbove.Offset + lineAbove.Length,
"\" +");
textArea.Document.Insert(curLine.Offset, "\"");
return IndentLine(textArea, lineNr) + 1;
}
if (lineNr <= 0) {
return IndentLine(textArea, lineNr);
}
@ -405,6 +463,11 @@ namespace CSharpBinding.FormattingStrategy @@ -405,6 +463,11 @@ namespace CSharpBinding.FormattingStrategy
int addCursorOffset = 0;
if (lineAboveText.Trim().StartsWith("#region") && NeedEndregion(textArea.Document)) {
textArea.Document.Insert(curLine.Offset, "#endregion");
return IndentLine(textArea, lineNr) + "#endregion".Length;
}
if (lineAbove.HighlightSpanStack != null && lineAbove.HighlightSpanStack.Count > 0) {
if (!((Span)lineAbove.HighlightSpanStack.Peek()).StopEOL) { // case for /* style comments
int index = lineAboveText.IndexOf("/*");

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

@ -13,6 +13,7 @@ @@ -13,6 +13,7 @@
<SignAssembly>True</SignAssembly>
<AssemblyOriginatorKeyFile>Resources\ICSharpCode.SharpDevelop.snk</AssemblyOriginatorKeyFile>
<AssemblyOriginatorKeyMode>File</AssemblyOriginatorKeyMode>
<AssemblyKeyProviderName />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>True</DebugSymbols>

2
src/Main/Base/Project/Src/TextEditor/Bookmarks/Pad/Nodes/BookmarkFolderNode.cs

@ -57,7 +57,7 @@ namespace Bookmark @@ -57,7 +57,7 @@ namespace Bookmark
Graphics g = e.Graphics;
float x = e.Bounds.X;
if (icon != null) {
g.DrawImage(icon, x, e.Bounds.Y);
g.DrawImage(icon, x, e.Bounds.Y, icon.Width, icon.Height);
x += icon.Width;
}
DrawText(g, fileName, Brushes.Black, Font, ref x, e.Bounds.Y);

3
src/Main/Base/Project/Src/TextEditor/Codons/EditActionErbauer.cs

@ -22,8 +22,9 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Codons @@ -22,8 +22,9 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Codons
{
public object BuildItem(object caller, Codon codon, ArrayList subItems)
{
Console.WriteLine("Try to create '{0}'", codon.Properties["class"]);
IEditAction editAction = (IEditAction)codon.AddIn.CreateObject(codon.Properties["class"]);
Console.WriteLine("Action : " + editAction);
string[] keys = codon.Properties["keys"].Split(',');
Keys[] actionKeys = new Keys[keys.Length];

2
src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Pad/Nodes/SearchFolderNode.cs

@ -57,7 +57,7 @@ namespace SearchAndReplace @@ -57,7 +57,7 @@ namespace SearchAndReplace
Graphics g = e.Graphics;
float x = e.Bounds.X;
if (icon != null) {
g.DrawImage(icon, x, e.Bounds.Y);
g.DrawImage(icon, x, e.Bounds.Y, icon.Width, icon.Height);
x += icon.Width;
}
DrawText(g, fileName, Brushes.Black, Font, ref x, e.Bounds.Y);

70
src/SharpDevelop.sln

@ -1,5 +1,31 @@ @@ -1,5 +1,31 @@
Microsoft Visual Studio Solution File, Format Version 9.00
# SharpDevelop 2.0.0.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Main", "Main", "{5A3EBEBA-0560-41C1-966B-23F7D03A5486}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartUp", "Main\StartUp\Project\StartUp.csproj", "{1152B71B-3C05-4598-B20D-823B5D40559E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core", "Main\Core\Project\ICSharpCode.Core.csproj", "{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop", "Main\Base\Project\ICSharpCode.SharpDevelop.csproj", "{2748AD25-9C63-4E12-877B-4DCE96FBED54}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{9421EDF4-9769-4BE9-B5A6-C87DE221D73C}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.extensions.dll", "Tools\NUnit\src\NUnitFramework\extensions\nunit.extensions.dll.csproj", "{98B10E98-003C-45A0-9587-119142E39986}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactory", "Libraries\NRefactory\Project\NRefactory.csproj", "{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TextEditor", "Libraries\ICSharpCode.TextEditor\Project\ICSharpCode.TextEditor.csproj", "{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinFormsUI", "Libraries\DockPanel_Src\WinFormsUI\WinFormsUI.csproj", "{D3C782BA-178E-4235-A3BA-8C11DEBB6BEE}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.core.dll", "Tools\NUnit\src\NUnitFramework\core\nunit.core.dll.csproj", "{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.framework.dll", "Tools\NUnit\src\NUnitFramework\framework\nunit.framework.dll.csproj", "{83DD7E12-A705-4DBA-9D71-09C8973D9382}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AddIns", "AddIns", "{14A277EE-7DF1-4529-B639-7D1EF334C1C5}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
@ -34,32 +60,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Backends", "Backends", "{FE @@ -34,32 +60,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Backends", "Backends", "{FE
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpBinding", "AddIns\BackendBindings\CSharpBinding\Project\CSharpBinding.csproj", "{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{9421EDF4-9769-4BE9-B5A6-C87DE221D73C}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.extensions.dll", "Tools\NUnit\src\NUnitFramework\extensions\nunit.extensions.dll.csproj", "{98B10E98-003C-45A0-9587-119142E39986}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactory", "Libraries\NRefactory\Project\NRefactory.csproj", "{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TextEditor", "Libraries\ICSharpCode.TextEditor\Project\ICSharpCode.TextEditor.csproj", "{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinFormsUI", "Libraries\DockPanel_Src\WinFormsUI\WinFormsUI.csproj", "{D3C782BA-178E-4235-A3BA-8C11DEBB6BEE}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.core.dll", "Tools\NUnit\src\NUnitFramework\core\nunit.core.dll.csproj", "{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.framework.dll", "Tools\NUnit\src\NUnitFramework\framework\nunit.framework.dll.csproj", "{83DD7E12-A705-4DBA-9D71-09C8973D9382}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Main", "Main", "{5A3EBEBA-0560-41C1-966B-23F7D03A5486}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartUp", "Main\StartUp\Project\StartUp.csproj", "{1152B71B-3C05-4598-B20D-823B5D40559E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core", "Main\Core\Project\ICSharpCode.Core.csproj", "{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop", "Main\Base\Project\ICSharpCode.SharpDevelop.csproj", "{2748AD25-9C63-4E12-877B-4DCE96FBED54}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -133,6 +133,15 @@ Global @@ -133,6 +133,15 @@ Global
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{2748AD25-9C63-4E12-877B-4DCE96FBED54} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{1152B71B-3C05-4598-B20D-823B5D40559E} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{83DD7E12-A705-4DBA-9D71-09C8973D9382} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{D3C782BA-178E-4235-A3BA-8C11DEBB6BEE} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{98B10E98-003C-45A0-9587-119142E39986} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{4EA396ED-64AD-4AD0-A67A-AB363F3E0C79} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
@ -145,14 +154,5 @@ Global @@ -145,14 +154,5 @@ Global
{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{CBC6C247-747B-4908-B09A-4D2E0F640B6B} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
{83DD7E12-A705-4DBA-9D71-09C8973D9382} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{D3C782BA-178E-4235-A3BA-8C11DEBB6BEE} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{98B10E98-003C-45A0-9587-119142E39986} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{2748AD25-9C63-4E12-877B-4DCE96FBED54} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{1152B71B-3C05-4598-B20D-823B5D40559E} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
EndGlobalSection
EndGlobal

Loading…
Cancel
Save