2012-07-24 47 views
2

我有一个文本文件,其中包含相关的内容/段落。假设我从文本中剪切/杀死段落A.我想写一个在这种情况下调用的函数,因此相关的段落 - 比方说B - 也被删除。一个很好的例子就是一个包含引用/引用的文档。 - 即每当你删除文本的引文也被删除 - 就像MS Office所做的一样。从理论上讲,我认为:(基本)Elisp编程:Emacs的Cut函数的特殊钩子

1)我需要切钩 - 我无法找到合适的钩子到目前为止 2)用正则表达式可能是搜索功能 - 找到相关的文字 3)删除文本

你能告诉我如何继续?提示每一步或等

+0

这个问题有一些有吸引力的钩子提示:http://stackoverflow.com/questions/8983758/in-post-command-hook-this-command-for-kill-word-has-turned-into-kill-region- som – tripleee 2012-08-02 07:51:20

回答

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))))))) 
+0

非常棒的人,非常感谢! – Daniel 2012-07-24 16:32:02

1

1)我不认为这是对切挂钩,但你可以劝告切割(defadvice ..)

2)你应该以某种方式标记文本,并发现它与搜索(把一个号码,以便您搜索)..

3)要删除文本,你可以使用kill区域我想