Перемещение строки режима и минибуфера на верх

12

Можно ли как-нибудь переместить строку режима и минибуфер снизу вверх?

На минибуфер распространяется предыдущий вопрос Как отобразить содержимое минибуфера в середине фрейма emacs? , так что этот вопрос в первую очередь о модовой строке.

Я только что уронил свой ноутбук и треснул экран, так что не вижу много в нижнем ряду.

Mongus Pong
источник
Под «строкой состояния» вы подразумеваете строку режима или минибуфер?
Малабарба
@ Malabarba Извините, я не на 100% разбираюсь в терминологии emacs. Я имею в виду оба. Я не могу видеть много в нижней части экрана.
Mongus Pong

Ответы:

18

Содержимое mode-lineхранится в переменной mode-line-format. Emacsтакже поддерживает строку заголовка, содержимое которой управляется переменной header-line-format.

В принципе вы можете использовать

(setq header-line-format mode-line-format)
(setq-default mode-line-format nil)

чтобы формат header-lineбыл равен формату текущей строки режима и удалите mode-line.

Изменить: если вы хотите использовать этот параметр навсегда поставить

(setq-default header-line-format mode-line-format)

в вашем файле инициализации (спасибо Nispio за это предложение).

Поскольку вы также хотите, minibufferчтобы значок отображался в верхней части, я перешлю ссылку @ Malabarba на вопрос « Как отобразить содержимое минибуфера в середине фрейма emacs?». который может быть адаптирован для отображения минибуфера сверху. Также рассмотрим ответ @phils на вопрос: можно ли переместить минибуфер emacs в верхнюю часть экрана? на "старом" emacs теге в стеке

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

elemakil
источник
4
Если вы добавляете это в ваш файл инициализации, вы захотите использовать setq-defaultвместо setq.
Ниспио
Могу ли я спросить причину понижения?
elemakil
@elemakil Ответ был неверным без setq-default. Теперь это правильно. :-)
Малабарба
(хотя технически это теперь не
полно
@ Малабарба, я вижу. Спасибо за разъяснение этого! :-)
elemakil
4

Ваш реальный вопрос в том, как заставить Emacs избежать дефектной части экрана; строка режима и минибуфер - это только то, что в итоге оказывается нечитаемым.

Вместо того, чтобы перемещать их и оставлять что-то еще (например, текст) в нечитаемой части экрана, более чистое и общее решение заключается в сжатии и перемещении фрейма Emacs (то есть того, что обычно называют окном), чтобы он полностью содержался в хорошей области экран.

Как обычно в Emacs, для этого есть специальные инструменты. Библиотека Maxframe ( Github home ) предназначена для автоматического заполнения всего экрана фреймом Emacs, в отличие от того, что вам нужно, но предоставляет полезную mf-set-frame-pixel-sizeфункцию, которую можно вызывать из файла инициализации вместе со стандартной set-frame-positionфункцией для размещения вашего рамка в правильном положении автоматически при открытии Emacs.

Лоренцо Гатти
источник
1
Я поддерживаю вашу точку зрения. Но не обязательно взламывать посылку. Смотрите default-frame-alist .
Малабарба
@Malabarba На несвязанной заметке о doc.endlessparentheses.com , почему только вторая косая черта преобразуется в код ascii? Пример: я получаю, http://doc.endlessparentheses.com/Var%2F2C-window-width.htmlкогда нажимаю 2C-window-width здесь .
Каушал Моди
@kaushalmodi это просто небольшая ошибка в том, как создается индекс. Вы можете использовать обычные слэши для ссылок, и они будут работать нормально. Я исправил это локально, но восстановление индекса занимает часы, поэтому я откладываю его до emacs 25. :-)
Malabarba
1
@Malabarba: mf-set-frame-pixel-size полезен, потому что стандартный способ установки высоты и ширины кадра - это символы, а не пиксели, что не очень удобно в этом сценарии. default-frame-alist и его родственники также измеряются в символах.
Лоренцо Гатти,