从医生那里:
变量
window-system-default-frame-alist是元素列表(WINDOW-SYSTEM . ALIST),其中WINDOW-SYSTEM是窗口系统符号,ALIST是框架参数主义者。
假设我希望更改X窗口系统的框架参数it,以便它包含元素(font . "Monospace-11"),但我不希望在该列表中包含多个font元素。
那我该怎么办?基本上,我会遍历这些运算符,删除我想要替换/添加的元素,然后添加元素。这是代码:
(let ((x-frame-alist (alist-get 'x window-system-default-frame-alist)))
(cl-acons 'x (cl-acons 'font "Monospace-11"
(cl-remove (cl-assoc 'font x-frame-alist)
x-frame-alist))
(cl-remove `(x . ,x-frame-alist)
window-system-default-frame-alist)))然后,必须将结果分配给符号window-system-default-frame-alist。但不知怎么的,这一切看起来都太复杂了。当然,必须有一个更简单的解决办法。
发布于 2018-09-30 20:14:57
你可以:
(push '(font . "Monospace-11")
(alist-get 'x window-system-default-frame-alist))或
(setf (alist-get 'font (alist-get 'x window-system-default-frame-alist))
"Monospace-11")发布于 2018-09-30 20:32:19
您可以使用push设置新字体,使用assq-delete-all删除旧设置。
(progn
(setq frame-alist '((x . ((font . "remove")
(other . "d")
(font . "remove")
(other . "c")))
(w32 . ((font . "keep")))))
(setq x-change-font (assq-delete-all 'font (alist-get 'x frame-alist)))
(push '(font . "wanted") x-change-font)
(setq frame-alist
(mapcar
(lambda (elem) (if (eq (car elem) 'x) `(x . ,x-change-font) elem))
frame-alist ))
frame-alist)返回:
((x (font . "wanted") (other . "d") (other . "c"))
(w32 (font . "keep")))https://stackoverflow.com/questions/52581431
复制相似问题