Как максимизировать Emacs в Windows при запуске?
Это сводит меня с ума: я просто хочу, чтобы Emacs максимизировался до любого разрешения экрана, которое у меня было при запуске. В идеале мне нравится кросс-платформенное (Windows и Linux) решение, которое работает на любом разрешении экрана, но я даже не могу заставить его работать только с Windows XP с даже жестко закодированными размерами.
Вот что я пробовал:
- Установка начального кадра-alist с соответствующей высотой/шириной
- Установка значения по умолчанию-frame-alist
- (специфичные для Windows вещи) Отправка сообщения в окна emacs, которые сообщают ему максимизировать с помощью
(w32-send-sys-command 61488)
-
Пробовал эту функцию, которую я нашел где-то:
(defun toggle-fullscreen ()
"toggles whether the currently selected frame consumes the entire display
or is decorated with a window border"
(interactive)
(let ((f (selected-frame)))
(modify-frame-parameters
f
`((fullscreen . ,(if (eq nil (frame-parameter f 'fullscreen))
'fullboth
nil))))))
- Пробовал вышеуказанные методы как в начале, так и в конце моего файла инициализации, чтобы попытаться устранить помехи от других вещей init.
К сожалению, ничего из этого не работает!! Для некоторых из вышеперечисленных я вижу, что мои окна emacs правильно изменяются в течение секунды, прежде чем возвращаться к небольшому размеру по умолчанию. И если я запустил вышеописанные методы после инициализации, то окна emacs правильно изменяют размер. Что здесь происходит в мире?
[p.s. есть другие вопросы SO, но ни один из ответов не работает]
Update:
Ответы заставляют меня думать, что что-то еще в моем файле инициализации вызывает проблему. И действительно! После некоторых попыток и ошибок я нашел преступника. Если я прокомментировал следующую строку, все работает отлично:
(tool-bar-mode -1)
Что в мире делает панель инструментов для максимального увеличения окон?
Итак, теперь вопрос заключается в следующем: как отключить панель инструментов (в конце концов, панель инструментов emacs уродлива и берет драгоценную экранную недвижимость) И максимизируйте окна как в моем файле инициализации? Возможно, ошибка в том, что панель инструментов препятствует размеру окна?
Уточнение: (инструмент-bar-mode -1) отключает панель инструментов, но эта строка мешает максимизации окон Emacs. Поэтому, если я попытаюсь поставить функции, чтобы максимизировать окна и отключить панель инструментов, максимальная часть не сработает; если часть панели инструментов закомментирована, то часть максимизации будет работать нормально. Не имеет значения, какие решения я использую (среди 4, которые я перечислял).
Решение: (или, по крайней мере, то, что работает для меня сейчас)
Вероятно, это ошибка в Emacs. Обходной путь - отключить панель инструментов через реестр, а не в .emac. Сохраните следующее как .reg файл и выполните этот файл в проводнике Windows:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\GNU\Emacs]
"Emacs.Toolbar"="-1"
(Это решение является рабочей версией того, что предложил другой Майкл).
Ответы
Ответ 1
Я нашел ответ через год или около того, в котором объясняется, что вы должны манипулировать реестром, чтобы делать все правильно:
Чтобы запустить Emacs maximize, поместите эту строку в конце вашего файла ~/.emacs:
(w32-send-sys-command 61488)
Если вы не хотите, чтобы панель инструментов Emacs вы можете добавить строку (tool-bar-mode -1) [ПРИМЕЧАНИЕ: значение равно 0 на исходной странице] в файл ~/.emacs, но Emacs не будет полностью максимизировать в этом случае - реальную недвижимость, занятая панелью инструментов, потерял. Вы должны отключить панель инструментов в реестре, чтобы вернуть его:
[HKEY_LOCAL_MACHINE\SOFTWARE\GNU\Emacs\Emacs.Toolbar]
@="0"
Если вы посмотрите в EmacsWiki под командными кодами W32SendSys, вы обнаружите, что 61488
максимизирует текущий кадр
Ответ 2
Это самое простое исправление, которое сработало для меня:
(w32-send-sys-command #xf030)
(add-hook 'window-setup-hook (lambda () (tool-bar-mode -1)))
Ответ 3
Dudes, что не так с
emacs -mm
?
Это позволяет Emacs полностью максимизироваться. Поместите его в свой ярлык, это действительно зависит от используемого вами оконного менеджера; Я сам просто псевдоним его в . * Shrc.
В другой, но не связанной заметке я фактически запускаю Emacs таким образом, что если он уже запущен, выбранный файл просто открывается как новый буфер в моем существующем сеансе Emacs:
if [ "$(pidof emacs)" ] ; then
emacsclient "[email protected]"
else
emacs -mm "[email protected]"
fi
Это я положил в ~/bin/e, и я просто запускаю Emacs с помощью "e".
Я щелкнул правой кнопкой мыши текстовый файл в диспетчере файлов, выбрав "открыть с помощью другой программы" и ввел "e", и теперь я просто дважды щелкаю файлы, и все они открываются аккуратно в том же сеансе.
И все персиковое и lispy:)
Ответ 4
На X.org системный вызов (так как вы сначала задавали кросс-платформенное решение):
(defun x11-maximize-frame ()
"Maximize the current frame (to full screen)"
(interactive)
(x-send-client-message nil 0 nil "_NET_WM_STATE" 32 '(2 "_NET_WM_STATE_MAXIMIZED_HORZ" 0))
(x-send-client-message nil 0 nil "_NET_WM_STATE" 32 '(2 "_NET_WM_STATE_MAXIMIZED_VERT" 0)))
Ответ 5
Во-первых, спасибо за подсказку об ошибке с (tool-bar-mode -1); спас меня много неприятностей! Я бы предпочел сохранить все в файле .emacs(для меня нет модов реестра), поэтому, если вы включите панель инструментов до ее максимизации, а затем снова отключите ее, вы сможете максимально эффективно:
(defun maximize-current-frame () "Resizes the current frame to fill the screen"
(interactive)
;; There is a bug in tool-bar-mode that prevents it from being
;; maximized, so turn it on before maximizing.
;; See http://stackoverflow.com/questions/815239/how-to-maximize-emacs-on-windows-at-startup)
(tool-bar-mode 1)
(w32-send-sys-command 61488)
(tool-bar-mode -1)
)
Ответ 6
Другим способом решения этой проблемы является задержка между
(menu-bar-mode -1)
(tool-bar-mode -1)
(tooltip-mode -1)
(scroll-bar-mode 1)
и set-frame- *. Например:
(tool-bar-mode -1)
(when window-system
(run-at-time (format "%d sec" 1) nil '(lambda () (set-frame-position (selected-frame) 1 1)))
(run-at-time (format "%d sec" 2) nil '(lambda () (set-frame-width (selected-frame) 150 t)))
(run-at-time (format "%d sec" 3) nil '(lambda () (set-frame-height (selected-frame) 60 t)))
)
Важно также установить задержку между функциями set-frame- *!
Ответ 7
Это надежно работает на Emacs 24.5.1 (i686-pc-mingw32)
:
(add-to-list 'initial-frame-alist '(fullscreen . maximized))
Ответ 8
Эй - хорошая функция! Спасибо за публикацию
Я думаю, что это может не работать для вас, потому что у вас есть код, который выглядит как
следуя где-нибудь еще в вашем файле инициализации. Используется атрибут default-frame-alist
после создания кадра. Я удалил элементы размера и позиции, и вы
отлично работает при загрузке emacs.
(setq default-frame-alist
(list
(cons 'left 350)
(cons 'top 0)
(cons 'width 80)
(cons 'height 45)
......
Ответ 9
Если вы действительно хотите запустить полноэкранный режим Emacs без хронометра окна (строка заголовка и кнопка max/min/close), попробуйте выполнить приведенный ниже режим. Это работало для меня с Emacs 23.3.1 на XP SP3.
http://www.martyn.se/code/emacs/darkroom-mode/
Ответ 10
каждый.
emacs 23.3.1, код ошибки недействителен. потому что (menu-bar-mode -1) может привести к тому, что окна не будут
полноэкранный режим.
(w32-send-sys-command #xf030)
(add-hook 'window-setup-hook (lambda () (tool-bar-mode -1)))
Я ищу Wiki Eamcs, найду полезный метод.
http://www.emacswiki.org/emacs/FullScreen#toc3
MS Windows
Если вы используете MS Windows и хотите использовать "настоящий полноэкранный режим", т.е. избавляясь от верхнего заголовка и всех, см. w32-fullscreen на сайте для режима темной комнаты
Кроме того, здесь доступен патч, который делает полноэкранный кадр действительно полноэкранным в Windows.
Чтобы получить максимально развернутое окно, вы можете использовать: (w32-send-sys-command # xf030)
Внимание! Если вы хотите, чтобы emacs запускался максимально, вы должны поместить этот код в ваш файл .emacs:
(defun jbr-init ()
"Called from term-setup-hook after the default
terminal setup is
done or directly from startup if term-setup-hook not
used. The value
0xF030 is the command for maximizing a window."
(interactive)
(w32-send-sys-command #xf030)
(ecb-redraw-layout)
(calendar)
)
(setq term-setup-hook 'jbr-init)
(setq window-setup-hook 'jbr-init)
Ответ 11
Я столкнулся с одной командой, которая работает (toggle-frame-maximized)
, которая работает как на Linux, так и на Windows.
Я просто положил это в конец моего файла инициализации после настройки всего, сделав предположение, что к концу настройки все не будет максимизировано, и вуаля работает.
Ответ 12
(defun resize-frame ()
"Set size"
(interactive)
(set-frame-width (selected-frame) 110)
(set-frame-height (selected-frame) 33)
(set-frame-position (selected-frame) 0 1))
следующая - последняя функция, называемая в моих файлах .emacs, устанавливает высоту и ширину экрана, на которых она работает как на emacs 22, так и на emacs 23 на debian и mac os x. задайте значения высоты и ширины в соответствии с вашим экраном.
Ответ 13
Чтобы отключить панель инструментов, добавьте строку
(tool-bar-mode nil)
к вашему файлу настройки (обычно .emacs в корневом каталоге).
Ответ 14
emacs-full-screen-win32 поможет вам:)
Ответ 15
Следующий фрагмент из emacswiki работал отлично от меня:
(добавьте в конфигурационный файл запуска)
(defun jbr-init ()
"Called from term-setup-hook after the default
terminal setup is
done or directly from startup if term-setup-hook not
used. The value
0xF030 is the command for maximizing a window."
(interactive)
(w32-send-sys-command #xf030)
(ecb-redraw-layout)
(calendar)
)
(setq term-setup-hook 'jbr-init)
(setq window-setup-hook 'jbr-init)