LINUX.ORG.RU

emacs загрузка предварительно сохранных наборов буферов

 


0

1

Всем привет.

Часто возникает необходимость загрузить сразу пачку конкретных буферов под тот или иной проект и переключаться между этими буфер-сетами во время работы, редактировать и сохранять. Какие инструменты / плагины реализуют подобную функциональность?

Я конечно понимаю, что тебе виднее, но ты всё делаешь не так. Во-первых emacs нужно запускать один раз, когда ты включил комп. Во-вторых закрывать буферы не нужно от слова «никогда». В третьих нужно включить desktop-mode чтобы всё что открыто сохранялось и автоматически подгружалось при следующем включении. В четвёртых нужно на каждый проект с которым работаешь открыть отдельный фрейм. Ну и конфигурацию окон/фреймов можно сохранять в регистрах (которые также будут сохраняться в desktop-mode).

Также очень советую helm+projectile, что позволяет искать файлы/буферы только внутри проекта. Как альтернативу можешь взглянуть на treemacs, который реализует более традиционный для IDE подход и в частности там есть сессии проектов.

no-such-file ★★★★★ ()
Ответ на: комментарий от no-such-file

Все правильно, но я бы добавил, что «включать один раз» это явно отсылка к тому, что нужно посмотреть как в системе инициализации дистрибутива устроен автозапуск программ на старте. Скорее всего это systemd и нужно что-то вроде systemctl --user enable emacs.service и systemctl --user start emacs.service.

Раньше постоянно пользовался helm’ом, но в последнее время перешёл на ivy councel-projectile. А как тебе дистрибутивы имакса по типу spacemacs & doom? Как по мне, это хорошее продолжение для тех, кто посидел на ванилке пару месяцев и много там настроено из коробке отлично.

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

отсылка к тому, что нужно посмотреть как в системе инициализации дистрибутива устроен автозапуск программ на старте

Ну это по желанию. Я имел в виду, что не нужно emacs открывать/закрывать для того чтобы поработать с одним проектом, потом с другим, как это происходит для обычных редакторов и что подразумевается в вопросе ТСа. Я сам автозапуск не использую, потому что комп редко перезагружаю, только когда обновление и т.п., а в таких случаях есть вероятность что что-то отвалится и поэтому лучше, убедившись что всё на месте, запустить руками.

Кроме того хочу отметить такую фичу kde, как комнаты. На каждый проект запускаю комнату, там раскидываю фреймы emacs, терминалы и т.д. что нужно для проекта.

дистрибутивы имакса по типу spacemacs & doom

Я не фанат vi-подобного управления, а там же это преподносится как фича? Впрочем, не могу судить, потому что вообще ни разу не тыкал всё это безобразие. Мне кажется что они настолько громоздкие и монолитные, что стали уже вещью в себе. Если осваивать emacs с нуля, то может быть они имеют смысл.

no-such-file ★★★★★ ()
Ответ на: комментарий от no-such-file

В четвёртых нужно на каждый проект с которым работаешь открыть отдельный фрейм

Попробую сделать через фреймы, никогда с ними не работал больше, чем с одним. В остальном я так и делаю, как ты написал. treemacs гляну, спасибо.

не нужно emacs открывать/закрывать для того чтобы поработать с одним проектом, потом с другим

Ну да, в этом и смысл. В открытом emacs без перезапуска открывать другой набор буферов для следующего проекта. projectile, desktop-mode, helm и прочее я использую.

хочу отметить такую фичу kde, как комнаты

Комнаты чем-то принципиально отличаются от виртуальных рабочих столов?

они настолько громоздкие и монолитные, что стали уже вещью в себе

Попробовал когда-то давно spacemacs - мне не понравился, но там есть неплохие идеи по по части организации конфигов.

alienclaster ★★★ ()

Если такая необходимость возникает, возможно, стоит задуматься о более высокоуровневом расширении для управления проектами, вроде https://github.com/bbatsov/projectile

Он автоматически распознаёт большинство типов проектов и позволяет переключаться между буферами конкретного. (см. https://docs.projectile.mx/en/latest/usage/ )

Если нужно более гибкое управление именно буферами, то может быть полезно: https://github.com/purcell/ibuffer-vc

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

В открытом emacs без перезапуска открывать другой набор буферов для следующего проекта

Так зачем его открывать? Буферы уже должны быть открыты и так и будет если ты их не закрываешь, а только переключаешь окна/фреймы. А конфигурации окон/фреймов запоминаются в desktop-mode, или можно отдельно сохранить в регистрах, которые тоже в свою очередь запоминаются в desktop-mode

Впрочем, даже когда я переключаю проект в рамках одного фрейма, то никогда этим не заморачиваюсь. Окнами в emacs управлять очень удобно, это одна из причин почему я не ухожу на ide. Поэтому C-x 1, C-c p p и понеслось - дальше сплитим как придётся и продиктует ситуация. Я не держу именно какой-то набор окон, а постоянно их разбиваю/скрываю/открываю в зависимости от текущего момента работы. Для переключения между буферами проекта у меня Alt-Tab (окна DE переключаются по Win-Tab, это имеет тот дополнительный смысл, что тогда в mc Alt-Tab также работает как положено). Совместно с helm это покрывает все мои хотелки.

Да, ещё упомяну winner-mode, который запоминает конфигурацию окон и позволяет по ней перемещаться. Удобно, особенно когда сделал что-то не так и окна похерились.

Комнаты чем-то принципиально отличаются от виртуальных рабочих столов

Комнаты это набор столов. Суть именно в том, что под проект ты создаёшь новую комнату и там по столам раскидываешь то что надо: браузер с набором вкладок относящихся к проекту, emacs с окнами проекта, терминалы и т.д. Для переключения на другой проект ты просто переключаешь комнату и там уже всё готово. Т.о. в рамках одной комнаты у тебя открыто только то, что относится к проекту, тебе не надо в браузере рыться в 100500 вкладок, в emacs переключаться на другой набор окон и т.д. Также удобно то, что это всё привязано к столам, т.е. у тебя в каждом проекте браузер на первом столе, emacs на втором и т.д. не нужно вспоминать где что. Фактически это то что ты ищешь для emacs, но на уровне всего DE.

никогда с ними не работал больше, чем с одним

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

no-such-file ★★★★★ ()
Последнее исправление: no-such-file (всего исправлений: 5)
Ответ на: комментарий от alienclaster

Ровным счётом ни чем. Просто он основан на ivy, который менее требователен к ресурсам и, на мой взгляд, аккуратеней смотрится.

Cirno ()
Ответ на: комментарий от no-such-file

Я не фанат vi-подобного управления, а там же это преподносится как фича?

Когда начал использовать emacs, думал, что хорошо бы понять его философию C-p C-n C-b C-f, но так с ней и не прижился.

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

Ну да, spacemacs монолитен и неповоротлив, поэтому и был создан doom, который более bare, так сказать. Рекомендую попробовать, что бы некотрые вещи интересные перенести в свой конфиг.

Cirno ()
Последнее исправление: Cirno (всего исправлений: 2)

Загрузка в теории есть, но ни одно решение не работает так как ожидается.

В частности хотелось бы чтобы восстанавливались фреймы и открытые окна.

Загрузить просто список открытых буферов можно через desktop save, но все это и ему подобное может работать с оговорками и кривовато, в итоге не совсем надежно.

Проще использовать список недавно открытых файлов, например через helm_recentf

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

workgroups2 с нюансами, сейчас не пользуюсь

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