2

我正在使用 Emacs 在 JSF 项目中编写 XHTML 页面,并且必须在每个 XHTML 文件的标题处使用的样板代码量难以键入、丑陋且容易出错。例如:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:ui="http://java.sun.com/jsf/facelets">

处理这个问题的“emacs方式”是什么?我已经阅读了有关nXhtml 模式的信息,但没有尝试过,也不知道它是否像上面那样自动完成样板文件,或者只是提供更多基本的 XML 检查/完成语法。无论如何,我想首先评估更轻量级的替代方案。

4

1 回答 1

2

搜索“模板 emacs”。 https://www.google.com/search?q=template+engine+emacs

这是一个很好的调查:http ://www.emacswiki.org/emacs/CategoryTemplates 。

我使用 defaultcontent.el,这是该页面上列出的选项之一。Defaultcontent.el 根据文件名上的模式匹配使用模板填充新文件。所有 .html 文件都可以获得特定的模板。您可以进行更高级的模板到文件的映射;defaultcontent.el 使用 alist,您可以为您喜欢的文件名指定任何正则表达式。

放入新文件的模板可以动态扩展各种内容,包括文件名、基本文件名、日期/时间、环境变量。在更高级的场景中,模板可以运行您提供的 elisp 代码。

它是 yasnippet 的好伴侣,我将它用于文件中的可选代码段。例如,我的基本 .htm 模板(由 defaultcontent.el 插入)不包含 jquery 的脚本引用。但是我有一个 jquery 的 yasnippet ,所以当我输入 (jquery[TAB]) 时,我得到了完整的扩展

<script type='text/javascript'
        src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js'>
</script>

defaultcontent.el 使用 find-file-hooks 并仅在最初创建文件时插入模板内容。

我几乎将它用于所有文件格式。

于 2012-06-16T18:13:34.567 回答