Подтвердить что ты не робот

Возможно ли переместить минибуфер emacs в верхнюю часть экрана?

Я начал кодирование на 30-дюймовом мониторе, и мне интересно, можно ли переместить минибуфер в верхнюю часть экрана в emacs? поисковые запросы Google ничего не отображают.

Приветствия Nimai Etheridge

4b9b3361

Ответ 1

Посмотрите документацию для default-minibuffer-frame и initial-frame-alist vars. Похоже, что у вас может быть отдельный кадр для вашего минибуфера (который вы могли бы позиционировать в верхней части экрана), а затем генерировать безмасляные фреймы, которые его используют.

Обратите внимание, что в initial-frame-alist указано, что "Если значение вызывает фрейм без минибуфера, и вы не создали фрейм минибуфера самостоятельно, кадр минибуфера создается в соответствии с minibuffer-frame-alist", который звучит как именно то, что потребуется.

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

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

(setq default-minibuffer-frame
      (make-frame
       '((name . "minibuffer")
         (width . 80)
         (height . 1)
         (minibuffer . only)
         (top . 0)
         (left . 0)
         )))
(setq new-frame
      (make-frame
       '((name . "editor")
         (width . 80)
         (height . 30)
         (minibuffer . nil)
         (top . 50)
         (left . 0)
         )))

Естественно, вы также можете комбинировать это с методом scottfrazer перемещения модели в верхнюю часть.

Это можно было бы обработать в window-setup-hook?

Вы также должны посмотреть на встроенные библиотеки frame.el и dframe.el. Такие функции, как dframe-reposition-frame, могут обеспечить удобный способ привязки рамки минибуфера к верхней части активного кадра редактирования.

Переменная minibuffer-auto-raise также может быть сконфигурирована так, чтобы поднимать кадр минибуфера всякий раз, когда активируется минибуфер, что может уменьшить необходимость видеть его в остальное время.

Ответ 2

Я уверен, что вы не можете перенести сам минибуфер, но вы можете сортировать строку, чтобы линия режима была сверху:

(setq-default header-line-format mode-line-format) ; Copy mode-line
(setq-default mode-line-format nil) ; Remove mode-line

Это переопределит такие вещи, как "Info", которые используют строку заголовка, но, вероятно, это будет так близко, что вы получите без взлома источника C.

Ответ 3

Используйте автономный фрейм минибуфера. Это показывает, как:

http://www.emacswiki.org/emacs/Dedicated_Minibuffer_Frame

http://www.emacswiki.org/emacs/oneonone.el

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

  • 1on1-minibuffer-frame-left - Положение левого края рамки минибуфера, в пикселях.

  • 1on1-minibuffer-frame-top/bottom - Положение верхнего (или нижнего) кадра минибуфера в пикселях.