2009-11-22 28 views
0

我開始使用defaultcontent.el填充新創建的內容緩衝區。 顯然這個模塊沒有被廣泛使用。我認爲有3人,包括我和使用它的作者,因爲當我對它進行搜索時,我發佈的emacs.el成爲第一個打擊。defaultcontent.el - @@ LISP標籤 - read-closest-sexp?

儘管如此,我覺得它很有用。我爲每個文件類型指定一個模板,並且每次創建該類型(或擴展名)的新文件時,都會獲取模板文件中的內容。該模板支持用「@@」引出的已知標籤,該標籤在運行時被取代:

  • AUTHOR插入用戶名;
  • DATE(顯而易見);
  • FILENAME,插入正在創建的文件的名稱;
  • ENV(xxx),插入環境變量xxx的值;
  • 還有一些其他標籤。

例如,無論在模板中找到@@ AUTHOR @@,它將在運行時被新創建的文件中的用戶名替換。

好吧,這不是defaultcontent.el的廣告,我只是想我會解釋一下。


這是問題。

模板中衆所周知的標籤之一是LISP - 它聲稱運行任意的elisp代碼來生成插入新緩衝區的內容。 (用法:@@ LISP(lisp content here)@@)。這取決於一個功能read-closest-sexp,我想在這一點上我只會讀到sexp。

我找不到這個功能。它不包含在defaultcontent.el中,而我在elisp上做得不夠容易。我查看了emacs-lisp \ lisp.el中的提示,但看起來並不明顯。

問題:我怎樣才能將sexp讀入變量?

我猜這是2線的elisp ...

回答

3

嘗試的東西,在點:

(require 'thingatpt) 
(let ((sexp (thing-at-point 'sexp))) 
    (do-something-with sexp)) 

事實上兩條線,如果你忽略了DO-東西:)