Emacs ESS Mode TAB停止缩进

时间:2012-10-15 20:13:51

标签: r emacs elisp ess

我在Windows上使用Emacs 24来编写一些R代码。直到大约30分钟前,每当我写一个新函数时,ESS会自动缩进函数声明后的行,并按下新空行上的tab键会将我跳转到声明中适当缩进的起始位置。

EG:

foo <- function() {
    first line started here
    second line here.  .etc
}

现在,很难将所有内容包装到左侧,并且在函数声明之后或当我点击Tab键时不会自动缩进。

foo <- function() {
first line
second line
}

我用Google搜索了,但我的google-fu让我失望了。任何人都知道如何在Emacs中将默认选项卡行为恢复到ESS?

3 个答案:

答案 0 :(得分:6)

仅供记录。每当发生这种情况时,选择整个缓冲区 C-x h 并按 C-M- \ 缩进整个区域。这将毫不含糊地显示语法错误。

答案 1 :(得分:1)

尝试在“#”后面添加一个空格。 我不认为ESS模式会将#作为注释处理,除非你之后有空格。

答案 2 :(得分:0)

我刚刚遇到了你描述的同样问题。

上述所有内容似乎都不起作用,但我将其缩小为使用回车符然后在字符串中使用左括号,如下所示:

### indent ( <tab> ) working fine up to here 
   s1 <- "string
(then this in brackets)"
### now indent does nothing!

之后平衡的事实并没有帮助。我认为EMACS将其视为打开一个新的表达式/块,尽管它出现在带引号的字符串中。这似乎也适用于表达式开头{[。只有当“开放表达”符号出现在行的开头时才会发生......

在我的情况下,字符串是情节标签的一部分,因此解决方案是使用\n代替。