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 @@
using System; using System;
using ICSharpCode.Core; using ICSharpCode.Core;
using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.Semantics;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Editor.Dialogs; using ICSharpCode.SharpDevelop.Editor.Dialogs;
using ICSharpCode.SharpDevelop.Gui; using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Refactoring; using ICSharpCode.SharpDevelop.Refactoring;
@ -37,7 +38,11 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands
{ {
var entity = GetEntity(symbol); var entity = GetEntity(symbol);
if (entity != null) { 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, Owner = SD.Workbench.MainWindow,
OldSymbolName = entity.Name, OldSymbolName = entity.Name,
@ -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)) if (string.IsNullOrEmpty(name))
return false; return false;
for (int i = 0; i < name.Length; i++) { if ((language.CodeDomProvider == null) || !language.CodeDomProvider.IsValidIdentifier(name))
char thisChar = name[i];
if (!Char.IsLetter(thisChar)
&& !Char.IsDigit(thisChar)
&& (thisChar != '_'))
return false; return false;
}
return true; return true;
} }

Loading…
Cancel
Save