需要不同的obj-c缩进(Emacs)

时间:2013-07-29 02:45:57

标签: objective-c emacs

我正在使用Emacs进行一些obj-c编程,而我在使用默认缩进方案时遇到了很多困难。我不知道足够的列表或emacs lisp来解决这个问题,但希望有人能够帮助我。

以下是我希望代码缩进的示例:

void someFunc() {
    NSBitmapImageRep* repout = [
        [NSBitmapImageRep alloc]
        initWithBitmapDataPlanes: NULL
        pixelsWide: width
        pixelsHigh: height
        bitsPerSample: 8
        samplesPerPixel: 4
        hasAlpha: YES
        isPlanar: NO
        colorSpaceName: NSDeviceRGBColorSpace
        bytesPerRow: width*4
        bitsPerPixel: 32
    ];
}

然而,这就是M-x缩进区域目前所做的,它非常可怕:

void someFunc() {
    NSBitmapImageRep* repout = [
        [NSBitmapImageRep alloc]
                                   initWithBitmapDataPlanes: NULL
                                                 pixelsWide: width
                                                 pixelsHigh: height
                                              bitsPerSample: 8
                                            samplesPerPixel: 4
                                                   hasAlpha: YES
                                                   isPlanar: NO
                                             colorSpaceName: NSDeviceRGBColorSpace
                                                bytesPerRow: width*4
                                               bitsPerPixel: 32
        ];
}

我不太关心在冒号上排队的事情,因为我让他们排在第一个字母上。此外,它明显地缩小了参数列表的方式。最后,它将结束“];”一个缩进级别太深。

非常感谢任何可能发布回复的emacs配置黑客。

-Patrick

1 个答案:

答案 0 :(得分:0)

您可以通过调用c-set-offset来更改不同语法元素的缩进。如果您以交互方式调用它,emacs会告诉您要更改的“缩进变量”的值,并会询问您的值。

以编程方式,这会在您提到的示例中做一些接近您想要的事情,但是您可能有许多其他用例需要其他行为:

(c-set-offset 'arglist-intro '+)
(c-set-offset 'arglist-close 0)
(c-set-offset 'objc-method-call-cont 'c-lineup-argcont)