Emacs 창의 크기는 어떻게 설정합니까?


103

나는 emacs를 시작하는 화면의 크기를 감지하고 그에 따라 크기를 조정하고 시작되는 창 위치를 조정하려고합니다 (emacs-speak의 프레임 인 것 같습니다). 내 .emacs를 설정하여 항상 "합리적으로 큰"창이 나타나고 화면 왼쪽 상단 근처에 왼쪽 상단이 표시됩니다.

나는 이것이 일반적인 경우에 대한 요청 이라고 생각합니다 . 그래서 조금 좁히기 위해 Windows 및 (Debian) Linux에서 GNU Emacs 22에 가장 관심이 있습니다.

답변:


89

해상도에 따라 크기를 변경하려면 다음과 같이 할 수 있습니다 (특정 요구 사항에 따라 선호하는 너비 및 해상도 조정).

(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가 터미널 모드에 있음을 감지하는 방법 질문에 대한 답변 을 참조하십시오 . 조금 더 배경을 위해.


나는 다른 숫자를 좋아하므로 (당신이 제안한대로) 내 것을 조정했습니다. 그러나 이것은 훌륭하게 작동합니다. 감사합니다!
lindes 2011 년

다시 말하지만, 저는 실제로이 버전이 더 좋아졌습니다. 훨씬 더 간단하고 (읽고 조정하기 쉬움) 제 요구에 잘 맞습니다. 하지만 둘 다 좋은 대답입니다! +1
lindes 2011 년

1
적어도 OS X의 Emacs 24.2에서는 높이에주의하십시오. 한 행을 너무 높게 설정하면 창은 버퍼의 첫 번째 행이 보이지 않는 상태로 고정됩니다. 그러나 창은 그것을 표시하기 위해 스크롤되지 않습니다.
Greg Hendershott

2
이 방법에는 사소한 아티팩트가 있습니다 (및 여기에 나열된 다른 방법). Emacs는 특정 크기로 열리고 1 초 후에 우리가 설정 한 크기로 크기가 조정됩니다. 그러나 전환이 보입니다. emacs가 t = 0 초에서 원하는 크기로 자신을 그리는 방법이 있습니까?
stathisk 2014

48

내 다음이 있습니다 .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)을 사용 하여 자세한 문서를 가져옵니다.

현재 윈도우 환경에서 프레임의 최대 높이 / 너비를 계산하는 방법이 있는지 잘 모르겠습니다.


12
예이! (if (window-system) (set-frame-size (selected-frame) 124 40))승리를 위해-매우 훌륭하고 간결하며 터미널의 기본값 인 멋지고 친숙한 크기를 얻습니다. :) (물론 선호도에 따라 조정하십시오.) 감사합니다!
lindes 2011 년

1
명확히하기 위해, init.el이것을 넣으면 초기 프레임에만 적용됩니다. 그 후에 새 프레임을 만들면 위의 기능이 적용되지 않습니다. 새 프레임의 설정은에서 설정됩니다 default-frame-alist.
David J.

이것은 (set-frame-size (selected-frame) 80 24)161 x 48 프레임 을 제공하는 것을 제외하고 는 저 에게 효과적입니다 . 나는 4K hidpi 화면을 사용하고 있지만 이것이 캐릭터 수에 영향을 미칠 것이라고 기대하지 않습니다.
charliegreen

21

출처 : 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를 시작하는 원래 프레임을 아는 것이 때때로 좋기 때문입니다.


프레임의 높이와 너비 ( (width . 80) (height . 40)) 를 설정하는 데 오랫동안이 방법을 사용 했지만 어떤 이유로 Xubuntu 버전을 12.04에서 13.10으로 업그레이드 한 후 작동이 중지되었습니다. 시작시 프레임 크기가 기본값이었습니다. 그런 다음 Chris Conway의 답변을 사용하여 전환했습니다.
Teemu Leisti

17

내가 찾은 가장 쉬운 방법은 X-Window 환경에서 X 리소스를 사용하는 것 입니다. 내 .Xdefaults의 관련 부분은 다음과 같습니다.

Emacs.geometry: 80x70

+ 0 + 0 위치 좌표를 접미사로 붙여서 디스플레이의 왼쪽 상단 모서리로 강제 할 수 있어야합니다. (내가하지 않는 이유는 가끔 새 프레임을 생성하고 이전 프레임과 똑같은 위치에 나타나면 혼란스러워지기 때문입니다)

매뉴얼에 따르면 이 기술은 MS Windows에서도 작동 하며 리소스를 레지스트리에 키 / 값 쌍으로 저장합니다. 나는 그것을 테스트하지 않았습니다. 단순히 파일을 편집하는 것보다 훨씬 더 불편할 수도 있습니다.


1
yeap은 Windows에서도 작동합니다. Emacs wiki는 더 자세한 정보를 제공합니다 : emacswiki.org/emacs/MsWindowsRegistry
Sa'ad

17

다음 코드를 추가해보십시오. .emacs

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

(add-to-list 'default-frame-alist '(width . 80)) 

12

emacs를 실행할 때 -geometry 매개 변수를 사용할 수도 emacs -geometry 80x60+20+30있습니다. 창은 너비가 80 자, 높이가 60 행이고, 왼쪽 상단 모서리가 오른쪽으로 20 픽셀, 배경의 왼쪽 상단 모서리에서 30 픽셀 아래로 내려갑니다.


7

우분투에서는 다음을 수행하십시오.

(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

Windows에서는 다음 함수를 사용하여 emacs 프레임을 최대화 할 수 있습니다.

(defun w32-maximize-frame ()
  "Maximize the current frame"
  (interactive)
  (w32-send-sys-command 61488))

1
(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
(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)

나는 Bryan Oakley의 설정을 선호합니다. 그러나 '높이가 GNU Emacs 24.1.1에서 제대로 작동하지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.