1

我刚刚为 emacs 安装了 yasnippet 包,并正在尝试配置代码片段。除了一个特定的片段外,一切都很好。

文件:~/.emacs.d/elpa/yasnippet-20150212.240/snippets/cc-mode/while

# -*- mode: snippet -*-
# name: while
# key: while
# --
while (${1:condition})
{
    $0
}

问题是当我使用代码片段时,输出是这样的:

while(condition)
    {

    }

我通过将原始 while 文件更改为以下内容来检查我是否有正确的文件:

# -*- mode: snippet -*-
# name: while
# key: while
# --
while (${1:condition})
{
    $0;
}

(添加分号),输出为:

while(condition)
    {
        ;
    }

为什么我的牙套后面有一个标签?

注意:其他一切正常。For 循环工作正常,switch 工作正常,类工作正常......只有 while 循环有问题。有任何想法吗?

4

1 回答 1

1

找到了答案。对于像我这样刚开始使用 emacs 的人来说,这很棘手。

看了一下here之后,默认的c-style似乎是这样的

if(foo)
      {
        bar++;
      }

因此,当我按下制表符使用片段时,我还将代码自动格式化为默认的 c 样式。这就是“gnu”风格。要将其更改为“linux”样式,只需添加

(setq c-default-style "linux"
      c-basic-offset 4)

到您的 .emacs 或 init.el 文件。

更改后的输出:

if(foo)
{
    bar++;
}

毕竟,它与 yasnippet 无关。

于 2015-03-05T11:24:48.310 回答