Как получить редактируемый ITextBuffer из левого обзора IDifferenceViewer? - PullRequest
3 голосов
/ 31 мая 2019

Я хочу иметь возможность редактировать 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...