gpt4 book ai didi

function - 在 Emacs Elisp 函数中如何打开一个新的缓冲区窗口,向其打印一个字符串,然后使用键盘按下 'q' 将其关闭?

转载 作者:行者123 更新时间:2023-12-02 01:33:21 24 4
gpt4 key购买 nike

我是 elisp 的新手,我不知道如何表达我的问题以在 Google 上找到答案

我想定义一个函数来:

  • 打开一个新缓冲区
  • 打印一个字符串到那个缓冲区
  • 当用户聚焦并按下'q'时关闭缓冲区和窗口

我试过的是

(defun test ()
(switch-to-buffer-other-window "*test*")
(erase-buffer)
(insert "hello from *test*")
(kill-this-buffer))

(test)

但这并没有按照我想要的方式工作。

为清楚起见,这里是我希望函数执行的操作的图像分解:

初始设置

enter image description here

函数test被执行

enter image description here

焦点保留在初始缓冲区上,然后名为 *test* 的缓冲区获得焦点并在键盘上按下 q

enter image description here

窗口配置现在没有*test*,焦点返回到初始缓冲区

我计划使用此函数将我的个人键绑定(bind)打印到 *test* 缓冲区中,这样我就不必打开我的 .emacs 来查看它们

最佳答案

您可能正在寻找宏with-help-window:

(defun test ()
(interactive)
(with-help-window "*test*"
(princ "hello from test")))

如果你希望能够使用insert而不是princ,那么你可以使用这个:

(defun test ()
(interactive)
(with-help-window "*test*"
(with-current-buffer "*test*"
(princ "hello from test"))))

(如果您使用的是没有 with-help-window 的旧版 Emacs,那么您可以使用 with-output-to-temp-buffer 代替。)

(interactive 只是为了让您可以轻松地对其进行测试。)

关于function - 在 Emacs Elisp 函数中如何打开一个新的缓冲区窗口,向其打印一个字符串,然后使用键盘按下 'q' 将其关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32848801/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com