当前位置:  开发笔记 > IOS > 正文

emacs中的Objective-C缩进

如何解决《emacs中的Objective-C缩进》经验,为你挑选了2个好方法。

我正在使用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];

有没有希望实现这一目标?



1> haxney..:

我已经对此进行了一段时间的攻击并且已经接近了,但它还没有完全正常运行.我的解决方案是添加一个条目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命令还有很多,所以弄清楚这个很难.希望有人想出一个改进的方法.无论如何,请查看相关的EmacsWiki页面以获取有关对齐的更多信息.



2> Ivan Andrus..:

在c-offsets-alist中,ob -c-method-call-colons的c-lineup-ObjC-method-call-colons是否有问题?

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有