【求助】这个“M-x”提示不能 hide/ disable/ remove 吗?(已解决)

试图隐藏emacs左下角 “M-x ”、“Find-file ” 这一类提示,发现它们是由函数(minibuffer-prompt)生成的,且带有个对应的face,customize-face RET minibuffer-prompt

尝试:

(add-hook 'minibuffer-setup-hook
	  (lambda()
	    (put 'minibuffer-prompt 'disable t)))

无效。

尝试:

(add-hook 'minibuffer-setup-hook
	  (lambda()
	    (fmakunbound 'minibuffer-prompt)))

也无效,不过 C-h f 倒是看不到(minibuffer-prompt)了。

另外更换minibuffer-with-setup-hook minibuffer-exit-hook 等hook也无效。

(minibuffer-prompt)定义在:emacs/minibuf.c at 54b8ec4e6fb1eeac049e7bd68372e78c180fe8e4 · emacs-mirror/emacs · GitHub

看不懂你说的。什么提示?在哪里?

就是截图中左下角 “M-x” 这一类提示呀。去掉 “M-x” 这一提示后,效果如下图:敲 M-x之后minibuffer只有光标,没有“M-x”。

注:上面这一截图是通过图中的代码实现了“去掉M-x这一提示本身的read-only属性”,然后手动删掉“M-x”……

为什么要隐藏这个,不要minibuffer?

原因在这里:主要是为了模拟 company-mode的弹窗 :joy:

问了reddit社区,有大佬给了提示:

(let ((minibuffer-prompt-properties (append '(invisible t) minibuffer-prompt-properties)))
  (call-interactively #'execute-extended-command))

竟然想到给 minibuffer-prompt 多加一个 invisible 属性 :+1: 我把它setq住就好了:

(setq minibuffer-prompt-properties
      (append '(invisible t) minibuffer-prompt-properties))

对比这个帖子

貌似 “添加一个属性” 比 “修改原有属性” 更容易一些 :thinking:

2 个赞