LINUX.ORG.RU

[XEmacs] как ходить по буферам


0

0

Доброго!

Вот вопрос философской силы. В оффтопике есть такое волшебное сочетание клавиш Alt-Tab, которое позволяет ходить по открытым окнам. Из окон составлен список, при этом каждое активированное окно переставляется в начало списка.

Когда я нажимаю Alt и, не отпуская его, жму несколько раз Tab, я иду по этому списку вперёд. Когда отпускаю Alt - выбранное таким образом окно становится текущим.

Также можно нажимать Shift-Tab, при этом иду по списку назад.

Хочу что-то подобное в XEmacs.

Например, в таком виде:

1. Выбрать предпоследний буфер.

2. Выбрать пред-предпоследний буфер

3. Показать список буферов, в котором сразу запущен режим автоинкрементного поиска. По нажатию Enter список буферов уничтожается и вместо него открывается выбранный мной буфер.

4. Похоронить буфер.

Отчасти этот функционал уже есть в XEmacs, что-то я сам написал, но всё равно, полного решения этой задачи пока что нет. Может, кто встречал? А то слишком уж много сил приходится тратить на простое переключение между буферами.

★★★★★

1),2) Навигация по списку буферов C-x C-left, C-x C-right

3) Не совсем то, но C-x b TAB. работает автокомплит по TAB.

4) похоронить это в смысле закрыть ? тогда С-x k

Vinick ★★
()

Попробуй загнуть iswitch buffers. Там можно кое-какие манипуляции делать. Во-первых, можно задать список игнорируемых буферов. Во-вторых, можно поменять привязки клавиш при переходе между буферами, которые отображаются в Minibuffer (по умолчанию C-r и C-s). В-третьих, можно выбирать буфер по любой подстроке, а последующий <Tab> тут же откроет тебе этот буфер на весь экран. К тому же, iswitch buffer позволяет увидеть подходящий под маску буфер еще до его раскрытия. При этом текущий буфер делится на два, и в нижнем отобразится подходящий. Это весьма удобно. Я пользуюсь. Мне нравится.

А вот насчет генерации своего списка буферов надо посмотреть. Мне кажется, что и это можно сделать в iswitchb. Я не пробовал это делать, поэтому не знаю точно. Предполагаю наличие этой функциональности.

Еще есть icycles. Там тоже есть похожий функционал.

Еще удобно использовать buffer-menu и повесить его на C-x C-b вместо штатного.

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

>Еще есть icycles. Там тоже есть похожий функционал.

icicles только.

Zubok ★★★★★
()

Просто включи `iswitchb-mode`, он делает пункты 1, 2, 3, только кнопочки другие.

Sphinx ★★☆☆
()

Частичное решение задачки. Ставишь iswitch buffers.

Вывод в минибуфере списка буферов M-tab.
по M-tab перебор буферов вперед. По Shift-tab перебор назад. 
Активный становится первым.

Это в ~/.emacs

(global-set-key [(meta tab)] 'iswitchb-buffer)

(defun iswitchb-tab-keys ()
  (mapc (lambda (k) 
	  (let* ((key (car k)) (fun (cdr k)))
	    (define-key iswitchb-mode-map (edmacro-parse-keys key) fun)))
	'(("<M-tab>" . iswitchb-next-match)
	  ("<backtab>" . iswitchb-prev-match))))

(add-hook 'iswitchb-define-mode-map-hook 'iswitchb-tab-keys)

Zubok ★★★★★
()

>4. Похоронить буфер.

В iswitchb выбранный в списке буфер хоронится комбинацией C-k. Можно тоже перемапить.

Zubok ★★★★★
()
Ответ на: комментарий от den73

А так, вообще, всем большое спасибо. Сейчас некогда, вечером или завтра утром посмотрю.

den73 ★★★★★
() автор топика
Ответ на: комментарий от den73

>Похоронить - имеется в виду bury-buffer

А цель какая? Ты хочешь, чтобы этот буфер при переключении C-x b был первым кандидатом? iswitchb ведет хистори. И там можно переключаться не только по списку буферов, но и на буфер, который был открыт до этого, и до до этого. Переход по хистори возможет вперед и назад. По умолчанию это стрелочки "вверх" и "вниз" в режиме iswitchb.

Zubok ★★★★★
()
Ответ на: комментарий от anonymous

Всё, спасибо, поставил iswitchb, доволен. Хотя ещё не все его возможности выучил, но возможность выбирать буфер по подстроке - этого уже почти достаточно.

den73 ★★★★★
() автор топика
Ответ на: комментарий от den73

(defun iswitchb-post-command ()
  (iswitchb-exhibit)
  (if (= (length iswitchb-matches) 1)
      (display-buffer (car iswitchb-matches))))

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

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

А, да ладно, и так нормально.

den73 ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.