Emacs ESS模式TAB键无法缩进问题

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
}

我已经谷歌搜索过了,但是我的谷歌技巧在这方面很失败。有人知道如何将 Emacs 中 ESS 的默认选项卡行为恢复到默认状态吗?

3个回答

6

仅供记录。每当出现这样的情况时,选择整个缓冲区 C-x h ,然后按下 C-M-\\ ,以使整个区域缩进。这将明确显示语法错误。


1
尝试在"#"后面添加一个空格。我认为,除非你在它后面加上空格,否则ESS-mode不会将#作为注释处理。

它不仅仅是针对注释,也针对代码进行操作。我会更新以反映这一点。 - FloppyDisk
抱歉打扰,不过我猜您是否已经在R中对该文件运行了“source”以检查语法是否正确? - Storstamp
好吧,现在我感觉真的很蠢。我在文件中确实有语法错误,但完全没有注意到。谢谢你的耐心和建议! - FloppyDisk
1
通常情况下,当你认为ESS搞砸了你的时候,你可能忘记了(例如)函数的开括号。这种情况经常发生在我身上,但我不太愿意承认。 - richiemorrisroe

0

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

上述方法似乎都不起作用,但我将其缩小到在字符串内使用回车然后是一个开放括号,就像这样:

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

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接