Hi Martin and All, thanks for your reply, please see my comments inline below:
On Thu, Dec 08, 2016 at 09:09:10AM +0100, Martin Maechler wrote: > >>>>> Jan T Kim via ESS-help <ess-help@r-project.org> > >>>>> on Tue, 6 Dec 2016 01:11:20 +0000 writes: > > > Hello All, > > since some time, I get the following indentation behaviour: If I type > > > f <- function(x) > > { > > return(x * x); > > } > > > > this gets indented as > > > > f <- function(x) > > { > > return(x * x); > > } > > > > i.e. the closing curly brace is not vertically aligned with the opening > one. > > What exactly is "if I type" ? > - in an emacs buffer for a foo.R file (i.e. a buffer in R-mode), > right ? yes -- I used a filename ending with ".R", the mode shows as "(ESS[S] [none] ElDoc)". With the "if I type" sample I basically mean to express that the indentation after the opening curly brace is automatically generated, rather than typed by me. > Well, I don't see this > (and I would never use unnecessary ' ; ' nor > unnecessary return(.) .. but that's not really relevant here) > > Specifically, after typing [Enter] at the end of the line > return(x * x); > of course the cursor on the next line is below the first letter > 'r' of 'return'; yes, that's what I get as well... > but then if you type "}" and [Enter] or [Tab] then it alings > correctly. > > Don't you see that? ... but no, that "electric" alignment of the closing curly brace is not what I get. The brace doesn't move to the left, it appears below the "r" of "return" and stays there. > If yes, how could ESS behave any better? The behaviour you describe is what I would like. As some additional detail about the system, this is a newly installed Ubuntu 16.04.1 LTS (Xenial Xerus), and the ESS package is ii ess 16.10-1xenia all Emacs mode for statistical ... Best regards, Jan > > If I then go on and indent the buffer (C-x h C-M-\), the indentation is > > updated to > > > > f <- function(x) > > { > > return(x * x); > > } > > > so the opening and closing curly braces are now vertically aligned. > > > This behaviour started several months ago. Reviewing the change logs, > > I speculate that upgrading (via Ubuntu package manager) to a package > > providing 15.09, where "the indentation logic has been refactored", > > may be the cause of the change, but as I've done little R coding for > > a while I can't really pinpoint this. > > > I recently got a new computer at work and used that opportunity to > > check that the behaviour occurs with a new account, i.e. without any > > ~/.emacs file. > > > After some code delving and hacking I've managed to adjust the electric > > curly braces by adding this to my .emacs: > > > (defun jtk-ess-electric-brace (arg) > > "modified / extended ess-electric-brace" > > (interactive "P") > > (progn > > ; (message "modified ess-electric-brace running") > > (ess-electric-brace arg) > > (ess-indent-command) > > ) > > ) > > > > (defun jtk-ess-mode-hook () > > (progn > > (local-set-key (kbd "{") 'jtk-ess-electric-brace) > > (local-set-key (kbd "}") 'jtk-ess-electric-brace) > > ) > > ) > > > So essentially I have the brace indented immediately after inserting > > it via the original ess-electric-brace command. However, this solution > > is not 100% perfect as the indentation of closing braces occurs only > > after some delay caused by briefly flashing the cursor at the > corresponding > > opening brace. > > > Quite possibly I'm using a clumsy approach to try to get indentation > during > > typing consistent with that produced by indent-region, so suggestions > where > > I may have messed up are welcome. > > > Best regards & thanks in advance for any pointers, Jan > > -- > > +- Jan T. Kim -------------------------------------------------------+ > > | email: jtt...@gmail.com | > > | WWW: http://www.jtkim.dreamhosters.com/ | > > *-----=< hierarchical systems are for files, not for humans >=-----* > > > ______________________________________________ > > ESS-help@r-project.org mailing list > > https://stat.ethz.ch/mailman/listinfo/ess-help ______________________________________________ ESS-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/ess-help