2009-10-01 66 views
0

联定义我使用的actionscript-mode-connors.el功能。Emacs的ActionScript 3的缩进在emacs的缩进ActionScript 3代码在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)) 

其中那些标号指代‘some_function’线。 'arglist-cont-nonempty'看起来像是一个错误,它看起来应该是'arglist-cont',因为在该行的open paren之后没有任何东西。我无法更改'arglist-cont-nonempty'的缩进,因为这会影响open paren不会结束'some_function'的行。

我该如何解决这个问题?

回答

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();线是:((brace-list-intro 319))

看起来您的预感是正确的(即arglist-cont-nonempty列表是问题),并且更改'c-guess-basic-syntax的输出似乎是一个可行的解决方案。

可我也指出明显的测试?你是否开始没有任何自定义和加载只是行动脚本?我使用最新的动作脚本和Emacs 23.1来完成,并获得了您在上面看到的结果。测试了M-x c-version表示既5.31.35.31.7(以后被分配使用Emacs 32.1)。

+0

我曾经尝试这样做没有任何自定义。但也许有一个更好的动作模式,我应该使用。你正在使用哪个actionscript-mode.el?似乎有很多左右浮动,我已经尝试了几个到目前为止但也不是很大。 – lacker 2009-10-01 20:34:03

+0

我用你的问题提供了一个(我不知道动作-3在所有)。 – 2009-10-01 20:59:21

+0

ActionScript == JavaScript – jrockway 2009-10-01 21:02:12

2

我会用espresso-mode为ActionScript。它会正确缩进您的示例。

+0

特浓咖啡模式确实缩进,它没有做尽可能多的语法突出显示,你可以h,例如成员函数声明。 – lacker 2009-10-01 21:15:44