[ESS] Indentation level

Vincent Goulet Vincent.Goulet at act.ulaval.ca
Tue May 18 00:00:14 CEST 2010


Le lun. 17 mai à 04:38, Martin Maechler a écrit :

>>>>>> David Scott <d.scott at auckland.ac.nz>
>>>>>>   on Wed, 12 May 2010 21:58:51 +1200 writes:
> 
>> David Scott wrote:
>>> David Scott wrote:
>>>> Martin Maechler wrote:
>>>>> On Tue, May 11, 2010 at 16:32, Rodney Sparapani <rsparapa at mcw.edu> wrote:
>>>>> 
>>>>>> On 05/11/10 09:11 AM, gerald.jean at dgag.ca wrote:
>>>>>> 
>>>>>> for me the default is 4 as well and setting it in whatever fashion has not
>>>>>> effect on the local buffer.
>>>>>>> 
>>>>>> ess-indent-level is a variable defined in `ess-custom.el'.
>>>>>> Its value is 4
>>>>>> Local in buffer DataPrep.q; global value is 2
>>>>>>> 
>>>>>> I setted it as recommanded by Rich and yes, I restarted Emacs.
>>>>>>> 
>>>>>> Gérald Jean
>>>>>>> 
>>>>>>> 
>>>>>> Hi Gerald:
>>>>>> 
>>>>>> But the sources say 2 and that is what I see as well.  AFAICT, it
>>>>>> hasn't changed recently either.  Is everybody running 5.8?
>>>>>> 
>>>>> Yes, the default is definitely 2 and has always been so.
>>>>> As R-core, we've set "our default" to 4, and indeed I have been preferring
>>>>> that myself;
>>>>> but nonetheless, the ESS default has always been 2.
>>>>> 
>>>>> One way to set it to 4 and change other things as well, is using
>>>>> what we have had in the "R Internals" (and previously "R Extensions") manual
>>>>> for many years;
>>>>> e.g. from the Swiss (CH) CRAN mirror:
>>>>> 
>>>>> http://stat.ethz.ch/CRAN/doc/manuals/R-ints.html#R-coding-standards
>>>>> (about one page down):
>>>>> 
>>>>> ;;; ESS
>>>>> (add-hook 'ess-mode-hook
>>>>> (lambda ()
>>>>> (ess-set-style 'C++ 'quiet)
>>>>> ;; Because
>>>>> ;;                                 DEF GNU BSD K&R C++
>>>>> ;; ess-indent-level                  2   2   8   5   4
>>>>> ;; ess-continued-statement-offset    2   2   8   5   4
>>>>> ;; ess-brace-offset                  0   0  -8  -5  -4
>>>>> ;; ess-arg-function-offset           2   4   0   0   0
>>>>> ;; ess-expression-offset             4   2   8   5   4
>>>>> ;; ess-else-offset                   0   0   0   0   0
>>>>> ;; ess-close-brace-offset            0   0   0   0
>>>>> 0
>>>>> 
>>>>> [.... other recommendatinos omitted here ...]
>>>>> 
>>>>> and as others have said repeatedly on this thread:
>>>>> Yes, you should and I think *must* set this via adding to the ess-mode-hook
>>>>> BTW: In the above Emacs code, most are comments showing you the diverse
>>>>> style settings,
>>>>> mentioning indeed that the default ("DEF") is at 2.
>>>>> 
>>>>> Martin Maechler, ETH Zurich
>>>>> 
>>>> OK. I finally got this to work, simple really, only took a few hours of 
>>>> messing about. Changed C++ to DEF in Martin's code above:
>>>> 
>>>> ;;; ESS
>>>> (add-hook 'ess-mode-hook
>>>> (lambda ()
>>>> (ess-set-style 'DEF 'quiet)
>>>> ;; Because
>>>> ;;                                 DEF GNU BSD K&R C++
>>>> ;; ess-indent-level                  2   2   8   5   4
>>>> ;; ess-continued-statement-offset    2   2   8   5   4
>>>> ;; ess-brace-offset                  0   0  -8  -5  -4
>>>> ;; ess-arg-function-offset           2   4   0   0   0
>>>> ;; ess-expression-offset             4   2   8   5   4
>>>> ;; ess-else-offset                   0   0   0   0   0
>>>> ;; ess-close-brace-offset            0   0   0   0   0
>>>> (add-hook 'local-write-file-hooks
>>>> (lambda ()
>>>> (ess-nuke-trailing-whitespace)))))
>>>> (setq ess-nuke-trailing-whitespace-p 'ask)
>>>> ;; or even
>>>> ;; (setq ess-nuke-trailing-whitespace-p t)
>>>> ;;; Perl
>>>> (add-hook 'perl-mode-hook
>>>> (lambda () (setq perl-indent-level 4)))
>>>> 
>>>> and lo and behold I got the default settings.
>>>> 
>>>> Thanks for all advice. Sorry to be obtuse, I just don't get lisp. Maybe 
>>>> it all stems from my Computer Science lecturer telling me lisp is an 
>>>> acronym for lots of irritating silly parentheses ...
>>>> 
>>>> I do love Emacs + ESS + AUCTeX + RefTex though. Brilliant when it is all 
>>>> working, so thanks to all contributors.
>>>> 
>>>> David Scott
>>>> 
>>> Oh dear, wrong again. This is only gave me the indentation I wanted 
>>> because the command gave an error.
>>> 
>>> David Scott
> 
>> Not sure if everyone else is using linux but this is on Windows using 
>> Vince Goulet's emacs-23.1-modified, freshly downloaded and installed. 
>> Currently that uses ESS 5.8. I even had available a Windows 7 machine 
>> with a just installed operating system, no existing .emacs. End result 
>> was I could get none of the suggestions from the list to work. The only 
>> way I got what I wanted was to hack ess-custom.el changing the values in 
>> the C++ entry in ess-default-style-list from 4 to 2 throughout. That is 
>> a pretty disgusting hack I know.
> 
> Yes, indeed ("disgusting").
> 
> I wonder why you seem to need to do that.
> Couldn't it be that *you* set the ess style to C++  rather than
> the default one.
> 
> Vincent, could it be that your emacs+ESS+Auctex+...  setup would
> set that default ?

Sorry if I did not intervene in this thread. I did not realize I could be concerned. Yes, indeed, I set up my Emacs distribution so that the indentation level is 4 by default. From the site-start.el file:

;; Set code indentation following the standard in R sources.
(setq-default c-default-style "bsd")
(setq-default c-basic-offset 4)
(add-hook 'ess-mode-hook
	  '(lambda()
	     (ess-set-style 'C++ 'quiet)
	     (add-hook 'write-file-functions
                          (lambda ()
                            (ess-nuke-trailing-whitespace)))))
(setq ess-nuke-trailing-whitespace-p t)

Should I change anything?

HTH

Vincent


> 
> Martin
> 
>> I am not sure if the problem is something Vince does in preparing his 
>> distribution.
> 
>> David Scott
> 
> 
> 
> 
>> -- 
>> _________________________________________________________________
>> David Scott	Department of Statistics
>> The University of Auckland, PB 92019
>> Auckland 1142,    NEW ZEALAND
>> Phone: +64 9 923 5055, or +64 9 373 7599 ext 85055
>> Email:	d.scott at auckland.ac.nz,  Fax: +64 9 373 7018
> 
>> Director of Consulting, Department of Statistics
> 
>> ______________________________________________
>> ESS-help at stat.math.ethz.ch mailing list
>> https://stat.ethz.ch/mailman/listinfo/ess-help



More information about the ESS-help mailing list