2009-05-20 55 views
3

我目前可以使用的SGML漂亮地打印到相當打印在Emacs一個XML文件,但它是一個手動過程:在emacs中打開xml文件時運行sgml-pretty-print?

  1. M- <
  2. C-空間
  3. M->
  4. Mx sgml-pretty-print

我想這會自動發生(或者至少有一些選項可以這麼做)。我是新來的emacs/elisp的,不知道如何:(?確實在files.el這個開始)

  1. 的Emacs知道什麼代碼,當你打開一個文件運行
  2. 如果你想要覆蓋用你自己的,這些代碼如何做到這一點
+0

您可以用`C-h`它選擇整個緩衝區收上來的第一和第三步驟。 – 2009-05-20 20:47:42

+0

對你而言,但對我而言,C-h是序列中的第一把鑰匙,可以幫助您獲得各種主題的幫助。 – Cheeso 2009-05-20 20:59:16

+0

對不起,打錯了,我的意思是`C-x h`。 – 2009-05-20 21:46:32

回答

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,它給出了一些關於如何解決問題的指針。

4

一個簡單的替代Trey Jackson's answer。只需添加到您的~/.emacs文件:

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