インデントの状態を一発で切り替えるelisp

プログラミングにおいて、その職場、及びプログラムのコーディング規約に従うのは当然の話である。

昨今では、インデントにはスペース4つが当然になりつつある。
(もちろんそうでない場合も多々あるが、特にPHPでは、顕著だ。
それに習い、自分のプログラムにおいても、スペース4つで対応している。

しかし、時たま、職場や預かったプログラムで、インデントにタブを要求される場合がある。
indent-tabs-modeという変数を切りかることによって、スペースとタブを切り替えるのだが、
正直この作業を頻繁にやりたくない。

また、インデントにタブとスペースが混ざるソースなど醜悪この上ない。

ので、関数一発でスペース←→インデントができる関数を作ったので、晒しておく。

(defun toggle-indent()
  (interactive)
  (let ( ( tabs-mode indent-tabs-mode ) )
    (if tabs-mode 
		(progn (setq indent-tabs-mode nil) 
			   (progn (save-excursion 
						(goto-char (point-min)) (replace-string "	"  "    " )))
			   (message "インデントはスペースになりました。" ) )
      ( progn (setq indent-tabs-mode t ) 
			  (progn (save-excursion
					   (goto-char (point-min)) (replace-string "    "  "	" ) 
					   (message "インデントはタブになりました。")))))))

M-x toggle-indent
を呼べば、そのバッファ中にある全てのスペース4つがタブになったり、タブがスペース4つになったりする。

とりあえずこれで解決。