我可以将以下代码包装到函数中(例如,import QtQuick 2.0
import QtTest 1.0
TestCase {
name: "MainMenu"
Loader {
id: main_loader
source: "qrc:/qml/main.qml"
}
function test_on_off(){
wait(3000);
}
}
)
主题名称作为输入参数(您可以包含更多内容,例如my-load-theme
if
必要)?也就是说,我可以使用frame
来
等效运行以下代码。如何定义这样的功能?一世
因(my-load-theme 'solarized)
功能所需的lambda函数中load-theme
的嵌入而陷入困境。
期待elisp大师们!非常感谢!
after-make-frame-functions
感谢 Stefan 和来自https://emacs-china.org/t/topic/5387的评论,以下是两个解决方案:
(add-hook 'after-make-frame-functions
(lambda (frame)
(select-frame frame)
(when (display-graphic-p frame)
(load-theme 'solarized t))))
调用函数时:;; -*- lexical-binding:t -*-
(defun my-load-theme (theme)
(add-hook 'after-make-frame-functions
(lambda (frame)
(select-frame frame)
(when (display-graphic-p frame)
(load-theme theme t)))))
(注意:将(my-load-theme 'solarized)
放在.el文件的顶行)
;; -*- lexical-binding:t -*-
调用函数时:(defun my-load-theme (theme)
(add-hook 'after-make-frame-functions
`(lambda (frame)
(select-frame frame)
(when (display-graphic-p frame)
(load-theme ,theme t)))))
如果您想以与(my-load-theme '(quote solarized))
相同的方式调用该函数,请将函数定义中的行(my-load-theme 'solarized)
替换为(load-theme ,theme t)
。
答案 0 :(得分:2)
是的,当然,你可以这样做:
;; -*- lexical-binding:t -*-
(defun my-load-theme (theme)
(add-hook 'after-make-frame-functions
(lambda (frame)
(select-frame frame)
(when (display-graphic-p frame)
(load-theme theme t)))))
之后您可以执行(my-load-them 'solarized)
并设置after-make-frame-functions
,以便在创建每个下一帧后加载solarized
。就个人而言,我会改进代码,以避免一遍又一遍地加载相同的主题(如果你不使用太多帧,你可能不会注意到它,但我确实如此)。