如何编写Emacs函数以使用指定的文本包装标记的区域

Vin*_*yen 8 emacs elisp function

我对elisp不太熟悉,我正在努力学习.在emacs中,我希望能够执行以下操作:

  1. 通过C空间标记
  2. 转到我希望标记结束的位置,因此我有一个突出显示的区域,假设它是"突出显示的文本"
  3. 按键序列
  4. 有emacs要求我输入一些文字,说"情节",和
  5. 将突出显示的文本更改为"plot(突出显示的文本)".也就是说,我想用括号括起highlited文本,并在它前面添加我输入的文本.

    (defun wrap-text ()
        )
    
    Run Code Online (Sandbox Code Playgroud)

我想函数的输入将是突出显示的文本,但我不知道从哪里开始查找.另一个难点是输入文本部分.有人可以指导我吗?谢谢.

Tre*_*son 8

对于您的情况,这应该工作:

(defun wrap-text (b e txt)
  "simple wrapper"
  (interactive "r\nMEnter text to wrap with: ")
  (save-restriction
    (narrow-to-region b e)
    (goto-char (point-min))
    (insert txt)
    (insert "(")
    (goto-char (point-max))
    (insert ")")))

(global-set-key (kbd "C-x M-w") 'wrap-text)
Run Code Online (Sandbox Code Playgroud)