我在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?
答案 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
代替。