Можно ли переместить минибуфер emacs в верхнюю часть экрана? - PullRequest
26 голосов
/ 16 июня 2010

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

Ура Nimai Etheridge

Ответы [ 3 ]

9 голосов
/ 16 июня 2010

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

Обратите внимание, что в 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)
         )))

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

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

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

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

8 голосов
/ 16 июня 2010

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

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

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

2 голосов
/ 21 августа 2011

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

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...