0

我将所有框架名称设置为(set-frame-name)后跟(toggle-frame-maximized)[问题的根本原因],并且它们的名称后面都有一个-- (171 x 55)(这似乎会根据框架大小而变化)。它不会影响我通过短名称调用框架的任何函数,但它减少了我为使用特殊名称使框架看起来更好看的努力。我尝试设置frame-title-format几种不同的方式,包括nil,但这似乎没有影响 - 来自 wiki 的页面在这个问题上不是很有帮助: http ://www.emacswiki.org/emacs/FrameTitle   我' m 使用--with-ns几周前构建的 Emacs Trunk -- 版本 24.3.50 (9.0)。在框架标题中显示的变量是: (frame-height frame)(frame-width frame). 这是一个漂亮的诊断功能: http ://blog.andy.glew.ca/2012_10_02_archive.html

(defun print-frame-info ()
 (interactive)
  (message "%s"
    (mapcar
      (lambda (frame) "print frame"
        (reduce 'concat
          (mapcar (lambda (s) (format "%s" s))
            (list
            "TITLE=" (frame-parameter frame 'title) "\n"
            "   NAME=" (frame-parameter frame 'name) "\n"
            "   explicit-name=" (frame-parameter frame 'explicit-name) "\n"
            "   display=" (frame-parameter frame 'display) "\n"
            "   frame-height X frame-width=" (frame-height frame) "x" (frame-width frame) "\n"
            "   frame-pixel-height X frame-pixel-width=" (frame-pixel-height frame) "x" (frame-pixel-width frame) "\n"
            "   visibility=" (frame-parameter frame 'visibility) "\n"
            )
          )
        )
      )
    (frame-list)
    )
  )
)

请任何关于如何解决此问题的想法将不胜感激。

例子
(来源:lawlist.com

4

1 回答 1

0

编辑:我在 2013 年 8 月 1 日提交给 Emacs 团队的关于这个问题的错误报告刚刚在 Trunk 中修复——错误 #15005 现已关闭——bug#15005: 24.3.50; toggle-frame-maximized -- frame-title "-- (frame-width x frame-height)" 我今天早上构建了一个新的 Emacs Trunk --with-ns (2013 年 8 月 2 日)并且很高兴确认该问题确实已解决。不再需要我的答案中的解决方法。


在上述错误修复之前临时使用的先前解决方法:

这是一个破解的解决方案 - 如果有人有更好的解决方案,请告诉我。使用非黑客解决方案,在调用toggle-frame-maximized之前调用set-frame-name解决了最初的问题——但是,一旦框架再次最小化和/或最大化,问题就会再次出现。这个 hack 解决了这个问题,但仍然可以在瞬间看到框架在函数运行时被重置为其默认状态。我不确定何时toggle-frame-maximized引入,但它存在于 Trunk 的开发人员版本中。我向 Emacs 团队提交了一份关于 Emacs Trunk 最新版本的错误报告。

(defalias 'toggle-frame-maximized 'lawlist-toggle-frame-maximized)
(defvar lawlist-restore-frame-name nil)
(defun lawlist-toggle-frame-maximized ()
  "Hack by lawlist of `toggle-frame-maximized` from frame.el
  of Emacs Trunk version 24.3.50 (9.0)."
  (interactive)
  (setq lawlist-restore-frame-name (frame-parameter nil 'name))
  (set-frame-name nil)
  (if (memq (frame-parameter nil 'fullscreen) '(fullscreen fullboth))
      (modify-frame-parameters nil
      `((maximized . ,(unless (eq (frame-parameter nil 'maximized) 'maximized) 'maximized))))
    (modify-frame-parameters nil
      `((fullscreen . ,(unless (eq (frame-parameter nil 'fullscreen) 'maximized) 'maximized)))))
  (set-frame-name lawlist-restore-frame-name) )
于 2013-08-01T20:10:23.747 回答