bool Common(string sourceText) { SetSrc(sci, sourceText); var target = RefactoringHelper.GetDefaultRefactorTarget(); return(RefactoringHelper.IsPrivateTarget(target)); }
public static void AddToQueue(ASResult target, bool outputResults) { string originalName = RefactoringHelper.GetRefactorTargetName(target); string label = TextHelper.GetString("Label.NewName"); string title = string.Format(TextHelper.GetString("Title.RenameDialog"), originalName); LineEntryDialog askName = new LineEntryDialog(title, label, originalName); if (askName.ShowDialog() == DialogResult.OK) { string newName = askName.Line.Trim(); if (newName.Length == 0 || newName == originalName) { return; } queue.Add(new Rename(target, outputResults, newName)); if (ASContext.Context.CurrentModel.haXe && target.Member != null && (target.Member.Flags & (FlagType.Getter | FlagType.Setter)) > 0) { List <MemberModel> list = target.Member.Parameters; if (list[0].Name == "get") { RenameMember(target.InClass, "get_" + originalName, "get_" + newName, outputResults); } if (list[1].Name == "set") { RenameMember(target.InClass, "set_" + originalName, "set_" + newName, outputResults); } } if (currentCommand == null) { ExecuteFirst(); } } }
static void RegisterValidators() { DefaultFactory.RegisterValidator(typeof(Rename), expr => { if (expr == null || expr.IsNull()) { return(false); } var c = expr.Context.Value[0]; if (char.IsDigit(c)) { return(false); } var file = expr.InFile ?? expr.Type.InFile; var language = PluginBase.MainForm.SciConfig.GetLanguageFromFile(file.FileName); var characterClass = ScintillaControl.Configuration.GetLanguage(language).characterclass.Characters; if (!characterClass.Contains(c)) { return(false); } return((expr.Member != null && RefactoringHelper.ModelFileExists(expr.Member.InFile) && !RefactoringHelper.IsUnderSDKPath(expr.Member.InFile)) || (expr.Type != null && RefactoringHelper.ModelFileExists(expr.Type.InFile) && !RefactoringHelper.IsUnderSDKPath(expr.Type.InFile)) || (RefactoringHelper.ModelFileExists(expr.InFile) && !RefactoringHelper.IsUnderSDKPath(expr.InFile)) || expr.IsPackage); }); }
public string Common(string sourceText) { SetHaxeFeatures(sci); SetSrc(sci, sourceText); var target = RefactoringHelper.GetDefaultRefactorTarget(); return(RefactoringHelper.GetRefactorTargetName(target)); }
public Result Common(string sourceText) { SetHaxeFeatures(sci); SetSrc(sci, sourceText); var target = RefactoringHelper.GetDefaultRefactorTarget(); return(new Result(target.IsPackage, target.Member, target.Type)); }
internal static void AddToQueue(Rename rename) { queue.Enqueue(rename); if (currentCommand != null) { return; } currentCommand = rename; var doc = PluginBase.MainForm.CurrentDocument; startState = new StartState { FileName = doc.FileName, CursorPosition = doc.SciControl.CurrentPos, Commands = new[] { rename, null, null } }; var target = rename.Target; var outputResults = rename.OutputResults; if (!target.IsPackage) { if (HasGetterSetter(target)) { string oldName = rename.OldName; string newName = rename.NewName; var list = target.Member.Parameters; if (list[0].Name == ParamGetter) { startState.Commands[1] = RenameMember(target, PrefixGetter + oldName, PrefixGetter + newName, outputResults); } if (list[1].Name == ParamSetter) { startState.Commands[2] = RenameMember(target, PrefixSetter + oldName, PrefixSetter + newName, outputResults); } } else if ((RefactoringHelper.GetRefactoringTarget(target).Flags & (FlagType.Constructor | FlagType.Class)) > 0) { var ext = Path.GetExtension(startState.FileName); startState.FileName = startState.FileName.Replace(rename.OldName + ext, rename.NewName + ext); } } if (outputResults) { PluginBase.MainForm.CallCommand("PluginCommand", "ResultsPanel.ClearResults;" + PluginMain.TraceGroup); } ExecuteFirst(); }
bool Common(string sourceText) { Sci.Text = sourceText; SnippetHelper.PostProcessSnippets(Sci, 0); var currentModel = ASContext.Context.CurrentModel; new ASFileParser().ParseSrc(currentModel, Sci.Text); var currentClass = currentModel.Classes.FirstOrDefault() ?? ClassModel.VoidClass; ASContext.Context.CurrentClass.Returns(currentClass); ASContext.Context.CurrentMember.Returns(currentClass.Members.Items.FirstOrDefault()); var target = RefactoringHelper.GetDefaultRefactorTarget(); return(RefactoringHelper.IsPrivateTarget(target)); }
public Result Common(string sourceText) { ASContext.Context.SetHaxeFeatures(); Sci.ConfigurationLanguage = "haxe"; Sci.Text = sourceText; SnippetHelper.PostProcessSnippets(Sci, 0); var currentModel = ASContext.Context.CurrentModel; new ASFileParser().ParseSrc(currentModel, Sci.Text); var currentClass = currentModel.Classes.FirstOrDefault() ?? ClassModel.VoidClass; ASContext.Context.CurrentClass.Returns(currentClass); ASContext.Context.CurrentMember.Returns(currentClass.Members.Items.FirstOrDefault()); var target = RefactoringHelper.GetDefaultRefactorTarget(); return(new Result(target.IsPackage, target.Member, target.Type)); }
public bool RenameValidator(string fileName) { SetSrc(sci, ReadAllText(fileName)); fileName = GetFullPath(fileName); fileName = Path.GetFileNameWithoutExtension(fileName).Replace('.', Path.DirectorySeparatorChar) + Path.GetExtension(fileName); fileName = Path.GetFullPath(fileName); fileName = fileName.Replace($"\\FlashDevelop\\Bin\\Debug\\{nameof(CodeRefactor)}\\Test_Files\\", $"\\Tests\\External\\Plugins\\{nameof(CodeRefactor)}.Tests\\Test Files\\"); ASContext.Context.CurrentModel.FileName = fileName; PluginBase.MainForm.CurrentDocument.FileName.Returns(fileName); var validator = CommandFactoryProvider.DefaultFactory.GetValidator(typeof(Rename)); var target = RefactoringHelper.GetDefaultRefactorTarget(); if (target.Member != null) { target.Member.InFile = ASContext.Context.CurrentModel; } return(validator(target)); }
/// <summary> /// Finds the given target in all project files. /// If the target is a local variable or function parameter, it will only search the associated file. /// Note: if running asynchronously, you must supply a listener to "findFinishedHandler" to retrieve the results. /// If running synchronously, do not set listeners and instead use the return value. /// </summary> /// <param name="target">the source member to find references to</param> /// <param name="progressReportHandler">event to fire as search results are compiled</param> /// <param name="findFinishedHandler">event to fire once searching is finished</param> /// <param name="asynchronous">executes in asynchronous mode</param> /// <param name="onlySourceFiles">searches only on defined classpaths</param> /// <returns>If "asynchronous" is false, will return the search results, otherwise returns null on bad input or if running in asynchronous mode.</returns> public static FRResults FindTargetInFiles(ASResult target, FRProgressReportHandler progressReportHandler, FRFinishedHandler findFinishedHandler, Boolean asynchronous, Boolean onlySourceFiles) { Boolean currentFileOnly = false; // checks target is a member if (target == null || ((target.Member == null || String.IsNullOrEmpty(target.Member.Name)) && (target.Type == null || !CheckFlag(target.Type.Flags, FlagType.Class) && !target.Type.IsEnum()))) { return(null); } else { // if the target we are trying to rename exists as a local variable or a function parameter we only need to search the current file if (target.Member != null && ( target.Member.Access == Visibility.Private || RefactoringHelper.CheckFlag(target.Member.Flags, FlagType.LocalVar) || RefactoringHelper.CheckFlag(target.Member.Flags, FlagType.ParameterVar)) ) { currentFileOnly = true; } } FRConfiguration config; IProject project = PluginBase.CurrentProject; String file = PluginBase.MainForm.CurrentDocument.FileName; // This is out of the project, just look for this file... if (currentFileOnly || !IsProjectRelatedFile(project, file)) { String mask = Path.GetFileName(file); String path = Path.GetDirectoryName(file); if (mask.Contains("[model]")) { if (findFinishedHandler != null) { findFinishedHandler(new FRResults()); } return(null); } config = new FRConfiguration(path, mask, false, GetFRSearch(target.Member != null ? target.Member.Name : target.Type.Name)); } else if (target.Member != null && !CheckFlag(target.Member.Flags, FlagType.Constructor)) { config = new FRConfiguration(GetAllProjectRelatedFiles(project, onlySourceFiles), GetFRSearch(target.Member.Name)); } else { target.Member = null; config = new FRConfiguration(GetAllProjectRelatedFiles(project, onlySourceFiles), GetFRSearch(target.Type.Name)); } config.CacheDocuments = true; FRRunner runner = new FRRunner(); if (progressReportHandler != null) { runner.ProgressReport += progressReportHandler; } if (findFinishedHandler != null) { runner.Finished += findFinishedHandler; } if (asynchronous) { runner.SearchAsync(config); } else { return(runner.SearchSync(config)); } return(null); }
/// <summary> /// Create a new FindAllReferences refactoring command. /// Uses the current text location as the declaration target. /// </summary> /// <param name="output">If true, will send the found results to the trace log and results panel</param> public virtual Command CreateFindAllReferencesCommand(bool output) { return(CreateFindAllReferencesCommand(RefactoringHelper.GetDefaultRefactorTarget(), output)); }
public virtual Command CreateRenameCommandAndExecute(bool outputResults, bool inline = false) { return(CreateRenameCommandAndExecute(RefactoringHelper.GetDefaultRefactorTarget(), outputResults, inline)); }