ctrl+shift+p filters: :st2 :st3 :win :osx :linux
浏览

包含自动完成

使 C 语言中的#include指令中的.h文件实现自动完成的 Sublime Text 插件

详情

  • 1.2.1
  • github.com
  • github.com
  • 7年前
  • 3小时前
  • 7年前

安装

  • 总数 3K
  • Win 2K
  • Mac 365
  • Linux 885
8月6日 8月5日 8月4日 8月3日 8月2日 8月1日 7月31日 7月30日 7月29日 7月28日 7月27日 7月26日 7月25日 7月24日 7月23日 7月22日 7月21日 7月20日 7月19日 7月18日 7月17日 7月16日 7月15日 7月14日 7月13日 7月12日 7月11日 7月10日 7月9日 7月8日 7月7日 7月6日 7月5日 7月4日 7月3日 7月2日 7月1日 6月30日 6月29日 6月28日 6月27日 6月26日 6月25日 6月24日 6月23日
Windows 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 2 0 1 0 0 0 0
Mac 1 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Linux 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

读我

源代码
raw.githubusercontent.com

包含自动完成

这是一个 Sublime Text 插件,它启用在#include指令中的.h文件上进行自动完成。

概要

此插件将尝试完成C文件中#include ""指令的文件名。默认情况下,它会(递归地)在要自动完成的include所在的同一目录中查找,但您可以在.sublime-project文件中设置自定义搜索位置(参见设置)。

当从自动完成建议中选择项时,包含位置相对于的路径被添加到include指令中,包括文件名。例如,假设以下为您的包含位置布局

/include/loctaion/
├── dir1
│   └── include
│       └── x.h
└── dir2
    └── include
        └── y.h

从自动完成的建议中选择,将自动完成为dir1/include/x.h

此外,如果在您的#include指令中已经有一个路径,则在搜索.h文件时将考虑该路径。使用相同的包含位置目录布局,自动完成#include "dir1/<...>"将只在dir1中查找文件,而不是在dir2中。

安装

推荐的安装方式是通过Sublime Package Control。

设置

手动设置

要添加插件应查找.h文件的位置,请将以下内容添加到您的.sublime-project文件中

{
    "include_autocomplete_settings":
    {
        "include_locations":
        [
            {
                "path": ".",
                "ignore": []
            },
            {
                "path": "<path/to/include/directory>",
                "ignore": ["<exclude1>", "<exclude2>", ...]
            },
            ...
        ]
    }
}

“包含位置”键是一个字典列表,每个字典都包含以下键

  • path:我们应(递归地)在该目录中查找.h文件的目录。此路径可以是绝对路径或相对路径。在后一种情况下,我们将相对于用于自动完成#ifdef指令的文件的目录进行查找。该变量支持类似片段的变量,例如${project_path}/include
  • ignore:应忽略的相对path路径列表。

编译数据库

插件还可以考虑编译数据库。当您使用EasyClangComplete来指定编译数据库时,您不需要做任何事情。插件将使用在您的.sublime-project中的EasyClangComplete设置。为了明确,插件期望的是以下形式的

{
    "settings":
    {
        "ecc_flags_sources":
        [
            {
                "file": "compile_commands.json",
                "search_in": "$project_base_path/build"
            }
        ]
    }
}

如果此键不存在于"settings"中,插件还将尝试查找指定compile_commands.json所在目录的"compile_commands"键。同样,可能的任意片段变量。为了明确,插件查找的是以下形式的

{
    "settings":
    {
        "compile_commands": "${project_path}/build"
    }
}

如果找到编译数据库,并且我们处于头文件中,插件将收集编译数据库中所有可能的包含位置。如果我们处于实现文件中,插件将只添加该特定实现文件的包含目录。如果实现文件不在编译数据库中,将在控制台中打印警告信息,通知您实现文件不在编译数据库中。

没有.sublime-project文件

如果当前文件没有关联的.sublime-project文件,或者相关的.sublime-project文件不包含“include_locations”键,将使用以下默认值

{
    "include_autocomplete_settings":
    {
        "include_locations":
        [
            {
                "path": ".",
                "ignore": []
            }
        ]
    }
}