ediff-split-window-function по горизонтали == по вертикали?

Emacs 23.1.1 Ediff 2.81.2 на CentOs 6

Перед любой настройкой Ediff по умолчанию разделяет окна по горизонтали (одно поверх другого).

Я хотел, чтобы они были рядом, поэтому я попытался добавить следующие строки в свой .emacs

(setq ediff-split-window-function 'split-window-vertically)
(setq ediff-merge-split-window-function 'split-window-vertically)

Это не подействовало - окна по-прежнему были разделены по горизонтали. Я также пробовал использовать интерфейс настройки Emacs для Ediff, чтобы получить вертикальное разделение по умолчанию - та же история.

Обратите внимание, что я пробовал это в сравнении с двумя буферами, которые были разделены по вертикали. Я также попробовал сделать это без открытых файлов в буферах и попросил Ediff сравнить два файла - результат тот же.

Затем я попытался указать разделенное окно по горизонтали в качестве функции разделения окна как для ediff-split, так и для ediff-merge.

(setq ediff-split-window-function 'split-window-horizontally)
(setq ediff-merge-split-window-function 'split-window-horizontally)

Это привело к разделению окон по вертикали (рядом друг с другом). Это также было верно, когда я закомментировал эти строки и использовал интерфейс настройки Emacs для установки этих параметров.

И да, я видел этот вопрос, но я не хочу устранять горизонтальный разделение на глобальном уровне - я просто хочу, чтобы Ediff делал это по умолчанию.

Я схожу с ума, или кто-то поменял значение «горизонтального» и «вертикального» (и, кстати, я беру определение «вертикального» и «горизонтального» разделения из моей копии книги О'Рейли » Изучение Gnu Emacs ")?


person roadrider    schedule 14.03.2012    source источник
comment
Разделить окно по горизонтали означает разделить окно на два соседних по горизонтали окна.   -  person kevin cline    schedule 08.12.2012


Ответы (3)


Я использовал настройку переменной emacs, вызванную с C-h v ediff-split-window-function, чтобы изменить значение. После нажатия Save for future sessions на мой .emacs было записано следующее:

(custom-set-variables
...
 '(ediff-split-window-function (quote split-window-horizontally))
...)

И он делает именно то, что я хочу: помещает два буфера рядом. И да, emacs использует горизонталь / вертикаль в противоположность тому, что вы имели в виду. Если вы снова прочитаете этот вопрос, вы увидите объяснение, другие тоже были сбиты с толку .

person Fred Schoen    schedule 21.03.2012
comment
Возможно, будет понятнее использовать split-window-right. split-window-horizontally - это псевдоним для split-window-right, команды, обычно связанной с C-x 3. Документация для обоих состояний: Разделить выбранное окно на два бок о бок окна. Я понимаю, что это, вероятно, изменилось за 7 лет после вашего ответа. - person Lorem Ipsum; 03.10.2019
comment
В то же время я перешел на spacemacs, где по умолчанию используется горизонтальное разделение, и никаких настроек не требуется. - person Fred Schoen; 29.10.2019

Удар "|" когда вы находитесь в режиме ediff с двумя загруженными файлами, переключает с горизонтального на вертикальное.
"?" дает небольшое меню помощи ediff. (Я использую Debian Wheezy с emacs 23.4 + 1-4)

person Fabio Pedrazzoli Grazioli    schedule 09.12.2013

Хотя это не совсем решает вашу проблему, вы также можете использовать функцию, чтобы указать, следует ли разделять по вертикали или по горизонтали в зависимости от размеров окна:

(setq ediff-split-window-function 'split-window-sensibly)

split-window-разумно является встроенным .

person idbrii    schedule 09.05.2015
comment
У меня это не работает. split-window-sensibly принимает окно в качестве аргумента, а split-window-horizontally принимает размер. Это вызывает ошибки, когда Ediff пытается разделить окно. - person PythonNut; 08.01.2016