bool Common(string sourceText)
            {
                SetSrc(sci, sourceText);
                var target = RefactoringHelper.GetDefaultRefactorTarget();

                return(RefactoringHelper.IsPrivateTarget(target));
            }
Exemplo n.º 2
0
        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));
            }
Exemplo n.º 6
0
        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();
        }
Exemplo n.º 7
0
            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));
            }
Exemplo n.º 8
0
            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));
        }
Exemplo n.º 10
0
        /// <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);
        }
Exemplo n.º 11
0
 /// <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));
 }
Exemplo n.º 12
0
 public virtual Command CreateRenameCommandAndExecute(bool outputResults, bool inline = false)
 {
     return(CreateRenameCommandAndExecute(RefactoringHelper.GetDefaultRefactorTarget(), outputResults, inline));
 }