Emacs ESS Mode - Tabbing for Comment Region

REmacsEss

R Problem Overview


I am using the Emacs-Speaks-Statistics (ESS) mode for Emacs. When editing R code, any comment lines (those starting with #) automatically get tabbed to the far right when I create a new line above it. How should I change my .emacs.el file to fix this?

For example, I have:

# Comment

Now, after putting my cursor at the beginning of the line and pressing Enter, I get:

                                # Comment

Thanks for any hints.

R Solutions


Solution 1 - R

Use '###' if you don't want the comments indented. According to the manual,

> By default, comments beginning with > ‘###’ are aligned to the beginning of > the line. Comments beginning with ‘##’ > are aligned to the current level of > indentation for the block containing > the comment. Finally, comments > beginning with ‘#’ are aligned to a > column on the right (the 40th column > by default, but this value is > controlled by the variable > comment-column,) or just after the > expression on the line containing the > comment if it extends beyond the > indentation column.

Solution 2 - R

Either

(setq ess-fancy-comments nil)

if you never want to indent single-# comments, or

(add-hook 'ess-mode-hook 
          (lambda () 
            (local-set-key (kbd "RET") 'newline)))

if you want to change the behavior of Enter so it doesn't indent.

Solution 3 - R

Setting ess-indent-with-fancy-comments to nil will remove the weird single-# indentation, but it must be set either buffer-locally in a hook (as in Rob's answer), OR before ESS is loaded:

(setq ess-indent-with-fancy-comments nil)
(require 'ess)

Other ways to make sure it is set before ESS is loaded, is to set it in M-x configure, or to set it in the :init section of use-package.

What's going on is that ESS defines styles at initialization in ess-style-alist, and then applies the default style in every buffer. So to make sure these styles respect ess-indent-with-fancy-comment, you must make sure to set it before the styles are defined.

Solution 4 - R

Jouni's answer didn't work for me. But I found an approach here that does: https://stat.ethz.ch/pipermail/ess-help/2016-May/010970.html

   (defun my-ess-settings ()
     (setq ess-indent-with-fancy-comments nil))
   (add-hook 'ess-mode-hook #'my-ess-settings)

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionChristopher DuBoisView Question on Stackoverflow
Solution 1 - RhuaiyuanView Answer on Stackoverflow
Solution 2 - RJouni K. SeppänenView Answer on Stackoverflow
Solution 3 - RjackkammView Answer on Stackoverflow
Solution 4 - RRob DonnellyView Answer on Stackoverflow