我定制了变量frame-title-format
以更改框架标题。但是,当Emacs想要时,它只会更新框架标题。我能否强制Emacs在评估某些自定义函数后更新(即刷新)标题?以下是frame-title-format
的格式:
(setq frame-title-format "%b %* %n")
我希望在缩小缓冲区之后,%n
(如果缩小)能立即生效。
(force-mode-line-update)
(force-mode-line-update)
有所帮助。
[emacs 24.5.1 在 fedora 23 linux 上]在elisp中强制重新显示的一种方法是使用(sit-for 0)
。您可以定义自己的函数,如下所示:
(defun my-narrow-to-region (start end)
(interactive "r")
(narrow-to-region start end)
(sit-for 0))
注意:我无法验证这是否解决了您的问题,因为我使用的是Mac OS X,在此情况下,即使没有这个操作,框架标题也会被正确更新。
更新:在此答案的早期版本中,我建议使用defadvice
。但我意识到这不是一个好主意,因为它会影响所有函数的使用,并引起不必要的副作用。
我认为 Emacs 无法更新的原因可能是以下内容。(C-h v frame-title-format)
它仅用于未设置显式名称的框架
。
第一次设置它时,它可以工作。然后我使用 modify-frame-parameters
设置另一个名称。它不起作用了。我使用 modify-frame-parameters
标记框架,它可以正常工作。
您可以使用 modify-frame-parameters
来设置标题。
(modify-frame-parameters nil
(list (cons 'name string-name)))
但是我还没有想出如何根据参数设置名称,比如frame-title-format
。