Подтвердить что ты не робот

Emacs + js2-mode: отключить отступ полностью?

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

Ответ 3

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

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

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

Ответ 5

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

(setq js2-bounce-indent-p t)

Ответ 6

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

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

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

Ответ 7

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

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