Как установить размер окна Emacs?
Я пытаюсь определить размер экрана, на котором я запускаю emacs, и настроить размер и положение окна, в котором он запускается (я думаю, что это кадр в emacs-speak) соответственно. Я пытаюсь настроить свой .emacs, так что я всегда получаю "разумно большое" окно с его левым верхним углом в левом верхнем углу экрана.
Я думаю, что это большой попросите общий случай, поэтому, чтобы немного сузить вещи, меня больше всего интересует GNU Emacs 22 на Windows и (Debian) Linux.
10 ответов:
Если вы хотите изменить размер в соответствии с разрешением вы можете сделать что-то вроде этого (настройка предпочтительной ширины и разрешения в соответствии с вашими конкретными потребностями):
(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 находится в терминальном режиме? для немного больше фона.
у меня есть следующая в моем
.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
), чтобы поднять подробную документацию.Я не уверен, что есть способ вычислить максимальную высоту/ширину кадра в текущей оконной среде.
взято из: 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.
самый простой способ, который я нашел, чтобы сделать это в среде X-Window, - это через X ресурсы. Соответствующая часть моя .Xdefaults выглядит так:
Emacs.geometry: 80x70
вы должны быть в состоянии суффикс его с +0+0 координаты местоположения, чтобы заставить его в верхнем левом углу дисплея. (причина, по которой я этого не делаю, заключается в том, что я иногда создаю новые кадры, и это делает вещи запутанными, если они появляются в том же месте, что и предыдущие один)
согласно инструкции,этот метод работает и на MS Windows, хранение ресурсов в виде пар ключ/значение в реестре. Я никогда не проверял это. Это может быть здорово, это может быть гораздо больше неудобств по сравнению с простым редактированием файла.
попробуйте добавить следующий код
.emacs
(add-to-list 'default-frame-alist '(height . 24)) (add-to-list 'default-frame-alist '(width . 80))
вы также можете использовать параметр-geometry при запуске emacs:
emacs -geometry 80x60+20+30
даст вам окно шириной 80 символов, высотой 60 строк, с верхним левым углом 20 пикселей вправо и 30 пикселей вниз от верхнего левого угла фона.
на ubuntu do:
(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)
в windows, вы можете сделать Emacs кадр максимизирован с помощью этой функции:
(defun w32-maximize-frame () "Maximize the current frame" (interactive) (w32-send-sys-command 61488))
(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))
(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.