加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

emacs中的Objective-C缩进

发布时间:2020-12-16 10:15:46 所属栏目:百科 来源:网络整理
导读:我正在使用Emacs来编辑我的Objective-C代码.默认缩进如下所示: NSTimer *timer = [NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(callback:) userInfo:nil repeats:YES]; 我希望Emacs像XCode一样缩进代码,即与冒号对齐: NSTimer *tim
我正在使用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];

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

解决方法

我已经对此进行了一段时间的攻击并且已经接近了,但它还没有完全正常运行.我的解决方案是在align-rules-list中添加一个条目,这样一个简单的M-x对齐就可以了.问题是你必须运行两次对齐才能使它工作.

(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)))

现在,你必须执行两次对齐;第一次只排列如下:

NSTimer *timer =
        [NSTimer timerWithTimeInterval:1.0
                              target:self
                            selector:@selector(callback:)
                            userInfo:nil
                             repeats:YES];

请注意,冒号是左边两个字符.第二个对齐将纠正这一点.不要问我为什么.

使用align命令可以进行很多操作,因此很难搞清楚它.希望有人想出一个改进的方法.无论如何,请查看relevant EmacsWiki页面以获取有关对齐的更多信息.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读