I use CUA-mode and tab indents a region.  I miss this functionality in ESS.
 This could be easily added with the following change to
ess-indent-or-complete

(defun ess-indent-or-complete ()
  "Try to indent first, if code is already properly indented, complete
instead.
It calls `comint-dynamic-complete' for emacs < 24 and `completion-at-point'
otherwise.

In ess-mode, only tries completion if `ess-tab-complete-in-script' is
non-nil.
See also `ess-first-tab-never-complete'.

When `cua-mode' is enabled, this command also indents the region, when a
region is active."
  (interactive)
  (if (and (boundp 'cua-mode) cua-mode (mark))
      (progn
        (indent-region (min (point) (mark)) (max (point) (mark))))
      (let ((shift (ess-indent-command)))
        (when (and ess-tab-complete-in-script
                   (numberp shift) ;; can be nil if ess-tab-always-indent
is nil
                   (equal shift 0)
                   (or (eq last-command 'ess-indent-or-complete)
                       (null ess-first-tab-never-complete)
                       (and (eq ess-first-tab-never-complete 'unless-eol)
                            (looking-at "\\s-*$"))
                       (and (eq ess-first-tab-never-complete 'symbol)
                            (not (looking-at "\\w\\|\\s_")))
                       (and (eq ess-first-tab-never-complete
'symbol-or-paren)
                            (not (looking-at "\\w\\|\\s_\\|\\s)")))
                       (and (eq ess-first-tab-never-complete
'symbol-or-paren-or-punct)
                            (not (looking-at "\\w\\|\\s_\\|\\s)\\|\\s.")))
                       ))
          (if (and (featurep 'emacs) (>= emacs-major-version 24))
              (completion-at-point)
            (comint-dynamic-complete)
            )))))

You could add this functionality to ESS in general, but i'm unsure what
customization variables you would like to include.

	[[alternative HTML version deleted]]

