我正在使用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
答案 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)