2010-03-03 4 views
12

emacs에서 javascript로 작업 할 때 js2-mode를 사용하고 있으며 대부분은 매우 유용합니다.Emacs + js2-mode : 들여 쓰기를 완전히 비활성화 하시겠습니까?

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(); 
}); 

을 : jQuery를, 폐쇄 및 JSON 작업을 할 때 그러나, 들여 쓰기 방법, 예를 들면 ...이 같은 들여 쓰기하고자하는 코드 몹시 실망이다

모든 들여 쓰기 "도우미"를 끄고 이맥스를 삽입 할 수있는 방법이 있습니까? N 탭 키를 눌렀을 때 공백이 삽입됩니까? 나는 수동 들여 쓰기가 뒤로 물러나는 것을 안다. 그러나 읽을 수있는 코드를 갖는 것은 IMHO가 예상대로 작동하지 않는 도구보다 유용하다.

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

을 (그러나 더 나은 솔루션은 물론, 모드는 익명 함수에 대해 너무 많은 들여 쓰기를 필요로 생각하는 이유를 찾는 것, 그리고 그것을 해결 : 당신은 단순히 TAB을 결합 할 수

+0

이전 js2 모드에서 문제였습니다. 이 문제는'M-x list-packages'에서 설치할 수있는 최신 GNU ELPA 버전의 js2-mode로 사라졌습니다. 그 버전으로, 한 지역의 C-M- \ 또는 TAB은 당신이 기대하는 방식으로 Lisp과 같은 방식으로 라인을 들여 써야합니다. –

답변

5

을; espresso-mode은 Emacs에 포함되어 있으며 Emacs에서 실행되는 Javascript 모드 대신 Emacs 용 Javascript 모드로 설계되었습니다. 규칙적인 프로그래밍 모드와 같이 작동하며 원하는 방식으로 들여 쓰기를 수행합니다.

+0

저는 emacs 22를 사용하고 있습니다 만, 최근에는 에스프레소 모드를 추가하여 기본값보다 * 많이 * 우수합니다. 감사! –

+2

@AntonJ 링크 (http://mihai.bazon.net/projects/editing-javascript-with-emacs-js2-mode)를 사용할 수있을 때 js2 모드의 멋진 기능을 버릴 가치가 있다고 생각하지 않습니다.) 두 세계의 장점을 얻으십시오. 나는 그것을 사용하고있어 아무런 후회도하지 않았습니다. –

1

자체를 삽입 .)

2

js2-mode는 "bounce"들여 쓰기를 지원합니다. 당신은 다른 가능성 들여 쓰기 수준을 선택하는 여러 번 탭을 누를 수 있습니다, 그래서 당신은 당신이 그런 식으로 원하는 효과를 얻을 수 있습니다 내가이 대신 주석의 전체 대답 할 것 같아요

(setq js2-bounce-indent-p t) 
+0

이미 이것을 시도했지만 사용 된 알고리즘은 들여 쓰기를 올바르게 수행하지 못합니다. 그래도 고마워! –

4

체크 아웃이 솔루션, 부분적으로 esresso 모드에서 (지금 JS 모드로 알려진 이맥스 23.2 및 최신 포함) 들여 쓰기를 사용하는 JS2 모드에서 들여 쓰기 기능을 매핑합니다 : 그것은 수정 밖으로 거기처럼 보이는

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

이맥스에서 들여 쓰기가 예상되는대로 정확하게 작동하며 js2 모드에서 파싱 awesomeness를 얻습니다.

6

질문에 대한 직접적인 대답은 아니지만, 들여 쓰기가 개선 된 here is a forkjs2-mode입니다.

개선 사항 중 하나는 예제 코드가 여기에서 묻는 방식으로 들여 쓰기되어 있다는 것입니다.

+0

이제 포크의 많은 개선 사항이 원래의 js2 모드로 다시 가져 왔으며 ELPA 버전에도 모든 개선 사항이 있습니다. –

+0

더 정확하게 말하자면 "fork"와 ELPA는 같은 버전이고 공식 페이지는 뒤쳐져 있습니다. – Dmitry

1

다른 대안은 js3-mode입니다. 기본적으로 들여 쓰기가 있지만 원하는대로 조정할 수있는 옵션이있는 것 같습니다.

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