internal static readonly ImageList _imageList = new ImageList();//Utilities.GetImageList(typeof(PythonProjectNode).Assembly.GetManifestResourceStream(PythonConstants.ProjectImageList)); public FilePreviewItem(PreviewChangesEngine engine, string file) { Filename = file; _engine = engine; do { _tempFileName = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()) + ".py"; } while (File.Exists(_tempFileName)); }
public void RenameVariable(IRenameVariableInput input, IVsPreviewChangesService previewChanges) { //if (IsModuleName(input)) //{ // input.CannotRename("Cannot rename a module name"); // return; //} var analysis = _view.GetExpressionAnalysis(_funcProvider, _dbProvider, _progFileProvider); string originalName = null; string privatePrefix = null; if (analysis != null && analysis.Value != null) { // TODO: really need to add a IRenamable API that allows us to determine whether the item selected can be renamed if (analysis.Value is VariableDef || analysis.Value is FunctionBlockNode) { originalName = analysis.Value.Name; } //expr = Statement.GetExpression(ast.Body); //NameExpression ne = expr as NameExpression; //MemberExpression me; //if (ne != null) //{ // originalName = ne.Name; //} //else if ((me = expr as MemberExpression) != null) //{ // originalName = me.Name; //} //if (ast.PrivatePrefix != null && originalName != null && originalName.StartsWith("_" + ast.PrivatePrefix)) //{ // originalName = originalName.Substring(ast.PrivatePrefix.Length + 1); // privatePrefix = ast.PrivatePrefix; //} //if (originalName != null && _view.Selection.IsActive && !_view.Selection.IsEmpty) //{ // if (_view.Selection.Start.Position < analysis.Span.GetStartPoint(_view.TextBuffer.CurrentSnapshot) || // _view.Selection.End.Position > analysis.Span.GetEndPoint(_view.TextBuffer.CurrentSnapshot)) // { // originalName = null; // } //} } if (originalName == null) { input.CannotRename("Please select a symbol to be renamed."); return; } bool hasVariables = false; foreach (var variable in analysis.Variables) { if (variable.Type == VariableType.Definition || variable.Type == VariableType.Reference) { hasVariables = true; break; } } IEnumerable <IAnalysisVariable> variables = null; if (!hasVariables) { //List<IAnalysisVariable> paramVars = GetKeywordParameters(expr, originalName); //if (paramVars.Count == 0) //{ // input.CannotRename(string.Format("No information is available for the variable '{0}'.", originalName)); // return; //} //variables = paramVars; } else { variables = analysis.Variables; } //PythonLanguageVersion languageVersion = PythonLanguageVersion.None; //var analyzer = _view.GetAnalyzer(_serviceProvider); //var factory = analyzer != null ? analyzer.InterpreterFactory : null; //if (factory != null) //{ // languageVersion = factory.Configuration.Version.ToLanguageVersion(); //} var info = input.GetRenameInfo(originalName); if (info != null) { var engine = new PreviewChangesEngine(_serviceProvider, input, analysis, info, originalName, privatePrefix, _view.GetAnalyzer(), variables); if (info.Preview) { previewChanges.PreviewChanges(engine); } else { ErrorHandler.ThrowOnFailure(engine.ApplyChanges()); } } }
public BufferUpdater(ITextBuffer buffer, PreviewChangesEngine engine) { _buffer = buffer; _engine = engine; }