2011-05-05 8 views
8

すべてのタブを4つのスペースにしたい。私は.emacsメジャーモードに関係なく、タブの代わりにスペースを入れるには?

(setq-default indent-tabs-mode nil) 
(setq c-basic-indent 4) 
(setq tab-width 4) 

に次のように持っているが、これは私が使用できるメジャーモードのテーマの一部によって上書きされます。私の.emacsファイルでこの問題を強制する方法はありますか?

+2

本当にこれが欲しいですか?一部のファイル形式(メイクファイルなど)では、正しく動作するためのタブが必要です。 –

+0

それでも 'C-q TAB 'を使ってリテラルタブを挿入することができます。 – sjas

答えて

5

任意のメジャーモードが上書き何でも上書きするために、これを試してみてください:

(add-hook 'after-change-major-mode-hook 
      '(lambda() 
      (setq-default indent-tabs-mode nil) 
      (setq c-basic-indent 4) 
      (setq tab-width 4))) 

c-modeに基づいていないことのメジャーモードを約c-basic-indentを気にする可能性はなく、潜在的に自分自身、モード固有の使用かもしれませんインデント変数。そのような場合、これらの変数を手動で設定する方法はありません。

0

私はこの問題を特に醜いハックで "解決"しました。むしろ場所で右のメジャーモードのフックを取得する方法を見つけ出すことを試みるよりも、私は次のようでした:

(defun save-buffer-without-tabs() 
    (interactive) 
    (untabify (point-min) (point-max)) 
    (save-buffer)) 
(global-set-key "\C-x\C-s" 'save-buffer-without-tabs) 

これは恐ろしくいくつかのものを壊し(私は気にしていること、それらのものは、PythonとのMakefileです)。このように、私はまた、次のようでした:

;; restore the original save function for makefiles 
(add-hook 'makefile-mode-hook 
    (lambda() 
    (define-key makefile-mode-map "\C-x\C-s" 'save-buffer))) 

;; restore the original save function for python files 
(add-hook 'python-mode-hook 
    (lambda() (define-key python-mode-map "\C-x\C-s" 'save-buffer))) 

私はトーマスが言及after-change-major-mode-hookを認識しませんでしたが、彼の解決策は、何らかの理由であなたのために動作しない場合、私はいくつかのためにこれを使用してきました今何年も事故なく。

:詳細を確認すると、私が答えた質問を正確に聞いているとは思われません。私はすべてのタブをnukingは一貫性のあるインデントを取得する1つの方法だと思います。 :)

2

特定のスタイルパラメータを宣言するのではなく、デフォルトのC indentation styleを宣言します。

(setq c-default-style "k&r2") ;; or whatever your preference is 
(set-default 'indent-tabs-mode nil) 
関連する問題