Как я выделяю изменения CVS в Emacs?

Вы должны передать вектор по ссылке, чтобы избежать многократных копий, поэтому итератор гарантированно будет сравниваться с итераторами одного и того же вектора, а не с другими:

void print(const std::vector<int>& ivec, std::vector<int>::const_iterator it) {
    if (it == ivec.end())
        return;
    std::cout << *it++ << std::endl;
    print(ivec, it);
}

int main(){
    vector<int> v{
        5, 7, 77, 23, 10, 81
    };

    print(v, v.begin()); // ok

    vector<int>::iterator it = v.begin();
    auto v2{ v };

    if (it == v.begin())
        cout << "it = v.begin()" << endl;
    if (it == v2.begin()) // causes crash
        cout << "it =v2.begin()" << endl;
}
6
задан Glorfindel 3 March 2019 в 20:02
поделиться

3 ответа

Вот другой ответ, который не делает то, что Вы хотите также, но можете быть полезными.

C-x v g 

выполняет команду vc-annotate.

Это откроется новый буфер (я знаю, Вы не хотели один), но это будет иметь все строки отмеченными с тем, кто коснулся их когда. И, премия, они - цвет, кодированный с heatmap (красный, ново, синий меньше всего), для легкой идентификации недавних изменений.

Конечно, встроенная версия vc-annotate не прокручивает буфер соответственно, таким образом, Вы захотите этот совет:

(defadvice vc-annotate (around vc-annotate-and-scroll)
  "scroll buffer to view current line in the annotated buffer"
  (let ((pos (count-lines (point-min) (point))))
    ad-do-it
    (let ((orig-window (selected-window))
          (window (other-window-for-scrolling)))
      (select-window window)
      (goto-line pos)
      (select-window orig-window))))

(ad-activate 'vc-annotate)
2
ответ дан 17 December 2019 в 00:15
поделиться

Вы хотите vc-diff, который идет C-x v = по умолчанию. Это дает Вам необработанный различный вывод во временном буфере. Буфер использует различный режим, который имеет несколько аккуратных приемов..., например, можно использовать C-c C-e применять разность как патч к другому файлу. Использовать describe-mode (C-h m по умолчанию) в различном буфере для нахождения других приемов.

1
ответ дан 17 December 2019 в 00:15
поделиться

Возможно, Вы хотели бы Ediff, который, кажется, делает точно, что Вы хотите.

0
ответ дан 17 December 2019 в 00:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: