Emacs Lisp函数,写入区域到文件并删除它

时间:2012-08-31 18:55:56

标签: emacs lisp buffer elisp region

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

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

我想做这样的事情

(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)选择要写自助餐的文件。我完全不知道如何在后台打开创建的文件。请帮帮我。

1 个答案:

答案 0 :(得分:3)

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

(interactive "r\nFFilename: ")

假设您已经使用ido打开其他文件,例如(ido-mode 1)文件中的.emacs

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

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