如何使用 Emacs 默认切换全屏?

问题描述 投票:0回答:6

我使用的是 http://emacsformacosx.com/ 的 mac emacs,启动 emacs 时需要单击最大化图标。

如何将最大化的 emacs 窗口设置为默认?

macos emacs
6个回答
9
投票

像这样启动emacs

emacs -mm

8
投票

Ryan McGeary 的

maxframe.el
在 Aquamacs 和 Emacs.app 上都很适合我。我通过 EmacsWiki 找到了它:http://www.emacswiki.org/emacs/FullScreen。该页面讨论了一个修补版本,现在是 404 页面,但 https://github.com/rmm5t/maxframe.el 上的原始版本似乎工作正常。


8
投票

这是我编写和使用的一个函数。当你连续按 F11 时,emacs 会切换 4 种模式:

(defun switch-fullscreen nil
  (interactive)
  (let* ((modes '(nil fullboth fullwidth fullheight))
         (cm (cdr (assoc 'fullscreen (frame-parameters) ) ) )
         (next (cadr (member cm modes) ) ) )
    (modify-frame-parameters
     (selected-frame)
     (list (cons 'fullscreen next)))))

(define-key global-map [f11] 'switch-fullscreen)

6
投票

简短的答案是将以下内容添加到您的

custom-set-variables
:-

(custom-set-variables
 ;; custom-set-variables was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 ...
 '(initial-frame-alist (quote ((fullscreen . maximized))))
 ...
 )

下面给出的是我想要的作为同一问题的解决方案。 TL;博士。

我面临同样的问题,但在所有应用程序中,而不仅仅是在 Emacs 中。为此,我将 Mac 上的快捷键 cmd-m 全局绑定到“缩放”菜单选项,该选项通常是绿色最大化按钮的菜单选项。然而,Emacs 不提供“缩放”菜单选项,该选项通常位于“窗口”菜单项下。所以我最终得到了以下结果。

我昨晚刚刚编写了以下代码。

;; This defines cmd-m to do the same as clicking the green titlebar button
;; usually meant for the "Window -> Zoom" menu option in Mac apps
(defun zoom () "zoom, same as clicking the green titlebar button in Mac app windows"
  (interactive)
  (set-frame-parameter
   nil 'fullscreen
   (pcase (frame-parameter nil 'fullscreen)
     (`nil 'fullheight)
     (`fullheight 'maximized)
     (`fullboth (ding) 'fullboth)
     (`fullscreen (ding) 'fullscreen)
     (_ nil))))
(global-set-key (kbd "s-m") 'zoom)

代码最后一行中的键盘快捷键与我最初描述的 Mac cmd+m 全局键绑定非常匹配。您可以将其定制为适合您的任何内容。我习惯在启动大多数应用程序时按 cmd-m 直到它适合屏幕,Emacs 对我来说就是其中之一。所以我不关心

initial-frame-alist
设置。

今晚我通过添加以下代码继续完成我想要的功能集。

;; This defines ctrl-cmd-f to do the same as clicking the toggle-fullscreen titlebar
;; icon usually meant for the "View -> Enter/Exit Full Screen" menu option in
;; Mac apps
(defun toggle-fullscreen() "toggle-fullscreen, same as clicking the
 corresponding titlebar icon in the right hand corner of Mac app windows"
  (interactive)
  (set-frame-parameter
   nil 'fullscreen
   (pcase (frame-parameter nil 'fullscreen)
     (`fullboth nil)
     (`fullscreen nil)
     (_ 'fullscreen))))
(global-set-key (kbd "C-s-f") 'toggle-fullscreen)
; For some weird reason C-s-f only means right cmd key!
(global-set-key (kbd "<C-s-268632070>") 'toggle-fullscreen)

一些注意事项:-

  1. 如果您刚刚从这段代码中学习使用
    pcase
    ,请小心不要犯像我一样的错误,将反引号误读为文档中的引用。
  2. fullscreen
    fullboth
    的别名,并且不像后者那样用词不当,因此我不仅将这种情况作为
    (frame-parameter nil 'fullscreen)
    的值处理,而且每当我想要时都可以使用它
    set-frame-parameter
    fullboth

HTH


1
投票

https://stackoverflow.com/a/1029065/351716给出的答案对我有用(使用GNU Emacs v24.2.1)。要重复,请在您的 .emacs

 文件中定义以下函数:

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

为了方便起见,您可以将命令绑定到按键。 我使用

C-z

 键,否则会最小化框架,我不需要它,但当我不小心按下它时总是觉得烦人:

(global-set-key (kbd "C-z") 'x11-maximize-frame)

正如我在评论中所指出的,我添加到该答案中,使用此命令会在正常帧状态和最大化状态之间重复循环,但有一点烦恼:在这两者之间,有一种奇怪的状态,其中帧几乎但不完全垂直最大化。但这是一个小问题。


0
投票

(add-hook 'window-setup-hook 'toggle-frame-fullscreen t)


    

© www.soinside.com 2019 - 2024. All rights reserved.