删除特定的 emacs x 资源

删除特定的 emacs x 资源

我有一些X ResourcesEMACS.我想删除那些 EMACS 资源吗?我该如何使用xrdb -remove?还没有找到太多关于该怎么做的信息,甚至更少的例子?

xrdb -query -all | grep -i emacs

Emacs*Background:   #000000
Emacs*Dialog*background:    #000000
Emacs*Dialog*foreground:    #ffffff
Emacs*Foreground:   #ffffff
Emacs*XlwScrollBar.Background:  #000000
Emacs*XlwScrollBar.Foreground:  #ffffff
Emacs*backgroundToolBarColor:   #000000
Emacs*bottomToolBarShadowColor: #000000
Emacs*menubar*background:   #000000
Emacs*menubar*foreground:   #ffffff
Emacs*popup*Background: #000000
Emacs*popup*Foreground: #ffffff
Emacs*topToolBarShadowColor:    #000000
Emacs.default.attributeBackground:  #000000
Emacs.default.attributeForeground:  #ffffff
Emacs.mode-line.attributeForeground:    #ffffff
Emacs.scroll-bar.attributeBackground:   #000000
Emacs.scroll-bar.attributeForeground:   #ffffff
Emacs.tool-bar.attributeBackground: #000000
Emacs.tool-bar.attributeForeground: #ffffff

答案1

我不相信 xrdb 作为本机功能在调用之间保留资源,因此当您注销并重新登录时,或者如果您终止 xrdb 并重新启动它时,它们应该重置。

如果它们在登录会话中不断返回,则它们可能是从您的 shell 初始化脚本中的某个位置加载的。它们通常是通过类似的方式阅读的,xrdb -load $HOME/.Xresources但这只是惯例。

在系统上搜索您的个人和共享 rc 脚本以查找您的 shell,并在您的主目录中搜索包含资源定义的文件。

答案2

xrdb(看源代码) 删除其术语SCREEN_RESOURCES或 的所有 X 服务器数据XA_RESOURCE_MANAGER。你只对后者感兴趣。删除它会比您可能想要的更多,因此您必须使用xrdb -q它来获取当前数据,编辑它,然后重新加载它。

这不一定简单,因为资源可以有连续线。你的例子并没有做到这一点。限制于此(我认为您可能没有配置屏幕资源,因此该-all选项是不必要的):

xrdb -q | grep -v -i emacs > foo
xrdb -load foo

参考手册页会很有帮助......

终止/重新启动xrdb不会对 X 服务器数据产生影响。

手册页中未提及(需要一些工作),xrdb接受所有选项的缩写,例如-query选项可以这样给出-q

            else if (isabbreviation("-query", arg, 2)) {
                oper = OPQUERY;
                continue;
            }

2就是长度-q。顺便说一下,它的代码为-quiet允许相同的长度,但因为这是经过测试的 -query,你必须将其缩写为-qui

相关内容