在emacs中打开xml文件时运行sgml-pretty-print?

时间:2009-05-20 19:04:08

标签: emacs elisp

我目前可以使用sgml-pretty-print在emacs中打印一个xml文件,但这是一个手动过程:

  1. M-<
  2. C-空间
  3. M->
  4. M-x sgml-pretty-print
  5. 我希望这是自动发生的(或者至少有一些选择)。我是emacs / elisp的新手,并且不明白如何:

    1. emacs知道打开文件时要运行的代码(这是从files.el开始的吗?)
    2. 如果您想用自己的代码覆盖该代码,该怎么做

2 个答案:

答案 0 :(得分:6)

这应该适合你:

(add-hook 'find-file-hook 'my-sgml-find-file-hook)
(defun my-sgml-find-file-hook ()
  "run sgml pretty-print on the file when it's opened (if it's sgml)"
  (when (eq major-mode 'sgml-mode)
    (sgml-pretty-print (point-min) (point-max))))

关键信息包括find-file-hookpoint-min( - max)和major-mode

如果您想了解有关elisp的更多信息,可以查看此question,其中提供了有关如何解决问题的一些指示。

答案 1 :(得分:4)

Trey Jackson's answer的一种稍微简单的替代方案。只需将其添加到您的~/.emacs文件中:

(add-hook 'sgml-mode-hook #'(lambda ()
  (sgml-pretty-print (point-min) (point-max))))