試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

nXML modeの設定とアウトライン操作メモ

設定

ファイル名: ~/.emacs

;; 全般の設定
(add-hook 'nxml-mode-hook
  (lambda ()
    (setq nxml-slash-auto-complete-flag t) ; 「/」で終了タグを自動的に入力
    (setq nxml-child-indent 1) ; インデント幅
    (setq indent-tabs-mode nil) ; スペースでインデント
    (setq tab-width 1) ; タブ幅
    ; アウトライン表示で使える要素名
    (setq nxml-section-element-name-regexp "article\\|\\(sub\\)*section\\|chapter\\|div\\|appendix\\|part\\|preface\\|reference\\|simplesect\\|bibliography\\|bibliodiv\\|glossary\\|glossdiv\\|sect[1-5]\\|articleinfo")
  )
)
;; 色設定
(custom-set-faces
  '(nxml-comment-delimiter-face
    ((t (:foreground "#66e6e6"))))         ; <!-- -->
  '(nxml-comment-content-face
    ((t (:foreground "#f69933"))))         ; コメント
  '(nxml-delimited-data-face
    ((t (:foreground "LightSalmon"))))     ; 属性値やDTD引数値など
  '(nxml-delimiter-face
    ((t (:foreground "LightSalmon"))))     ; <> <? ?> ""
  '(nxml-element-local-name-face
    ((t (:foreground "PaleGreen"))))       ; 要素名
  '(nxml-element-colon-face
    ((t (:foreground "LightSteelBlue"))))  ; :(xsl:paramなど)
  '(nxml-name-face
    ((t (:foreground "LightGoldenrod"))))  ; 属性名など
  '(nxml-ref-face
    ((t (:foreground "LightSkyBlue"))))    ; &lt;など
  '(nxml-tag-slash-face
    ((t (:foreground "LightSkyBlue"))))    ; /(終了タグ)
)
;; 拡張子の関連付け
(setq auto-mode-alist
  (cons
    '("\\.\\(xml\\|xsl\\|xsd\\|rng\\|x?html\\)\\'" . nxml-mode)
    auto-mode-alist
  )
)

配色は、独自のものを作るより、他のモードで使用されている配色をベースにして

のような感じにした。
DocBook文書を作成する際にアウトライン表示させられるように、nxml-section-element-name-regexpに要素名を追加している。

アウトライン操作

詳細は、nXML modeのinfoを参照。
キー操作は

  • 3段階のキー入力だが、全てCtrlキーを押したまま
  • Ctrl+c Ctrl+oまでが共通
  • 折り畳まれた部分は、Enterでも展開できる

といった感じで、あとは慣れ。必要に応じて、使用頻度の高いものを別のキーに割り当てるのもあり。
(2007/7/20)使用頻度の高いCtrl+c Ctrl+o Ctrl+tCtrl+c Ctrl+o Ctrl+aは、メニューからも実行できる。

nXMLモードのアウトライン制御キー
キー処理
Ctrl+c Ctrl+o Ctrl+t全てのセクションの中身のみ折り畳む(タイトルは見える)
Ctrl+c Ctrl+o Ctrl+a全てのセクションを、中身も含めて展開
Ctrl+c Ctrl+o Ctrl+c現在のセクションの中身のみ折り畳む
Ctrl+c Ctrl+o Ctrl+e現在のセクションの中身のみ展開
Ctrl+c Ctrl+o Ctrl+d現在のセクションとサブセクション以下全てを折り畳んで1行にする(サブセクションがあると「+」表示になる)
Ctrl+c Ctrl+o Ctrl+s現在のセクションとサブセクション以下を全て展開
Ctrl+c Ctrl+o Ctrl+l現在のセクションとサブセクションの中身のみ、それぞれ折り畳む(タイトルだけ見える状態になる)
Ctrl+c Ctrl+o Ctrl+k現在のセクションとサブセクション以下を展開するが、中身は展開しない(「+」表示になっているところで使用)
Ctrl+c Ctrl+o Ctrl+i1つ下のサブセクションのみ展開するが、中身は展開しない(「+」表示になっているところで使用)
Ctrl+c Ctrl+o Ctrl+o現在のセクション以外を全て「+」表示で1行に折り畳む

関連記事: