Я хочу иметь возможность редактировать ITextBuffer левого ITextView (свойство LeftView
), поступающего из IDifferenceViewer, но как только он создается, LeftView читается только при вызове IsReadOnly()
. Как я могу позволить ITextBuffer LeftView быть редактируемым?
var diffService = (IVsDifferenceService)_serviceProvider.GetService(typeof(SVsDifferenceService));
//roles don't seem to do anything...
string roles = null; //$"{PredefinedTextViewRoles.Editable},{PredefinedTextViewRoles.PrimaryDocument},{PredefinedTextViewRoles.Document},{PredefinedTextViewRoles.Interactive},DIFF";
var frame = diffService.OpenComparisonWindow2(filePath1, filePath2,
$"Your version vs Other version",
filePath1 + Environment.NewLine + filePath2,
filePath1,
filePath2, null, null, 0);
var diffViewer = GetDiffViewer(frame);
diffViewer.LeftView.TextBuffer.IsReadOnly(0, false); // true!
static IDifferenceViewer GetDiffViewer(IVsWindowFrame frame) {
ThreadHelper.ThrowIfNotOnUIThread();
return ErrorHandler.Succeeded(frame.GetProperty((int)__VSFPROPID.VSFPROPID_DocView, out object docView))
? (docView as IVsDifferenceCodeWindow)?.DifferenceViewer : null;
}