4

特定のファイル タイプ (およびそれらのファイル タイプのみ) を保存するときに Emacs でタブ化を解除することに基づいて、バッファーの変更を開始するときに C++ ファイルをタブ化解除するフックを実行したいと思います。ロード時にバッファを非タブ化するフックを追加しようとしましたが、emacs の起動時に自動ロードされるすべての書き込み可能なファイルが非タブ化されます。

(なぜ私がこれを行っているのか不思議に思われる方のために説明すると、それは、私が働いている場所で、ファイル内でのタブの使用が義務付けられているためです。私は喜んでこれに準拠しています。問題は、行が多すぎる場合にファイルをマークアップすることです。長いですが、正規表現は行が占めるスペースではなく、行の文字数に一致します. 行に 4 つのタブがあると、私の 132 文字の制限をはるかに超える可能性がありますが、行は適切にマークされません. したがって、自動的にタブ化および非タブ化する方法が必要です。)

4

4 に答える 4

4

変数「before-change-functions」を見てください。

おそらく、この行に沿った何か (警告: コードはテストされていません):

(add-hook 'before-change-functions 
          (lambda (&rest args) 
            (if (not (buffer-modified-p))
                (untabify (point-min) (point-max)))))
于 2008-12-11T18:41:43.200 に答える
1

ロード時にタブ化を解除するために、emacs ファイルに追加したものは次のとおりです。

(defun untabify-buffer ()
  "Untabify current buffer"
  (interactive)
  (untabify (point-min) (point-max)))

(defun untabify-hook ()
  (untabify-buffer))

; Add the untabify hook to any modes you want untabified on load
(add-hook 'nxml-mode-hook 'untabify-hook)
于 2008-12-11T18:36:03.337 に答える
0

この答えは接線ですが、役に立つかもしれません。

パッケージ wide-column.elリンク テキストは、カーソルが特定の列を通過するとカーソルの色を変更します。実際、カーソルの色は設定によって異なります。これは、正規表現コードよりも邪魔にならないソリューションのように思えますが、ニーズに合わない場合があります。

于 2008-12-11T18:58:42.900 に答える
0

そして、別の接線的な答え。

あなたの正規表現は、132 文字の制限にいつ到達したかを判断するのに十分ではないと述べました。おそらくより良い正規表現...

この正規表現は、タブ幅が 4 であると仮定すると、132 文字を超える行に一致します (計算は正しかったと思います)。

"^\\(?: \\|[^   \n]\\{4\\}\\)\\{33\\}\\(.+\\)$"

最後の括弧で囲まれた式は、制限を超えている文字のセットです。最初のかっこで囲まれた式はshyです。

于 2008-12-11T19:12:22.700 に答える