(defun indent-region-by-shell-command () "some docu" (interactive) (setq orig-point-pos (point)) (setq my-start-marker (copy-marker (region-beginning))) (setq my-end-marker (copy-marker (region-end))) ; If the region ends on a newline this leaves a newline after ; indention. Increase the end of region by one. (goto-char (marker-position my-end-marker)) (if (eolp) (set-marker my-end-marker (+ 1 (marker-position my-end-marker))) ()) (goto-char (marker-position my-start-marker)) (beginning-of-line) (skip-chars-forward "\t ") (setq braces-needed (/ (current-column) 2)) (beginning-of-line) (setq start-of-braces-pos (point)) (setq num 0) (while (< num braces-needed) (insert "{") (setq num (1+ num))) (insert "\n") (shell-command-on-region start-of-braces-pos (marker-position my-end-marker) ; get rid of 'Unexpected end of file' message "indent -kr -i2 2>&1 | grep -v Unexpected" 1) (goto-char start-of-braces-pos) (while (not (eolp)) (delete-char 1)) (delete-char 1) (goto-char (marker-position my-start-marker)) )