所以我有这个功能,它给我选定文本的开始和结束位置
(defun start-end (pos1 pos2)
"…"
(interactive "r")
; …
(message "start: %d. end: %d." pos1 pos2)
)
现在我要写入名为“result”的其他文件缓冲区(如果不存在则创建缓冲区),如:
pos1,pos2,param1,param2
在cmd行上应该询问param1,param2。我该如何实现这一目标?
答案 0 :(得分:1)
尝试类似:
(defun start-end (pos1 pos2 param1 param2)
(interactive "r\nsParam1: \nsParam2: ")
(message "%d,%d,%s,%s" pos1 pos2 param1 param2))
interactive
支持一系列不同的输入表单。您可以使用换行符分隔它们:s以使用多个。实际上,您可以提供表达式而不是字符串,执行该操作以执行任何交互操作。
编辑:
要创建缓冲区,您可以使用以下内容,它允许您使用所有标准打印功能在新缓冲区中插入任何内容:
(defun start-end (pos1 pos2 param1 param2)
(interactive "r\nsParam1: \nsParam2: ")
(with-output-to-temp-buffer "*Result*"
(princ (format "%d,%d,%s,%s" pos1 pos2 param1 param2))))
答案 1 :(得分:0)
这是创建缓冲区的代码(如果它不存在),然后附加你想要的文本:
(defun start-end (pos1 pos2)
(interactive "nStart: \nnEnd: ")
(switch-to-buffer (get-buffer-create "*start-end*"))
(goto-char (point-max))
(insert (format "start: %d. end: %d.\n" pos1 pos2)))