4

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

例如:

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

现在,很难将所有内容都包装到左侧,并且在函数声明之后或按 Tab 键时不会自动缩进来响应。

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

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

4

3 回答 3

6

只是为了记录。每当发生这种情况时,选择整个缓冲区 C-x h 并按 C-M-\ 缩进整个区域。这将明确显示语法错误。

于 2012-10-15T21:11:22.803 回答
1

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

于 2012-10-15T20:20:52.293 回答
0

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

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

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

后来平衡的事实无济于事。我认为 EMACS 将其读作打开一个新的表达式/块,尽管它出现在带引号的字符串中。这似乎也适用于表达式开启器{[. 它似乎只在“开放式表达式”符号出现在行首时才会发生......

在我的情况下,字符串是绘图标签的一部分,因此解决方案是\n改用。

于 2013-09-25T23:54:06.363 回答