Могу ли я сделать так, чтобы окна Emacs grep просто использовали другое окно для открытия файлов? - PullRequest
3 голосов
/ 24 февраля 2012

Передо мной emacs.

Я запустил команду find-grep, и у нее много совпадений, которые отображаются в окне. Имена файлов отображаются зелеными в виде гиперссылок.

Я делаю это единственное окно, с C-x 1.

Если я нажимаю на имя файла, окно разделяется по вертикали, а файл с найденным текстом отображается в другом окне.

Если я нажимаю на другие имена файлов, то новый файл заменяет старый файл, что я и хочу.

Пока все хорошо ...

Однако если я изменю размеры окон, то emacs будет периодически (когда я щелкну) снова разделять одно из двух окон, что затруднит чтение экрана. Затем он будет циклически открывать новые файлы между двумя новыми окнами. Время от времени это открывает больше окон и ухудшает ситуацию. Если я закрою любое из этих новых окон, они просто снова откроются.

На самом деле иногда такое извращенное поведение происходит, даже если я ничего не изменяю. Кажется, это случается чаще, если я это делаю.

Я бы хотел, чтобы emacs прекратил суетиться и имел только одно окно find-grep и одно окно 'display' и всегда заменял окно display новым файлом. Я также хотел бы иметь возможность устанавливать эти окна на размеры, которые кажутся наиболее удобными.

Есть ли способ достичь этого?

Или кто-нибудь может указать мне на эссе о том, как работает вся вещь (заменить содержимое этого окна / заменить содержимое другого окна / создать другое окно путем разделения), так что я могу пойти и взломать ее в здравом уме.

1 Ответ

2 голосов
/ 07 июня 2012

Краткое исправление: попробуйте сделать это

(setq split-height-threshold nil
      split-width-threshold nil)

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

Кроме того, я обнаружил, что если точка была в одном из окон, и я нажал на ссылку, файл открылся в следующемокно (если есть).

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

Более длинный ответ:

ОК.Я был в состоянии воспроизвести проблему.Дело в том, что окно, показывающее, что файлы довольно большие (широкие или высокие), потому что вы изменили его размер, и Emacs видит, что ширина или высота больше соответствующего порога, и разделяет его аналогичным образом.Итак, мы должны либо повысить порог, либо полностью запретить поведение.

И просто ответить на несколько последних вопросов:

  • Чтобы получить текущее окно - (selected-window)
  • Чтобы получить следующее окно - (next-window)
  • Чтобы выбрать окно - (select-window foo-window)
  • Чтобы получить буфер текущего окна - (current-buffer)
  • Чтобы получить буфер какого-либо окна - (window-buffer foo-window)
  • Чтобы установить буфер для окна - (set-window-buffer foo-window bar-buffer)

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

Вы можете использовать C-h f, чтобы получить более подробную информацию о каждой из этих функций.Также ознакомьтесь с руководством по Elisp - http://www.chemie.fu -berlin.de / chemnet / use / info / elisp / elisp_26.html

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