4

私はWindowsでEmacs24を使ってRコードを書いています。約30分前までは、新しい関数を作成するたびに、ESSは関数宣言に続く行を自動的にインデントし、新しい空白行でTabキーを押すと、宣言内の適切にインデントされた開始位置にジャンプしました。

例えば:

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

さて、すべてを左に折り返すのは難しく、関数宣言の後やタブキーを押したときに自動的にインデントすることで応答しません。

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

私はグーグルで検索しましたが、私のグーグルフーはこれで私を失敗させています。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は、引用符で囲まれた文字列で発生するにもかかわらず、これを新しい式/ブロックを開くものとして読み取ると思います。{これは、エクスプレッションオープナーとにも当てはまるよう[です。これは、「openexpression」記号が行の先頭に表示されている場合にのみ発生するようです...

私の場合、文字列はプロットラベルの一部だったので、\n代わりに解決策を使用することでした。

于 2013-09-25T23:54:06.363 に答える