我想向用戶顯示一個正常的緩衝區,但我想保存他/她以XML格式寫入的內容。我可以在Emacs中執行此操作嗎?使用某些功能或其他?如何以XML格式保存緩衝區(以XML格式顯示給用戶) - 在Emacs中
注:
正常緩衝:文本沒有標記的......比較... XML格式:有XML標籤和LL文件/緩衝區的內容存儲爲記錄的文件..
我想向用戶顯示一個正常的緩衝區,但我想保存他/她以XML格式寫入的內容。我可以在Emacs中執行此操作嗎?使用某些功能或其他?如何以XML格式保存緩衝區(以XML格式顯示給用戶) - 在Emacs中
注:
正常緩衝:文本沒有標記的......比較... XML格式:有XML標籤和LL文件/緩衝區的內容存儲爲記錄的文件..
它保存在文件中變換緩衝器額外後綴.xml
(defun transform-file-on-save()
(let ((bufer-as-string (buffer-string))
(new-file-name (concat (buffer-file-name) ".xml")))
(with-temp-buffer
(insert bufer-as-string)
;; some operations in the buffer
(goto-char (point-min))
(replace-string "(" "<b>")
(goto-char (point-min))
(replace-string ")" "</b>")
;; save file
(message "Writing file: %s" new-file-name)
(write-region (point-min) (point-max) new-file-name nil 'quietly))))
(add-hook 'after-save-hook 'transform-file-on-save)
;; better have it around to get rid of the hook
;;(remove-hook 'after-save-hook 'transform-file-on-save)
Emacs提供了可以附加功能的動作鉤子。在這種情況下,您可能需要附加一些東西到before-save-hook
,這將在您保存文件時轉換文件。
(defun some-transform() ...)
(add-hook 'after-save-hook 'some-transform nil t)
我不太瞭解您的問題可以說更多。
這裏的問題是,這是一個字面轉換,一旦用戶保存該文件,它將不會變回,除非您應用另一個轉換。
在這種情況下,你將要勾上find-file-hook
(defn some-reverse-transform() ...)
(add-hook 'find-file-hook 'some-reverse-transform)
這改變了XML回純文本。
你說的正常的格式VS XML格式的意思。它們都只是文本文件。你的意思是改變主模式形式的XML嗎?根據emacs文件的格式由文件擴展名或頭文件決定。 – zellio 2012-07-26 17:48:58
@Mimisbrunnr:我在問題中增加了一個註釋,thnx – Daniel 2012-07-26 17:51:21