Как мне установить размер окна Emacs? - PullRequest
99 голосов
/ 18 сентября 2008

Я пытаюсь определить размер экрана, на котором я запускаю emacs, и соответственно отрегулировать размер и положение окна, в котором оно запускается (я думаю, это кадр в языке emacs). Я пытаюсь настроить мой .emacs так, чтобы у меня всегда было «достаточно большое» окно с верхним левым углом рядом с верхним левым краем моего экрана.

Полагаю, это большой для общего случая, поэтому, чтобы сузить круг вопросов, меня больше всего интересует GNU Emacs 22 для Windows и (Debian) Linux.

Ответы [ 10 ]

87 голосов
/ 18 сентября 2008

Если вы хотите изменить размер в соответствии с разрешением, вы можете сделать что-то вроде этого (настроить предпочтительную ширину и разрешение в соответствии с вашими потребностями):

(defun set-frame-size-according-to-resolution ()
  (interactive)
  (if window-system
  (progn
    ;; use 120 char wide window for largeish displays
    ;; and smaller 80 column windows for smaller displays
    ;; pick whatever numbers make sense for you
    (if (> (x-display-pixel-width) 1280)
           (add-to-list 'default-frame-alist (cons 'width 120))
           (add-to-list 'default-frame-alist (cons 'width 80)))
    ;; for the height, subtract a couple hundred pixels
    ;; from the screen height (for panels, menubars and
    ;; whatnot), then divide by the height of a char to
    ;; get the height we want
    (add-to-list 'default-frame-alist 
         (cons 'height (/ (- (x-display-pixel-height) 200)
                             (frame-char-height)))))))

(set-frame-size-according-to-resolution)

Обратите внимание, что оконная система устарела в новых версиях emacs. Подходящая замена - (display-graphic-p). См. этот ответ на вопрос Как определить, что emacs находится в режиме терминала? , чтобы немного больше узнать об этом.

47 голосов
/ 18 сентября 2008

В моем .emacs есть следующее:

(if (window-system)
  (set-frame-height (selected-frame) 60))

Вы также можете взглянуть на функции set-frame-size, set-frame-position и set-frame-width. Используйте C-h f (он же M-x describe-function), чтобы вызвать подробную документацию.

Я не уверен, есть ли способ вычислить максимальную высоту / ширину кадра в текущей оконной среде.

21 голосов
/ 18 сентября 2008

Взято из: http://www.gnu.org/software/emacs/windows/old/faq4.html

(setq default-frame-alist
      '((top . 200) (left . 400)
        (width . 80) (height . 40)
        (cursor-color . "white")
        (cursor-type . box)
        (foreground-color . "yellow")
        (background-color . "black")
        (font . "-*-Courier-normal-r-*-*-13-*-*-*-c-*-iso8859-1")))

(setq initial-frame-alist '((top . 10) (left . 30)))

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

16 голосов
/ 09 сентября 2012

Попробуйте добавить следующий код к .emacs

(add-to-list 'default-frame-alist '(height . 24))

(add-to-list 'default-frame-alist '(width . 80)) 
16 голосов
/ 18 сентября 2008

Я нашел самый простой способ сделать это в среде X-Window через X ресурсов . Соответствующая часть моего .Xdefaults выглядит так:

Emacs.geometry: 80x70

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

Согласно руководству, этот метод работает и в MS Windows , сохраняя ресурсы в виде пар ключ / значение в реестре. Я никогда не проверял это. Это может быть здорово, это может быть гораздо больше неудобств по сравнению с простым редактированием файла.

12 голосов
/ 18 сентября 2008

Вы также можете использовать параметр -geometry при запуске emacs: emacs -geometry 80x60+20+30 даст вам окно шириной 80 символов, высотой 60 строк, с верхним левым углом 20 пикселей вправо и 30 пикселями вниз от верхнего левого угла фона.

7 голосов
/ 05 октября 2011

На Ubuntu сделать:

(defun toggle-fullscreen ()
  (interactive)
  (x-send-client-message nil 0 nil "_NET_WM_STATE" 32
                 '(2 "_NET_WM_STATE_MAXIMIZED_VERT" 0))
  (x-send-client-message nil 0 nil "_NET_WM_STATE" 32
                 '(2 "_NET_WM_STATE_MAXIMIZED_HORZ" 0))
)
(toggle-fullscreen)
5 голосов
/ 22 августа 2010

В Windows вы можете увеличить фрейм emacs, используя эту функцию:

(defun w32-maximize-frame ()
  "Maximize the current frame"
  (interactive)
  (w32-send-sys-command 61488))
1 голос
/ 18 сентября 2008
(setq initial-frame-alist
        (append '((width . 263) (height . 112) (top . -5) (left . 5) (font . "4.System VIO"))
                initial-frame-alist))

(setq default-frame-alist
        (append '((width . 263) (height . 112) (top . -5) (left . 5) (font . "4.System VIO"))
                default-frame-alist))
0 голосов
/ 11 августа 2012
(defun set-frame-size-according-to-resolution ()
  (interactive)
  (if window-system
  (progn
    ;; use 120 char wide window for largeish displays
    ;; and smaller 80 column windows for smaller displays
    ;; pick whatever numbers make sense for you
    (if (> (x-display-pixel-width) 1280)
           (add-to-list 'default-frame-alist (cons 'width 120))
           (add-to-list 'default-frame-alist (cons 'width 80)))
    ;; for the height, subtract a couple hundred pixels
    ;; from the screen height (for panels, menubars and
    ;; whatnot), then divide by the height of a char to
    ;; get the height we want
    (add-to-list 'default-frame-alist 
         (cons 'height (/ (- (x-display-pixel-height) 200)
                             (frame-char-height)))))))

(set-frame-size-according-to-resolution)

Я предпочитаю настройки Брайана Окли. Однако высота ' не работает в моем GNU Emacs 24.1.1.

...