1

我想编写一个 ELisp 函数,它将:将当前区域附加到一个新文件(它已经在 ELisp 标准库中写入,它被称为 write-region),然后在后台将此文件作为新缓冲区打开,以便我稍后编辑它.

但我也希望删除当前选定的区域。

我想做这样的事情:

(defun write-region-delete-and-open(start end filename)
  "function takes current region, and writes it to specified file"
  (interactive "r\nsFilename: ")
  (write-region start end filename t)
  (kill-region start end))

但它不像我想象的那样工作。当我切割该区域时,它总是会在缓冲区中的该区域之后杀死所有内容。我还想使用 (ido-find-file) 选择要写入自助餐的文件。我完全不知道如何在后台打开创建的文件。请帮我。

4

1 回答 1

3

要使用,请将参数ido-find-file的交互规范更改为。那是:filenameF

(interactive "r\nFFilename: ")

这是假设您已经在使用 ido 打开其他文件,就像(ido-mode 1)在您的.emacs文件中一样。

在后台打开文件的功能,我假设您的意思是打开文件而不立即显示它,称为find-file-noselect.

我不知道为什么该区域之后的整个缓冲区会被调用杀死kill-region;当我使用您的代码时,我没有看到这种情况发生。

于 2012-08-31T20:18:53.193 回答