I\'ve been unsuccessful in getting Emacs to switch from 8 space tabs to 4 space tabs when pressing the TAB in buffers with the major mode text-mode.
Update: Since Emacs 24.4:
tab-stop-listis now implicitly extended to infinity. Its default value is changed tonilwhich means a tab stop everytab-widthcolumns.
which means that there's no longer any need to be setting tab-stop-list in the way shown below, as you can keep it set to nil.
Original answer follows...
It always pains me slightly seeing things like (setq tab-stop-list 4 8 12 ................) when the number-sequence function is sitting there waiting to be used.
(setq tab-stop-list (number-sequence 4 200 4))
or
(defun my-generate-tab-stops (&optional width max)
"Return a sequence suitable for `tab-stop-list'."
(let* ((max-column (or max 200))
(tab-width (or width tab-width))
(count (/ max-column tab-width)))
(number-sequence tab-width (* tab-width count) tab-width)))
(setq tab-width 4)
(setq tab-stop-list (my-generate-tab-stops))