XML ファイルがあります。emacs 23.2 では nxml モードで開きます。
comment-region
領域内の各行にコメントするのではなく、領域をブロックとしてコメントしたいと考えています。私の意見では、コメントセクションが読みやすくなります。
前:
「コメント領域」の後:
望ましい後:
JavaScript や Java などの中かっこ言語では、コメント領域は各行にコメントを付けますが、これは問題ないと思います。1 行のコメント プレフィックスを使用しているため、//
次の内容が読みやすくなっています。XMLの場合は、別のものにしたいと思います。
編集:
C モードの同様の質問に関する Trey の古い回答を見たところです: Cモードの Emacs コメントnewcomment.el
領域
これは有望に見えますが、nxml-mode で完全にソートされているわけではありません。たとえばbox-multi
、スタイルとして試してみたところ、コメント部分はよさそうに見えましたC-u comment-region
が、追加されたものが反転しませんでした。:/ スタイルも同様box
です。もう少しいじってみます。
編集#2
Alex Ott のおかげで、私が使用したコードは次のとおりです。
(defun dino-xml-comment-region (beg end &optional arg)
(interactive "*r\nP")
(if (> beg end)
(let (tmp) (setq tmp beg beg end end tmp)))
(save-excursion
(save-restriction
(narrow-to-region beg end)
(goto-char (point-min))
(cond
;; is there a C-u prefix?
((and (listp arg) (> (length arg) 0))
(and (re-search-forward "<!-- *[\n\r]" nil t)
(goto-char (- (point-max) 1))
(re-search-backward " *-->" nil t)
(goto-char (point-min))
(progn
(re-search-forward "<!-- *[\n\r]" nil t)
(replace-match "")
(goto-char (- (point-max) 1))
(re-search-backward "[\n\r] *-->" nil t)
(replace-match ""))))
(t
(insert "<!--\n")
(goto-char (- (point-max) 1))
(unless (= 10 (following-char))
(forward-char))
(insert "\n-->"))))))
次に、nxml-mode-fn で次のようにしました。
(local-set-key "\C-c\C-c" 'dino-xml-comment-region)
実際の動作:
ただし、注意してください: これは完全にナイーブであり、リージョン内のコメントの開始と終了を「エスケープ」しようとはしません。誰かが上記のコードにそれを追加したいという衝動を感じたら、私はそれを感謝しますが、私自身はこれ以上心配しません.