具有默认值的emacs交互式命令

Ale*_*ler 24 emacs elisp interactive

我想知道emacs中的某些交互式命令是如何显示默认值而其他命令则不是.例如,当我在C文件中并且光标处于打开状态时printf,默认情况下运行manual-entry将建议显示手册页printf.我想用默认值创建自己的交互式命令.怎么样?这似乎是一个很好的方向,但我如何将点对点和互动融合在一起呢?

eve*_*_jr 28

您已经有了很好的起点来研究自己的解决方案.

thing-at-point在这种情况下可能很有用.我最近回答 了一个问题,我通过探索Emacs代码库解释了如何解决这类问题.

这是我提出的粗略玩具功能.

(defun say-word (word)
  (interactive (list
                (read-string (format "word (%s): " (thing-at-point 'word))
                             nil nil (thing-at-point 'word))))
  (message "The word is %s" word))
Run Code Online (Sandbox Code Playgroud)

这里的一个关键是要了解interactive表单的工作原理.我会仔细阅读相关的手册部分.