Как мне найти размер дисплея моей системы в Emacs?

StackOverflow https://stackoverflow.com/questions/3514299

  •  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

Я знаю, что уродливое решение, но в настоящее время это единственное решение, которое делает свое дело.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top