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 пробелов, когда я нажимаю клавишу вкладки? Я знаю, что ручной отступ - это шаг назад, но с читаемым кодом, ИМХО, более полезен, чем инструмент, который не работает должным образом.
Ответы
Ответ 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-режима.
Ответ 4
Вы пробовали новые версии js2-mode? Похоже, есть исправление: http://code.google.com/p/js2-mode/issues/detail?id=94
Ответ 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();
});