Elisp如何将当前坐标写入缓冲区

时间:2012-11-20 21:27:02

标签: emacs elisp

所以我有这个功能,它给我选定文本的开始和结束位置

(defun start-end (pos1 pos2)
 "…"
  (interactive "r")
  ; …
  (message "start: %d. end: %d." pos1 pos2)
)

现在我要写入名为“result”的其他文件缓冲区(如果不存在则创建缓冲区),如:

 pos1,pos2,param1,param2

在cmd行上应该询问param1,param2。我该如何实现这一目标?

2 个答案:

答案 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)))