Instead of the position `(region-beginning)` use the position of the beginning of the same line: (save-excursion (goto-char (region-beginning)) (line-beginning-position)) For example: <!-- language: lang-el --> (defun shift-region (distance) (let ((mark (mark)) (beg (save-excursion (goto-char (region-beginning)) (line-beginning-position))) (end (region-end))) (indent-rigidly beg end distance) (push-mark mark t t) (setq deactivate-mark nil))))