Emacs + js2-mode: полностью отключить отступ? - PullRequest
12 голосов
/ 03 марта 2010

Я использую js2-режим для работы с javascript в emacs, и по большей части это очень полезно. Однако методы работы с отступами ужасно расстраивают при работе с 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 пробелов при нажатии клавиши табуляции? Я знаю, что ручное отступление - это шаг назад, но наличие читаемого кода, IMHO, более полезно, чем инструмент, который не работает должным образом.

Ответы [ 7 ]

6 голосов
/ 13 февраля 2011

Не прямой ответ на ваш вопрос, но - это вилка из js2-mode с улучшенным отступом.

Одним из улучшений является то, что ваш пример кода имеет отступ, как вы спрашиваете здесь.

5 голосов
/ 05 марта 2010

Полагаю, я сделаю это полным ответом вместо комментария; espresso-mode включено в Emacs и предназначено для режима Javascript для Emacs (вместо режима Javascript, который работает внутри Emacs). Он работает как обычные режимы программирования, а также с такими отступами, которые вам нравятся.

4 голосов
/ 02 октября 2010

Проверьте это решение, отображает функцию отступа в режиме js2 для частичного использования отступа из режима esresso (теперь известный как режим js, включенный в emacs 23.2 и новее):

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

Работает точно так, как я ожидаю, что отступы в emacs будут работать, и вы по-прежнему получаете удивительный анализ в js2-mode.

3 голосов
/ 05 марта 2010

Вы пробовали новые версии js2-mode? Похоже, есть исправление: http://code.google.com/p/js2-mode/issues/detail?id=94

2 голосов
/ 03 марта 2010

js2-mode поддерживает отступ "bounce"; Вы можете нажимать клавишу Tab несколько раз, чтобы выбрать разные вероятные уровни отступов, чтобы вы могли получить желаемый эффект следующим образом:

(setq js2-bounce-indent-p t)
1 голос
/ 21 июня 2012

Еще одна альтернатива - js3-mode . По умолчанию он имеет такие отступы, но, похоже, есть некоторые опции, которые могут позволить вам настроить его по своему вкусу.

var foo = jQuery('#mycontainer ul li').each(function(el){
            var bar = el.html();
          });
1 голос
/ 03 марта 2010

Вы можете просто связать TAB, чтобы вставить себя:

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

(Но лучшим решением, конечно, было бы выяснить, почему режим считает, что для анонимных функций требуется так много отступов, и исправить это.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...