代码之家  ›  专栏  ›  技术社区  ›  polyglot

如何在启动时最大化Windows上的Emacs?

  •  42
  • polyglot  · 技术社区  · 15 年前

    以下是我尝试过的:

    1. 使用适当的高度/宽度设置初始帧列表
    2. 设置默认帧列表
    3. (特定于Windows的内容)向emacs Windows发送消息,告诉它通过 (w32-send-sys-command 61488)
    4. 尝试了我在某处找到的此功能:

      (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))))))
      
    5. 在init文件的开头和结尾都尝试了上述方法,以消除来自其他init内容的干扰。

    [p.s.关于这一点还有其他问题,但没有一个答案有效]


    更新:

    (tool-bar-mode -1)
    

    所以现在的问题是:如何禁用工具栏(毕竟,emacs的工具栏很难看,占用了宝贵的屏幕空间),并最大化init文件中的窗口?这可能是一个错误,工具栏干扰了窗口的大小?


    解决方案: (或者至少是现在对我有用的东西)

    这可能是Emacs中的一个bug。解决方法是通过注册表而不是在.emacs中禁用工具栏。将以下内容另存为.reg文件,并在Windows资源管理器中执行该文件:

    Windows Registry Editor Version 5.00
    
    [HKEY_CURRENT_USER\Software\GNU\Emacs]
    "Emacs.Toolbar"="-1"
    

    (此解决方案是OtherMichael建议的工作版本)。

    15 回复  |  直到 12 年前
        1
  •  25
  •   Michael Paulukonis    11 年前

    我发现 an answer a year-or-so back 这就解释了您必须操纵注册表才能正确操作:

    要启动Emacs maximized,请将此行

    (w32-send-sys-command 61488)
    

    如果您不想要Emacs工具栏 (工具栏模式-1) 在这种情况下,完全最大化-真实 迷路的您必须禁用工具栏 在注册表中,要将其取回,请执行以下操作:

    [HKEY_LOCAL_MACHINE\SOFTWARE\GNU\Emacs\Emacs.Toolbar]
    @="0"
    

    如果您查看EmacsWiki中的 W32SendSys command-codes 61488 最大化当前帧

        2
  •  13
  •   Kenny Jensen    14 年前

    这是对我有效的最简单的修复方法:

    (w32-send-sys-command #xf030)
    (add-hook 'window-setup-hook (lambda () (tool-bar-mode -1)))
    
        3
  •  12
  •   yPhil Erdogan Oksuz    11 年前

    emacs -mm

    这将使Emacs完全最大化。把它放在你的快捷方式中,这实际上取决于你使用的窗口管理器;我自己只是把它化名在我的名字里 .*shrc .

    另一方面,事实上,我启动Emacs的方式是,如果已启动,则所选文件只是作为现有Emacs会话中的新缓冲区打开:

    if [ "$(pidof emacs)" ] ; then
        emacsclient "$@"
    else
        emacs -mm "$@"
    fi
    

    我在文件管理器中右键单击一个文本文件,选择“用另一个程序打开”并输入“e”,现在我只需双击文件,它们就会在同一个会话中整齐地打开。

    而且一切都是桃色的和有弹性的:)

        4
  •  10
  •   Roland Kaufmann Roland Kaufmann    15 年前

    (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
  •  5
  •   ens    9 年前

    这在计算机上运行可靠 Emacs 24.5.1 (i686-pc-mingw32) :

    (add-to-list 'initial-frame-alist '(fullscreen . maximized))
    
        6
  •  3
  •   prewett    15 年前

    (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)
    )
    
        7
  •  2
  •   gavenkoa    13 年前

    解决这类问题的另一种方法是在

    (menu-bar-mode -1)
    (tool-bar-mode -1)
    (tooltip-mode -1)
    (scroll-bar-mode 1)
    

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

    设置帧-*功能之间的延迟也很重要!

        8
  •  2
  •   durron597    9 年前

    (toggle-frame-maximized) ,它可以在Linux和;窗户。

    在设置完所有内容后,我将其放在init文件的末尾,假设在设置结束时,所有内容 不会 被最大化,瞧,它工作了。

        9
  •  1
  •   jottos    15 年前

    我认为它可能不适合您,因为您的代码看起来像 创建框架后。我删除了大小和位置元素,您可以使用 对emacs的启动非常有用。

       (setq default-frame-alist
         (list
          (cons 'left                 350)
          (cons 'top                  0)
          (cons 'width                80)
          (cons 'height               45)
         ......
    
        10
  •  1
  •   Mike    13 年前

    如果您真的想在没有窗口浏览器(标题栏和最大/最小/关闭按钮)的情况下运行Emacs全屏,请尝试以下模式。这对我在XP SP3上使用Emacs 23.3.1很有效。

    http://www.martyn.se/code/emacs/darkroom-mode/

        11
  •  1
  •   zw963    13 年前

    每个人。 emacs 23.3.1,blow代码无效。因为(菜单栏模式-1)会导致windows无法 全屏也一样。

    (w32-send-sys-command #xf030)
    (add-hook 'window-setup-hook (lambda () (tool-bar-mode -1)))
    

    我搜索Eamcs wiki,找到一个可用的方法。

    http://www.emacswiki.org/emacs/FullScreen#toc3

    微软视窗

    如果您使用的是MS Windows,并且希望使用真正的全屏,即去掉顶部标题栏和所有内容,请参阅网站上的w32全屏以了解暗室模式

    或者,这里提供了一个补丁,使全屏帧参数在Windows上真正全屏显示。

    注意如果希望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)
    
        12
  •  0
  •   Hamza Yerlikaya    15 年前
    (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))
    

    下面是my.emacs文件中调用的最后一个函数,它设置屏幕的高度和宽度。它在debian和mac os x上的emacs 22和emacs 23上都可以使用。根据屏幕设置高度和宽度数字。

        13
  •  0
  •   John R Strohm John R Strohm    15 年前

    要禁用工具栏,请添加行

    (tool-bar-mode nil)
    

        14
  •  0
  •   Jarlaxle    13 年前

    emacs-full-screen-win32 项目将帮助您:)

        15
  •  0
  •   ᐅdevrimbaris    11 年前

    以下代码段来自 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)