LINUX.ORG.RU

persp-mode.el - как пользоваться?

 


1

1

Установил, попробовал создать группу по C-x x s - плевалось ошибкой что где-то что-то не hash-table-p (конкретно в persp-add-new), потом когда начал ковыряться в коде - вроде прошло, стало работать. Перспектива переключается, в модлайне меняется имя, но буферы все остаются. Я предполагал, что новая перспектива будет чистой от буферов.

Короче, хотелось бы иметь какой-то простой пример workflow с использованием этой штуки. Спасибо.

cast Bad_ptr.

★★★

Ну странно это всё.

Для начала какая у тебя версия Emacs? Как 'устанавливал'?
Я тестил на 24.3(сейчас стандартная во всех репах) и из транка, и вроде всё гладко проходило.

но буферы все остаются

вопрос в том чем ты переключаешь буферы? Там для каждого случая надо писать отдельно, сейчас поддерживается стандартный read-buffer, ido-mode, и iswitchb.

Также может возникнуть обманчивое ощущение, что 'буферы остаются' из-за того что конфигурация окон не меняется и окна показывают те же самые буферы — это нормально для вновь созданной 'перспективы'(у которой ещё нет сохраненной конфигурации окон), буферы в окнах остаются, но они не входят в 'перспективу'(надо кстати опцию добавить чтобы для новой перспективы убирать старые окна).

Буфер *scratch* присутствует во всех перспективах.(хотя может и нет, неуверен уже :D).

Bad_ptr ★★★★★
()
Ответ на: Ну странно это всё. от Bad_ptr

Emacs 24.3.1. Устанавливал из list-package.

Буферы переключаю по bs-show. Только что попробовал ido-swithc-buffer - действительно список пустой.

Тогда такой вопрос: как ты обычно этим пользуешься? То есть, скажем, создал перспективу и потом каждый новый открытый буфер добавляешь в нее по C-x x a?

По поводу писать отдельно понял. Попробую может сделать для bs-show по примеру ibuffer.

unlog1c ★★★
() автор топика

Ну и workflow да вот такой вот нехитрый:
Если делаешь какие-то 2 'прожекта-дела' одновременно, то чтобы не было мешанины из буферов создаёшь для каждого свою 'перспективу' + для каждой перспективы своя оконная конфигурация ну и всё это можно сохраняется в файл и потом загружать.

// я по правде сказать ещё использую tabbar-mode(поддержка есть чтобы показывало только буферы из перспективы) и таким образом как бы 2 разделения на буферы получается:
1) с помощью persp-mode раздел на 'проекты' и
2) с помощью tabbar — визульно отображает с группировкой по major-mode(кстати для 'новой' перспективы таббар пустой, так что сразу видно что буферов нету) и с забиндеными кнопками вперед/назад

Bad_ptr ★★★★★
()
Последнее исправление: Bad_ptr (всего исправлений: 1)
Ответ на: комментарий от unlog1c

каждый новый открытый буфер добавляешь в нее по C-x x a?

вроде должны автоматом добавляться в текущую перспективу, когда открываешь через C-x C-f (а может там опция есть)

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

По поводу писать отдельно понял.

кстати у меня была мысль, сохранить стандартную функцию list-buffers(для внутреннего использования) и переопределить её. Тогда впринципе, может и глобально заработать для всех способов.
Как-нибудь попробую(хотя мне и не нравится переопределять стандартные функции, хотя конечно итак адвайсов там выше крыши). Ну или ты попробуй.

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

Ясно. Ну чтобы заставить это все работать надо будет еще привинтить поддержку в stesla, которую я использую для вперед/назад.

Я вот изначально хотел что-то подобное для «два проекта одновременно», но наверное не осилю держать в голове еще в какой я перспективе и жонглировать буферами между ними. Зато что может реально сработать (для меня) так это для новой перспективы открывать новый emacsclient. Получится будто разные инстансы эмакса внутри одного сервера.

Короче, буду затачивать. Спасибо за можуль!

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

вроде должны автоматом добавляться в текущую перспективу, когда открываешь через C-x C-f (а может там опция есть)

Есть опция, включена, че-то не работает. Но опять же, у меня не find-file, а ido-find-file.

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

Поперезапускал Эмакс, переустановил модуль, вроде как заработало.

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

По поводу писать отдельно понял.

Вот, придумал:

(defmacro with-persp-buffer-list (&rest body)
  (let ((buffers (gensym)))
	`(let ((,buffers (safe-persp-buffers (get-frame-persp))))
	   (flet ((buffer-list (&optional frame) ,buffers))
		 ,@body))))

(global-set-key (kbd "C-x b") #'(lambda (arg)
  (interactive "P")
  (with-persp-buffer-list (bs-show arg))))

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

Как говорил дед Апач, it works! Большое спасибо бро, думаю для стеслы заработает тоже (она так же использует buffer-list).

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