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;
            bool outputResults = rename.OutputResults;
            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");

            ExecuteFirst();
        }
 private static void ExecuteFirst()
 {
     try
     {
         currentCommand = queue.Dequeue();
         currentCommand.OnRefactorComplete += OnRefactorComplete;
         currentCommand.Execute();
     }
     catch (Exception ex)
     {
         queue.Clear();
         currentCommand = null;
         startState = null;
         ErrorManager.ShowError(ex);
     }
 }
 private static void OnRefactorComplete(object sender, RefactorCompleteEventArgs<IDictionary<string, List<SearchMatch>>> e)
 {
     currentCommand.OnRefactorComplete -= OnRefactorComplete;
     if (queue.Count == 0)
     {
         //if (currentCommand.OutputResults)
         //{
         //    PluginBase.MainForm.CallCommand("PluginCommand", "ResultsPanel.ShowResults");
         //}
         if (startState != null) RestoreStartState();
         currentCommand = null;
         startState = null;
     }
     else ExecuteFirst();
 }