我正在使用Emacs编辑我的Objective-C代码。默认缩进如下所示:
NSTimer *timer =
[NSTimer timerWithTimeInterval:1.0
target:self
selector:@selector(callback:)
userInfo:nil
repeats:YES];
我希望Emacs像XCode一样缩进代码,即与冒号对齐:
NSTimer *timer =
[NSTimer timerWithTimeInterval:1.0
target:self
selector:@selector(callback:)
userInfo:nil
repeats:YES];
有没有希望实现这个目标?
答案 0 :(得分:6)
我已经对此进行了一些攻击并且已经接近了,但它还没有完全正常运行。我的解决方案是向align-rules-list
添加一个条目,这样一个简单的M-x align
就可以了。问题是您必须运行align
两次才能使其正常工作。
(obj-c-colons
(regexp . "^\\(\\s-*[^:]+\\):")
(justify . t)
(repeat . t)
(modes obj-c-mode)) ;; <= Replace with actual name of major mode
我实际上并不知道objective-c模式的名称是什么,所以你必须用实际调用的模式替换obj-c-mode
。您可以使用以下内容将其添加到align-rules-list
(add-to-list 'align-rules-list
'(obj-c-colons
(regexp . "^\\(\\s-*[^:]+\\):")
(justify . t)
(repeat . t)
(modes obj-c-mode)))
目前,您必须执行align
两次;第一次只会排列如下:
NSTimer *timer =
[NSTimer timerWithTimeInterval:1.0
target:self
selector:@selector(callback:)
userInfo:nil
repeats:YES];
请注意,冒号是左侧两个字符。第二个align
将纠正此问题。不要问我为什么。
align
命令有很多内容,所以搞清楚是很困难的。希望有人想出一个改进的方法。无论如何,请查看relevant EmacsWiki页面以获取有关对齐的更多信息。
答案 1 :(得分:6)
在c-offsets-alist中,ob -c-method-call-cont的c-lineup-ObjC-method-call-colons是否有问题?
答案 2 :(得分:0)