【问题标题】:Emacs Lisp function, that write-region to file and delete itEmacs Lisp 函数,将区域写入文件并删除它
【发布时间】:2012-08-26 14:40:33
【问题描述】:

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

【问题讨论】:

    标签: emacs lisp buffer elisp region


    【解决方案1】:

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

    (interactive "r\nFFilename: ")
    

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

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

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

    【讨论】:

    • 好的,现在一切都很好,即使是杀戮区域 :) 非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多