Как мне объединить два варианта конфликта в emacs 'emerge? - PullRequest
5 голосов
/ 03 января 2012

Используя emerge в Emacs, у меня есть такая сессия:

<<<<<<< variant A
            522ADC9C14B2FD9D00F56BAD /* close_test_button.png in Resources */,
            522ADC9D14B2FD9D00F56BAD /* close_test_button@2x.png in Resources */,
            522ADCA014B2FDB100F56BAD /* test_failed.png in Resources */,
            522ADCA114B2FDB100F56BAD /* test_failed@2x.png in Resources */,
>>>>>>> variant B
            EC1633C014B2F3E3004B52E7 /* arrow.png in Resources */,
            EC1633C114B2F3E3004B52E7 /* arrow@2x.png in Resources */,
            EC1633C214B2F3E3004B52E7 /* groups.png in Resources */,
            EC1633C314B2F3E3004B52E7 /* groups@2x.png in Resources */,
####### Ancestor
======= end

Я могу выбрать вариант A или B с помощьюнажмите a или b на моей клавиатуре, но как мне объединить оба варианта, один за другим?

Ответы [ 2 ]

7 голосов
/ 03 января 2012

Просто используйте C-h m в пределах буфера emerge, чтобы увидеть справку для текущих режимов. Как это характерно для большинства режимов, второстепенный режим Emerge отображает привязки клавиш в этом тексте справки.

Эта справка показывает, что вы можете вставить содержимое варианта A или B с помощью: i a и i b , поэтому Вы можете использовать эту функцию для вставки того варианта, который в данный момент не выбран.

Вы также можете переключиться из стандартного «быстрого» режима в режим «редактирования» для непосредственного редактирования объединенного текста. Используйте Cc Cc f в режиме редактирования, чтобы вернуться в быстрый режим (поскольку в режиме редактирования все команды emerge должны иметь префикс Cc Сс ).

Руководство Emerge содержит более подробную информацию:
M -: (info "(emacs) Emerge") RET

В частности, он объясняет поведение привязки x c , которая объединяет два варианта за один шаг с использованием предварительно определенной строки шаблона:
M -: (info "(emacs) Combining in Emerge") RET

Шаблон по умолчанию использует условный синтаксис препроцессора C, однако, так что вы почти наверняка захотите переопределить это. Вы можете установить шаблон через меню Emerge Options или с помощью emerge-set-combine-template. Синтаксис шаблона см .:
C-h v emerge-combine-versions-template RET

1 голос
/ 27 ноября 2013

Используйте ярлык:

x-c   (combine the two versions of the difference)

Это будет последовательно вставлять две конфликтующие области, получая что-то вроде:

vvvvvvvvvvvvvvvvvvvv
#ifdef NEW
522ADC9C14B2FD9D00F56BAD /* close_test_button.png in Resources */,
522ADC9D14B2FD9D00F56BAD /* close_test_button@2x.png in Resources */,
522ADCA014B2FDB100F56BAD /* test_failed.png in Resources */,
522ADCA114B2FDB100F56BAD /* test_failed@2x.png in Resources */,
#else /* not NEW */
EC1633C014B2F3E3004B52E7 /* arrow.png in Resources */,
EC1633C114B2F3E3004B52E7 /* arrow@2x.png in Resources */,
EC1633C214B2F3E3004B52E7 /* groups.png in Resources */,
EC1633C314B2F3E3004B52E7 /* groups@2x.png in Resources */,
#endif /* not NEW */
^^^^^^^^^^^^^^^^^^^^

Оттуда вы можете перейти в режим редактирования (ярлык: 'e') удалите макросы #ifdef по мере необходимости, чтобы создать желаемое окончательное объединение.

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