Emacs 启动时最大化EMAC?(不是全屏)

Emacs 启动时最大化EMAC?(不是全屏),emacs,elisp,Emacs,Elisp,我经常在Emacs启动后按alt-f10(在GNU/Linux中)来最大化窗口(在Emacs术语中,它实际上是一个框架)。大多数时候我按了三次,因为我太早了,没有按第一个alt-f10,这会使一些垃圾出现在小缓冲区周围(Emacs显示错误?) 我怎样才能使这个自动化?(可能使用Gnome设置或elisp?) 我使用的是emacs24(来自bzr回购) 请注意,这不是我想要的常规全屏,按f11键可以得到 可能有用。(摘自) ;; 下一个代码与Emacs 21.4、22.3、23.1和24.3一起使

我经常在Emacs启动后按alt-f10(在GNU/Linux中)来最大化窗口(在Emacs术语中,它实际上是一个框架)。大多数时候我按了三次,因为我太早了,没有按第一个alt-f10,这会使一些垃圾出现在小缓冲区周围(Emacs显示错误?)

我怎样才能使这个自动化?(可能使用Gnome设置或elisp?)

我使用的是emacs24(来自bzr回购)

请注意,这不是我想要的常规全屏,按f11键可以得到

可能有用。(摘自)

;; 下一个代码与Emacs 21.4、22.3、23.1和24.3一起使用。 (当窗口系统 (让( (像素宽度) (py(显示像素高度)) (fx(帧字符宽度)) (fy(帧字符高度)) tx ty ) ;下一个公式在Windows主机上以默认字体发现。 (setq tx(-/px fx)7) (设置日期(/py fy)4) (setq初始帧列表'((顶部2)(左侧2))) (添加到列表“初始帧列表(cons”宽度tx)) (添加到列表“初始帧列表”(cons高度) ) ) 这段代码在Windows/Gnome/KDE的底部为任务栏保留了一些位置

但是不要问,试着读一下:

OSX:

Emacs Trunk的开发者构建有一个名为
切换最大化帧的函数,该函数包含在
../lisp/frame.el
中。该函数可以添加到init hook
之后的
emacs启动hook
,或者只包含在启动时加载的
.emacs
文件中。在OSX上,它一下子增加了宽度和高度


Windows XP:

以下命令可在
生成帧
命令后使用,或在Emacs生成初始帧后使用

(w32-send-sys-command 61488)

OSX和Windows

下面是一个设置初始帧大小和位置的示例——我将其放在
.emacs
文件的开头附近:

(let((帧(选定帧)))
(续)
((等式系统类型“darwin”)
(设置ns自动隐藏菜单栏t)
(设置帧位置帧0);;必须位于'ns自动隐藏菜单栏之后`
(续)
((及
(=1920(显示像素宽度))
(=1080(显示像素高度)))
(设置框架尺寸框架1895 1054 t))
((及
(=1920(显示像素宽度))
(=1200(显示像素高度)))
(设置框架尺寸框架1895 1174 t))
((及
(=1280(显示像素宽度))
(=800(显示像素高度)))
(设置帧大小(帧1265 774 t)))
((及
(均衡器系统类型“windows nt”)
(等同(w32版本)‘(512600)))
;(w32发送系统命令#xf030)
(设置帧位置帧0)
(续)
((及
(=1920(显示像素宽度))
(=1003(显示像素高度)))
(设置框架尺寸框架1898 924 t))
((及
(=1920(显示像素宽度))
(=1123(显示像素高度)))
(设置框架尺寸(框架1876 1052吨))
((及
(=1280(显示像素宽度))
(=723(显示像素高度)))
(设置机架尺寸(机架1250 670 t)))
((及
(均衡器系统类型“windows nt”)
(等同(w32版本)’(617601)))
(设置帧位置帧0)
(续)
((及
(=1920(显示像素宽度))
(=1080(显示像素高度)))
(设置框架尺寸框架1890 1003 t))
(t
(信息“尚未考虑”。)
下面是一个我用来创建新框架的示例--控制确切的大小和位置:

(defun lawlist-make-frame (&optional alist)
  (let ((frame (make-frame alist)))
    (set-frame-position frame 0 0)
    (cond
      ((eq system-type 'darwin)
        (cond
          ((and
              (= 1920 (display-pixel-width))
              (= 1080 (display-pixel-height)))
            (set-frame-size frame 1895 1054 t))
          ((and
              (= 1920 (display-pixel-width))
              (= 1200 (display-pixel-height)))
            (set-frame-size frame 1895 1174 t))
          ((and
              (= 1280 (display-pixel-width))
              (= 800 (display-pixel-height)))
            (set-frame-size frame 1265 774 t))))
      ((and
          (eq system-type 'windows-nt)
          (equal (w32-version) '(5 1 2600)))
        (select-frame frame)
        (cond
          ((and
              (= 1920 (display-pixel-width))
              (= 1003 (display-pixel-height)))
            (set-frame-size frame 1898 924 t))
          ((and
              (= 1920 (display-pixel-width))
              (= 1123 (display-pixel-height)))
            (set-frame-size frame 1876 1052 t))
          ((and
              (= 1280 (display-pixel-width))
              (= 723 (display-pixel-height)))
            (set-frame-size frame 1250 670 t))))
      ((and
          (eq system-type 'windows-nt)
          (equal (w32-version) '(6 1 7601)))
        (select-frame frame)
        (cond
          ((and
              (= 1920 (display-pixel-width))
              (= 1080 (display-pixel-height)))
            (set-frame-size frame 1890 1003 t))
          (t
            (message "Not yet contemplated.")))) )))

出于某种原因,x-send-client-message在某个时候对我不起作用(或者说不可靠)。因此,我使用以下方法:

(defun set-maximized ()
  (interactive)
  (shell-command "wmctrl -r :ACTIVE: -badd,maximized_vert,maximized_horz"))
要在启动时执行此操作:

(add-hook 'window-setup-hook 'set-maximized t)

把它放到我的~/.emacs中对我有用(Debian GNU/Linux上的emacs 24.5.1):

(切换帧最大化)

为了找到它,我检查了M-F10快捷方式调用的命令的名称:C-h M-F10:it返回“toggle frame maximized”,我只是在~/.emacs中调用它

另一个可能更好的解决方案是:

(添加到列表“初始帧列表”(全屏最大化))

为什么不将
初始帧列表
或相应的
xrdb
资源设置为所需的几何体?有关代码和指针,请参阅。我希望全屏显示,接受的答案满足我的需要。谢谢你的链接,顺便说一句。。这个没用。是的,我应该先去emacswiki。只是最近我读了很多。我忘了补充一下,这段代码只在Emacs加载时有效,所以你需要把它放在.Emacs文件中。。。希望这有帮助…是的。我明白。。但这似乎不是我想要的。因为我使用不同分辨率的显示器,所以我想得到的是窗口的最大化,而不是特定的大小。@kindahero。我的解决方案是自适应的,而不是特定的大小),效果很好。我可以设置默认的帧大小吗?类似于
(setq默认帧列表'((宽度.190)(高度.50))
?我是LISP新手,所以…@Phimueme有什么奇怪的是kindhaero不要求全屏,所以我提出了另一个可以修改的解决方案…可选参数f(最大化切换帧)在Emacs 27.1/OSX Catalina上为我工作了什么
(defun set-maximized ()
  (interactive)
  (shell-command "wmctrl -r :ACTIVE: -badd,maximized_vert,maximized_horz"))
(add-hook 'window-setup-hook 'set-maximized t)