2012-08-31 74 views
1

我想寫一個elisp的功能,這將: 當前區域追加到一個新的文件(這已經被寫入elisp的標準庫,它被稱爲寫區),然後打開此文件作爲背景新buffor,所以我可以在以後編輯的Emacs Lisp函數,即寫區域到文件,並刪除它

,但我也希望當前選擇的區域將被刪除

我想要做這樣的事情

(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找到的文件),選擇文件寫自助餐。我完全不知道如何在後臺打開創建的文件。請幫幫我。

回答

3

要使用ido-find-file,請將filename參數的交互式規範更改爲F。那就是:

(interactive "r\nFFilename: ") 

這是假設你已經使用IDO在您.emacs文件打開其他文件,如(ido-mode 1)

打開的背景下,我假設你的意思是打開一個文件,而不立即顯示其文件的功能,被稱爲find-file-noselect

我不知道爲什麼區域之後整個緩衝區將通過調用kill-region被殺死;當我使用您的代碼時,我看不到這種情況。

+0

好了,現在萬物的偉大工程,甚至殺害區域:)非常感謝。 –

相關問題