defaultcontent.el - @@ LISP标签 - read-nearest-sexp?

时间:2009-11-22 17:38:32

标签: emacs elisp

我开始使用defaultcontent.el来填充新创建的内容缓冲区。 显然这个模块没有被广泛使用。我认为有3个人,包括我和使用它的作者,因为当我搜索它时,我发布的emacs.el成为第一个热门。

尽管如此,我发现它很有用。我为每种文件类型指定了一个模板,每次我创建该类型(或扩展名)的新文件时,它都会填充模板文件中的内容。该模板支持用“@@”设置的众所周知的标签,这些标签在运行时被替换:

  • AUTHOR插入用户名;
  • DATE(明显);
  • FILENAME,插入正在创建的文件的名称;
  • ENV(xxx),插入环境变量xxx的值;
  • 还有一些其他标签。

例如,在模板中找到@@ AUTHOR @@,它会在运行时在新创建的文件中替换为您的用户名。

好吧,这不是defaultcontent.el的广告,我只是想我会解释一下。


这是问题所在。

模板中众所周知的标签之一是LISP - 它声称运行任意elisp代码以生成要插入新缓冲区的内容。 (用法:@@ LISP(此处 lisp内容)@@)。这取决于一个函数read-closest-sexp,我猜这个函数只是读取了性别。

我找不到这个功能。它不包含在defaultcontent.el中,而且我在elisp上不够容易创建它。我查看了emacs-lisp \ lisp.el的提示,但它似乎并不明显。

问题:我怎样才能将sexp读入变量?

我猜这是elisp中的两行...

1 个答案:

答案 0 :(得分:3)

尝试点对点:

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

如果忽略了这样做,确实有两行:)