Как мне найти размер дисплея моей системы в Emacs?
-
29-09-2019 - |
Вопрос
Я использую одинаковые. EMAC для нескольких машин, операционных систем и платформ. Я бы хотел, чтобы размер кадра по умолчанию EMACS при вызове относился к доступному размеру экрана (например, 96 линий очень хорошо работают на экране рабочего стола 1600x1200, но на ноутбуке 1280x800 мне нужно указать не более 68 строк).
Есть ли выражение EMACS-LISP, которое возвращает ширину и высоту экрана системы?
Обновление: я только что нашел Подобный вопрос, но по какой-то причине ни (x-display-pixel-ширина), ни (дисплей-пиксельная ширина) не можно найти в моей системе GNU EMACS 23.2 в системе Windows XP. Продолжая исследовать ...
Решение
Я использую GNU EMACS 23.2.1 на XP Pro, и функции
(x-display-pixel-width)
и
(x-display-pixel-height)
оба работают в порядке. Они являются частью источника C и должны присутствовать.
Вы можете запустить EMACS за пределами терминала, который он доверяет?
Вот документация из моих нынешних EMACS:
x-display-pixel-height
это встроенная функция в «Сортско-код».
(x-display-pixel-height &optional TERMINAL)
Верните высоту в пикселях клемма X -дисплея. Необязательный терминал аргумента указывает, какое отображение для спроса. Терминал должен быть терминальным объектом, кадром или именем отображения (строка). Если опущено или ноль, это означает отображение выбранного кадра.
Кроме того, у меня есть целая библиотека удобных функций, чтобы помочь в размерах и перемещении рамки EMACS, если вам интересно.
Другие советы
Я делаю это плохой способ, для несколько старой версии.
(tool-bar-mode nil)
(mapc (lambda (x) (add-to-list 'default-frame-alist x))
(list
(cons 'top 0) (cons 'left 0)
(cons 'font "-outline-Courier New-normal-r-normal-normal-11-82-96-96-c-*-iso10646-1")
(cons 'height 67) (cons 'width 176)
))
Кадр по умолчанию построен после запуска .emacs, из алистского алиста по умолчанию. Я никогда не слышал о алисте первоначальной рамы.
Благодаря ответу и комментариям Криса и Скотта, мне удалось придумать следующую рабочую линию в моих .emacs:
(set-frame-size (selected-frame) 96 (/ (* (x-display-pixel-height) 46) 600) )
Это хорошо работает, когда я делаю оценку Buffer на. EMACS, но когда я дважды щелкнул ярлыку EMACS Windows XP, это утверждение полностью игнорируется.
Я знаю, что (выбранная рамка) не является (начальной рамой), поэтому я тоже попробовал это:
(setq initial-frame-alist
'((top . 1) (left . 288) (width . 96) (height . (/ (* (x-display-pixel-height) 46) 600))))
Но это работает только тогда, когда я делаю оценочный буфер на чтении .emacs. Он не работает, когда запускается EMACS (либо из командной строки, либо путем дважды щелкнув его ярлык). Странный.
Обновление: в итоге я установил начальный размер в команде вызова в целевом поле ярлыка:
C:\emacs-23.2\bin\runemacs.exe -geometry 96x78+240+0
Я знаю, что уродливое решение, но в настоящее время это единственное решение, которое делает свое дело.