(基本)Elisp编程:Emacs中Cut功能的特殊钩子

时间:2012-07-24 14:06:59

标签: elisp

我有一个文本文件,里面有相关的内容/段落。假设我从文本中删除/杀死A段。我想编写一个在这种情况下调用的函数,因此相关的段落 - 比方说B - 也被删除了。一个很好的例子是一个带有引用/引用的文档。 - 即每当你删除该文本时,引文也会被删除 - 就像MS Office所做的那样。从理论上讲,我认为:

1)我需要一个Cut的钩子 - 到目前为止我找不到合适的钩子 2)具有正则表达式的搜索功能可能 - 找到相关文本 3)删除该文本

你能告诉我怎么办吗?每个步骤的提示等。

2 个答案:

答案 0 :(得分:2)

为这种情况编写函数很容易:  

(defun when-one-kill-one-and-three ()
  "If a buffer has a string \"one\", it deletes it.
If in this buffer exists also a string \"three\", it will be killed afterwards. "
  (interactive "*")
  (save-excursion
    (save-restriction
      (widen)
      (goto-char (point-min))
      (while (search-forward "one" nil t 1)
        (kill-region (match-beginning 0) (match-end 0))
        (when (search-forward "three")
          (kill-region (match-beginning 0) (match-end 0)))))))

答案 1 :(得分:1)

1)我认为Cut没有钩子,但你可以建议切割(defadvice ..)

2)您应该以某种方式标记您的文本并通过搜索找到它(放一个数字以便您搜索它)..

3)要删除文本,您可以使用kill-region我想