2009-10-01 2 views
0

나는 이맥스에서 Actionscript 3 코드를 들여 쓰는 데 actionscript-mode-connors.el을 사용하고 있습니다.Emacs Actionscript arglist에서 인라인으로 정의 된 함수에 대한 들여 쓰기

나는 대부분 알아 낸 것이 있지만 나를 귀찮게하는 것은 인라인 클로저를 함수 인수로 사용하면 함수 내부의 들여 쓰기가 엉망입니다. 예를 들어

는 :

var foo:int = some_function(
    bar, 
    baz, 
    function():void { 
           return qux(); 
          }, 
    zap); 

내가 qux 반환합니다() 이전 라인에 함수 선언에서 하나의 들여 쓰기,하지 열린 괄호에서 하나의 들여 쓰기합니다. '바'의 들여 쓰기가 너무 엉망이 될하는 데 사용하지만 일반적으로 여기

(add-hook 'actionscript-mode-hook 
     (lambda() 
     (c-set-offset 'arglist-intro '+) 
     (c-set-offset 'arglist-close 0))) 

와 내가 변경할 필요 구문 문자를 알아 내기 위해 참조 고사를 사용하는 것이 고정 만의 문제는 'qux 반환() '행은 구문 컨텍스트가

((arglist-cont-nonempty 731 758) (brace-list-intro 731)) 

이고'0 '은'some_function '행을 나타냅니다. 'arglist-cont-nonempty'는 실수로 보입니다. 그리고 그 줄에 열린 괄호 뒤에 아무 것도 없기 때문에 'arglist-cont'여야합니다. 열려있는 paren이 'some_function'줄을 끝내지 않는 경우에도 영향을 줄 수 있으므로 'arglist-cont-nonempty'의 들여 쓰기를 변경할 수 없습니다.

어떻게 해결할 수 있습니까?

답변

1

간접적 인 답변은 어떻습니까? 당신이 C 들여 쓰기 기계에 상대적으로 안락한 것처럼 보입니다. 'c-guess-basic-syntax 주위의 조언을 사용하여 특정 구성을 인식하고 해당 상황에 가장 적합한 것으로 생각되는 것으로 수정할 수 있습니다.

indentation customization for comments에 대한 대답을 살펴보면 나는 들여 쓰기가있을 때만 똑같은 작업을 수행했습니다. 당신의 세부 사항에 대해서는

, 나는 보이는 당신이 같은 실패, (당신이 명 변경 'actionscript-mode에서) 코드의 덩어리 내 들여 쓰기를 재현 할 수없는 같은 : 또한

var foo:int = some_function(
    bar, 
    baz, 
    function():void { 
    return qux(); 
    }, 
    zap); 

return qux(); 라인의 구문 is : ((brace-list-intro 319)).

직감이 정확하고 (arglist-cont-nonempty 목록이 문제 임) 올바른 것으로 보입니다. 'c-guess-basic-syntax의 출력을 변경하면 실행 가능한 솔루션처럼 보입니다.

명백한 테스트를 지적 할 수 있습니까? 사용자 정의없이 시작하고 액션 스크립트 만로드 했습니까? 나는 최신 액션 스크립트와 Emacs 23.1을 사용했고 위의 결과를 얻었다. M-x c-version5.31.35.31.7 (둘 다 Emacs 32.1과 함께 배포 됨)으로 표시된 것으로 테스트되었습니다.

+0

사용자 지정없이이 작업을 시도했습니다. 하지만 아마도 내가 사용해야하는 더 나은 액션 스크립트 모드가있을 것입니다. 어떤 actionscript-mode.el을 사용하고 있습니까? 주변에 떠 다니는 것처럼 보입니다. 나는 지금까지 한 두 가지 시도를 해봤지만 어느 것도 훌륭하지 않습니다. – lacker

+0

질문에서 제공 한 것을 사용했습니다 (나는 액션 스크립트 -3을 전혀 모릅니다). –

+0

ActionScript == JavaScript – jrockway

2

ActionScript에 espresso-mode을 사용합니다. 그것은 당신의 예제를 정확하게 들여 씁니다.

+0

에스프레소 모드는 들여 쓰기를 올바르게 처리합니다. 구문 강조, thoug를하지 않습니다. h, 예 : 멤버 함수 선언 – lacker

관련 문제