Mar*_*ote 3 emacs objective-c indentation
我正在使用Emacs来编辑我的Objective-C代码.默认缩进如下所示:
NSTimer *timer =
[NSTimer timerWithTimeInterval:1.0
target:self
selector:@selector(callback:)
userInfo:nil
repeats:YES];
Run Code Online (Sandbox Code Playgroud)
我希望Emacs像XCode一样缩进代码,即与冒号对齐:
NSTimer *timer =
[NSTimer timerWithTimeInterval:1.0
target:self
selector:@selector(callback:)
userInfo:nil
repeats:YES];
Run Code Online (Sandbox Code Playgroud)
有没有希望实现这一目标?
我已经对此进行了一段时间的攻击并且已经接近了,但它还没有完全正常运行.我的解决方案是添加一个条目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
Run Code Online (Sandbox Code Playgroud)
我实际上并不知道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)))
Run Code Online (Sandbox Code Playgroud)
现在,你必须执行align两次; 第一次只排列如下:
NSTimer *timer =
[NSTimer timerWithTimeInterval:1.0
target:self
selector:@selector(callback:)
userInfo:nil
repeats:YES];
Run Code Online (Sandbox Code Playgroud)
请注意,冒号是左边两个字符.第二个align会纠正这个.不要问我为什么.
这个align命令还有很多,所以弄清楚这个很难.希望有人想出一个改进的方法.无论如何,请查看相关的EmacsWiki页面以获取有关对齐的更多信息.