簡體   English   中英

Emacs xml模式縮進,帶有選項卡

[英]Emacs xml mode indent with tabs

我拼命嘗試使用制表符而不是空格來制作我的emacs xml(sgml?)模式縮進。 到目前為止我嘗試了什么:

(defun my-xml-hook ()
  (setq c-tab-always-indent t
        tab-width 4
        indent-tabs-mode t) ; use tabs for indentation
  (setq indent-line-function 'insert-tab)
)
(add-hook 'xml-mode-hook 'my-xml-hook)
(defun local-sgml-mode-hook
  (setq fill-column 70
        indent-tabs-mode t
        next-line-add-newlines nil
        sgml-indent-data t)
  (auto-fill-mode t)
  (setq indent-line-function 'insert-tab)
  )
(add-hook 'psgml-mode-hook '(lambda () (local-psgml-mode-hook)))

沒有什么可行,編輯* .xml文件時,仍會在2個空格(emacs23和emacs24)中出現縮進。

請注意,我也有

(setq indent-tabs-mode nil)

在我的.emacs文件中,但是之后應該調用鈎子,所以應該重寫它。

如何強制emacs縮進* .xml文件中的選項卡? 為什么我的鈎子不起作用?

(c-)tab-always-indent控制擊中TAB鍵的內容,而不是插入的內容。

indent-line-function設置為insert-tab將使您失去模式的智能縮進。

如果您使用的是現代emacs,則可能使用的是nxml-mode而不是xml-mode。 在這種情況下, nxml-mode-hook應該是你應該做的事情(setq indent-tabs-mode t)

如果你使用默認的sgml模式, sgml-mode-hook應該是你應該做的事情(setq indent-tabs-mode t)應該完成(在你使用psgml-mode-hook代碼片段中)

(並且tab-always-indent和indent-line-function可以保持默認狀態)

編輯

總結下面的對話:變量nxml-child-indent不應小於tab-width

(並且因為這些變量的默認emacs值是2和8,所以imho配置emacs以使用emacs中的選項卡縮進XML比應該更難)

我花了很nxml-mode才得到nxml-mode來使用標簽。 我最終使用了smart-tabs-mode ,它提供了一個簡潔的解決方案。 對於它的價值,這里是我最終確定的配置:

;; indentation using smart-tabs-mode
(setq-default tab-width 4)
(smart-tabs-insinuate 'c 'c++ 'java 'javascript 'cperl 'python 'ruby 'nxml)

;; nxml-mode
(setq 
    nxml-child-indent 4
    nxml-attribute-indent 4
    nxml-slash-auto-complete-flag t)

您實際上不需要設置nxml-slash-auto-complete-flag ,但它會讓您自動完成標記,這非常好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM