(require 'simple) (defun indent-shift-left (start end &optional count) (interactive (if mark-active (list (region-beginning) (region-end) current-prefix-arg) (list (line-beginning-position) (line-end-position) current-prefix-arg))) (if count (setq count (prefix-numeric-value count)) (setq count tab-width)) (when (> count 0) (let ((deactivate-mark nil)) (save-excursion (goto-char start) (while (< (point) end) (if (and (< (current-indentation) count) (not (looking-at "[ \t]*$"))) (error "Can't shift all lines enough")) (forward-line)) (indent-rigidly start end (- count)))))) (add-to-list 'debug-ignored-errors "^Can't shift all lines enough") (defun indent-shift-right (start end &optional count) (interactive (if mark-active (list (region-beginning) (region-end) current-prefix-arg) (list (line-beginning-position) (line-end-position) current-prefix-arg))) (let ((deactivate-mark nil)) (if count (setq count (prefix-numeric-value count)) (setq count tab-width)) (indent-rigidly start end count)))