13

私は、emacs で JavaScript を操作するために js2-mode を使用していますが、ほとんどの場合、非常に便利です。ただし、jQuery、クロージャー、および JSON を操作する場合、インデント メソッドは非常にイライラします。たとえば、次のようにインデントしたいコードです。

var foo = jQuery('#mycontainer ul li').each(function(el){
    var bar = el.html();
});

次のようになります。

var foo = jQuery('#mycontainer ul li').each(function(el){
                                          var bar = el.html();
                                       });

タブキーを押したときに、すべてのインデント「ヘルパー」をオフにして、emacsにN 個のスペースを挿入させる方法はありますか? 手動のインデントは一歩後退していることは知っていますが、読みやすいコードを持つことは、期待どおりに機能しないツールよりも便利です。

4

7 に答える 7

7

あなたの質問に対する直接的な回答ではありませんが、インデントが改善されたフォークがあります。js2-mode

改善点の 1 つは、ここで質問したようにサンプル コードがインデントされていることです。

于 2011-02-13T17:39:52.810 に答える
6

これをコメントではなく完全な回答にすると思います。espresso-modeは Emacs に含まれており、Emacs の Javascript モードとして設計されています (Emacs 内で実行される Javascript モードではありません)。通常のプログラミング モードと同じように機能し、好きなようにインデントすることもできます。

于 2010-03-04T23:12:57.143 に答える
5

このソリューションを確認してください。js2-mode のインデント関数をマップして、esresso-mode のインデントを部分的に使用します (現在、emacs 23.2 以降に含まれる js-mode として知られています)。

http://mihai.bazon.net/projects/editing-javascript-with-emacs-js2-mode

emacs のインデントが機能することを期待するのとまったく同じように機能し、js2-mode からの解析の素晴らしさを引き続き得ることができます。

于 2010-10-02T08:40:02.827 に答える
4

新しいバージョンのjs2-modeを試しましたか?修正があるようです:http ://code.google.com/p/js2-mode/issues/detail?id = 94

于 2010-03-05T10:08:26.800 に答える
3

js2-modeは「バウンス」インデントをサポートします。Tabキーを複数回押して、インデントの可能性のあるさまざまなレベルを選択できるため、その方法で目的の効果を得ることができる場合があります。

(setq js2-bounce-indent-p t)
于 2010-03-03T16:53:34.120 に答える
1

TAB をバインドして、それ自体を挿入するだけです。

(add-hook 'js2-mode-hook 'my-js2-mode-hook)
(defun my-js2-mode-hook ()
  (define-key js2-mode-map [tab] 'self-insert-command))

(しかし、より良い解決策は、もちろん、無名関数に多くのインデントが必要であるとモードが考える理由を見つけて修正することです。)

于 2010-03-03T11:55:04.713 に答える
1

もう 1 つの代替手段はjs3-mode です。デフォルトではこのようにインデントされていますが、好みに合わせて微調整できるオプションがいくつかあるようです。

var foo = jQuery('#mycontainer ul li').each(function(el){
            var bar = el.html();
          });
于 2012-06-21T08:30:22.463 に答える