Я хотел бы вкладки, как Firefox, но для Emacs.
Я нашел это: http://emacswiki.org/emacs/TabBarMode
Но он просто добавляет к каждому буферу ( окну в терминологии Emacs) панель, которая показывает открытые в данный момент буферы.
Мне бы хотелось, чтобы вкладка могла содержать несколько буферов ( окна в терминологии Emacs), которые я могу разделить по своему усмотрению. Т.е. каждая вкладка должна соответствовать «состоянию окна» (в смысле window-state-get
).
У меня была бы одна вкладка для моих задач, другая для кода, другая для чтения в Интернете и т.д ..
Это возможно? Можно ли настроить вкладку для этого?
[edit2]
Этот вопрос привлек больше внимания, чем я ожидал. Похоже, что есть решение, но оно потребует некоторых исследований и доработок. Хотя эта / следующая неделя для меня немного занята, я разберу ответы и попытаюсь создать что-то, что будет работать, а затем отредактирую этот вопрос, чтобы отразить мои выводы. Пожалуйста, держись =)
[править]
Вроде как:
/programming/24157754/make-frames-in-emacs-gui-behaves-like-frames-in-terminal
Я бы согласился с несколькими кадрами в одной сессии GUI также.
Ответы:
Сплит буферы по группам
Это возможно с вкладкой. Вы можете добавить правила для группировки буферов в группах. Вот основной фрагмент:
Пример правил:
После того, как вы составили правила, вы можете нажать + или - в строке вкладок панели вкладок для переключения групп, а также ◀ и ▶ для переключения между буферами. Или просто свяжите следующие defuns:
и перемещаться между вкладками и группами вкладок с помощью клавиатуры.
Лично я группирую вкладки, чтобы видеть, что открыто, но перемещаться по ним
ido-switch-buffer
.Переключение между набором правил
Также можно определить различный набор правил группировки буферов и цикл между ними. Вот пример цикла между двумя наборами правил группировки буферов:
Это позволяет переключаться между
tabbar-buffer-groups-common
иtabbar-buffer-groups
Группировка вкладок Определения функций.Сортировка буферов вкладок по имени
Я считаю полезным сортировать буферы вкладок по имени. Вот как это сделать:
источник
АТРИБУТ: Группировка буферов для каждого кадра является прямой реализацией концепций и отдельных частей кода, разработанных / написанных Alp Aker в библиотеке frame-bufs: https://github.com/alpaker/Frame-Bufs.
Ниже приведен пример того, как
tabbar.el
динамически использовать библиотечные и групповые вкладки / буферы для каждого кадра путем добавления вкладок / буферов с помощьюC-c C-a
или удаления вкладок / буферов с помощьюC-c C-n
. Есть только две (2) группы - связанные с текущим кадром (т. Е."A"
) И НЕ связанные с текущим кадром (т. Е."N"
). Группы являются локальными по кадрам, что означает, что у каждого кадра может быть своя собственная группировка. Пользовательская группировка может быть сброшена с помощьюC-c C-r
. Переключение между связанными и не связанными группами сC-tab
. Переключитесь на следующую вкладку / буфер в текущей группе с помощьюM-s-right
. Переключитесь на предыдущую вкладку / буфер в текущей группе с помощьюM-s-left
.Вкладки / буферы могут быть добавлены или удалены программно с помощью
my-add-buffer
иmy-remove-buffer
. Для примера того, как открыть определенные буферы в выбранных кадрах, см. Связанный поток, озаглавленный Как перехватить файл перед его открытием, и решить, какой кадр : /programming//a/18371427/2112489 Функцияmy-add-buffer
должна быть включены в соответствующие места кода в приведенной выше ссылке, если пользователь решит реализовать эту функцию.Пользователь может захотеть создать в пользовательском
mode-line-format
элементе запись, которая отображает имя текущей группы вкладок в строке режима, добавив следующий фрагмент:(:eval (when tabbar-mode (format "%s" (tabbar-current-tabset t))))
однако более подробная настройка строки режима выходит за рамки этого примера.Функция
tabbar-add-tab
была изменена для алфавитного размещения вкладок / буферов.Функция
tabbar-line-tab
была изменена, чтобы обеспечить четыре (4) различных лица в зависимости от ситуации. Если вкладка / буфер связан с фреймом и выбран IS, тогда используйтеtabbar-selected-associated
face. Если вкладка / буфер связана с рамкой и НЕ выбрана, тогда используйтеtabbar-unselected-associated
лицо. Если вкладка / буфер НЕ связана с фреймом и выбрана IS, тогда используйтеtabbar-selected-unassociated
face. Если вкладка / буфер НЕ связана с фреймом и НЕ выбрана, используйтеtabbar-unselected-unassociated
face.На следующем снимке экрана показаны две возможные группировки буферов / вкладок: (1) слева - это группа буферов / вкладок, связанных с фреймом с именем
SYSTEM
[желтые и белые вкладки], причем заглавная буква «A» указана на режим строки; и (2) справа - группировка тех буферов / вкладок, которые НЕ связаны с фреймом, названнымSYSTEM
[синие и красные вкладки], с заглавной буквой «N», обозначенной в строке режима.источник
Попробуйте проверить elscreen , хотя на самом деле он не группирует буферы.
Что он делает, так это группирует окна и предоставляет доступ к нескольким макетам (вкладкам), между которыми вы можете быстро перемещаться. Мой рабочий процесс часто содержит некоторый Ruby-код и связанные тесты на одном экране, в то время как мои заметки todo и Org находятся на другом, и, возможно, рабочий буфер для составления запросов SQL находится на третьем. Это позволяет мне легко переключаться между задачами и проектами, даже если каждый экран использует один и тот же пул буферов.
источник
Как насчет моего плагина, кентавр-вкладок? У него много опций конфигурации, он действительно функционален, поддерживается очень популярными темами, такими как Kaolin Themes, и в целом представляет собой действительно красивый и эстетичный пакет (согласно отзывам пользователей). Он доступен в MELPA и выглядит так:
источник
Вот мой конфиг, для чего стоит. Особенности:
mouse-2
чтобы закрыть, как в браузерах ,mouse-3
чтобы открыть в новом окне Emacs, как в i3 )M-left
и вкладки правого переключателя, как в TMux / Screen )moe-dark
»)*buffers*
и "обычная")TabBar
Приложение 1 - Тема Мо
Приложение 2 - Переключить последние 2 буфера (макрос KB)
источник