Browse Source

Improved symbol name validation on renaming.

pull/45/merge
Andreas Weizel 12 years ago
parent
commit
939376d1d0
  1. 18
      src/Main/Base/Project/Src/Editor/Commands/FindReferencesCommand.cs

18
src/Main/Base/Project/Src/Editor/Commands/FindReferencesCommand.cs

@ -4,6 +4,7 @@ @@ -4,6 +4,7 @@
using System;
using ICSharpCode.Core;
using ICSharpCode.NRefactory.Semantics;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Editor.Dialogs;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Refactoring;
@ -37,7 +38,11 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands @@ -37,7 +38,11 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands
{
var entity = GetEntity(symbol);
if (entity != null) {
RenameSymbolDialog renameDialog = new RenameSymbolDialog(CheckName)
var project = entity.ParentAssembly.GetProject();
if (project != null) {
var languageBinding = project.LanguageBinding;
RenameSymbolDialog renameDialog = new RenameSymbolDialog(name => CheckName(name, languageBinding))
{
Owner = SD.Workbench.MainWindow,
OldSymbolName = entity.Name,
@ -51,20 +56,15 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands @@ -51,20 +56,15 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands
}
}
}
}
bool CheckName(string name)
bool CheckName(string name, ILanguageBinding language)
{
// TODO implement for current language!
if (string.IsNullOrEmpty(name))
return false;
for (int i = 0; i < name.Length; i++) {
char thisChar = name[i];
if (!Char.IsLetter(thisChar)
&& !Char.IsDigit(thisChar)
&& (thisChar != '_'))
if ((language.CodeDomProvider == null) || !language.CodeDomProvider.IsValidIdentifier(name))
return false;
}
return true;
}

Loading…
Cancel
Save