indent-жестко (привязанный к C-x TAB) делает то, что вы хотите. Он находится в indent.el, который должен быть частью стандартного дистрибутива emacs.
Кроме того, чтобы заставить его жаловаться / прерывать, когда где-то недостаточно пробелов, вы можете сделать что-то вроде этого: (быстрый уродливый взлом исходного кода с жестким отступом)
(defun enough-whitespace-to-indent-p (start end arg)
(save-excursion
(goto-char end)
(setq end (point-marker))
(goto-char start)
(or (bolp) (forward-line 1))
(while (and (< (point) end)
(>= (+ (current-indentation) arg) 0))
(forward-line 1))
(>= (point) end)))
(defun indent-rigidly-and-be-picky (start end arg)
(interactive "r\np")
(if (or (plusp arg) (enough-whitespace-to-indent-p start end arg))
(indent-rigidly start end arg)
(message "Not enough whitespace to unindent!")))