首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模板限制的缩进

模板限制的缩进
EN

Stack Overflow用户
提问于 2016-07-14 17:58:25
回答 1查看 55关注 0票数 1

Emacs d-mode目前错误地缩进了模板限制,例如

代码语言:javascript
复制
auto f(T)(T x)
    if (is(T == struct))
{
}

作为

代码语言:javascript
复制
auto f(T)(T x)
    if (is(T == struct))
    {
    }

有没有人知道从哪里开始挖掘来解决这个问题?请注意,d-mode使用cc-mode

EN

回答 1

Stack Overflow用户

发布于 2016-07-16 11:22:11

运行C-h f d-mode,它应该显示:d-mode is an interactive autoloaded compiled Lisp function in 'd-mode.el'.跟随d-mode.el链接。

通过在该文件中搜索“缩进”,看起来他们只是使用了cc-mode中定义的任何内容。您可以通过在d-mode buffer中运行以下命令来了解它们使用的是什么函数:

代码语言:javascript
复制
 C-h v indent-line-function

这表明他们确实使用了c-indent-line。也许解决这个问题的一种方法是尝试检测这一种情况,否则会退回到c-indent-line。类似这样的代码(未经测试的代码,仅用于说明目的):

代码语言:javascript
复制
(defun d-indent-line ()
  (let* ((auto-if-curly 
          (save-excursion
            (back-to-indentation
             (when (looking-at "{")
               (forward-line -1)
               (back-to-indentation
                (when (looking-at "if")
                  (forward-line -1)
                  (back-to-indentation
                   (looking-at "auto")))))))))
    (if auto-if-curly
        (ident-line-to 0)
      (c-ident-line))))

(add-hook d-mode-hook (lambda () (setq-local indent-line-function 'd-indent-line)))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38371139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档