C Improved
(不再维护) 改进的C/C++/Objective-C语法,特别支持Linux内核、CPython等源代码。
详情
安装次数
- 总数 117K
- Win 59K
- Mac 19K
- Linux 39K
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日 | 6月22日 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Windows | 5 | 2 | 0 | 1 | 2 | 5 | 4 | 5 | 2 | 5 | 4 | 4 | 3 | 8 | 6 | 5 | 3 | 2 | 5 | 6 | 2 | 6 | 2 | 3 | 4 | 4 | 5 | 4 | 30 | 4 | 6 | 2 | 4 | 2 | 5 | 7 | 36 | 2 | 4 | 5 | 5 | 6 | 12 | 7 | 2 | 2 |
Mac | 0 | 1 | 0 | 1 | 1 | 0 | 3 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 3 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 2 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 |
Linux | 2 | 2 | 2 | 2 | 2 | 1 | 1 | 2 | 0 | 4 | 2 | 0 | 2 | 1 | 0 | 0 | 1 | 1 | 0 | 5 | 1 | 0 | 3 | 2 | 1 | 3 | 1 | 2 | 3 | 3 | 2 | 0 | 2 | 0 | 1 | 0 | 2 | 2 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 |
README文件
Sublime C Improved
本软件包为Sublime Text提供了更好的C/C++/Objective-C语言支持。
它主要关注纯C的语法标注,覆盖了Sublime Text内置的标准语法定义,尽管一旦安装它也会影响到其他C系列语言。注意,C Improved本身仅提供语法定义和一些符号索引设置,没有更多功能。也就是说,它不是一个自维持的软件包,而仅仅是标准C++软件包的补充(改进)。
改进了什么?
C Improved的大多数功能都旨在简化日常C语言开发体验。这包括从启用操作符高亮到以下更复杂的增强功能。
预处理问题
C预处理指令相对简单,可以用正则表达式等手段分析。因此,首先解决了相关问题。
宏高亮和错误处理
宏参数(包括变长参数)和参数字符串化现在都有正确的高亮显示,并处理了一些常见的语法错误。
以下是一个相对复杂的多行宏的示例。
标准C | C Improved |
---|---|
以下是在注释掉一个 msg...
变长参数(但注释外缺少逗号)和意外地在某些行续符反斜杠后放制表符的结果。
标准C | C Improved |
---|---|
这两个错误在标准软件包中被忽略,而C Improved在第一个案例中高亮显示了一个未闭合的括号作为错误,并警告关于反斜杠后的尾部空格(第二个直接紧跟着一个警告,抱怨宏参数中出现了意外的行结束符)。请参见 问题 关于 space-after-continuation
高亮。
宏内部
一个宏体(如果有必要的换行续行,则进行)已无法再对符号索引做出贡献,也无法干扰围绕宏的代码,或者无论如何打破语法高亮。
标准C | C Improved |
---|---|
在这个例子中,标准C包识别宏内的check_range(...)
为函数定义,尽管它实际上是一个函数调用。这导致高亮显示不正确,并为符号列表添加了一个错误的符号。此外,紧跟宏之后的函数声明(int irq_attach(...)
)根本没被识别。
预处理指令的作用域
现在所有预处理指令都提供了适当的作用域(meta.preprocessor
),这意味着您可以使用ctrl+shift+space或⌘+⇧+space选择整个宏。这也允许整个宏体具有不同的样式(这取决于颜色方案)。
对重要项目的支持
标准C包为C标准库和POSIX中的函数提供特别支持。例如,printf
函数被不同方式高亮。
然而,大多数用C编写的最重要软件项目都有自己的内部库/框架,并在其源代码中使用了某些已建立的模式和习语。这包括常见的函数和类型集合;有些宏用于定义某些对象、特殊类型的函数属性/注释等。
如果您使用Sublime Text开发以下某些项目,您会发现这些改进非常有用。
Linux内核源代码
这为内核源代码中广泛使用的某些常用宏添加了特殊处理,如EXPORT_SYMBOL
、LIST_HEAD
或DEFINE_XXX
,否则它们会被识别为函数,从而污染符号索引和概要。
标准C | C Improved |
---|---|
Windows驱动器
提供对于此处列出(此处)的SAL函数注释的特殊高亮(相关问题)。
CPython解释器源代码
这包括
- Python相关常量(如
PyTrue
或PyFalse
)和主要数据结构(PyObject
、PyTypeObject
、PyListObject
等)的高亮。 - 广泛使用的
PyMODINIT_FUNC
、PyAPI_FUNC(...)
和Py_LOCAL(...)
函数注释。这清除了注释函数和符号索引的高亮。 - 使用
_PyIDENTIFIER(...)
宏定义的PyId_xxx 内部静态字符串字面量的特殊高亮。 - 涉及控制转移的宏的高亮(如
Py_RETURN_NONE
)的良好标记。
标准C | C Improved |
---|---|
自定义类型/函数/宏的索引
您可以调整哪些符号可用于导航,并在符号索引或概要中可见。
以下作用域和默认首选项提供
作用域名 | 描述 | 概要 ctrl+R |
索引(ST3) F12 ctrl+shift+R |
---|---|---|---|
entity.name.type |
复合类型 | 可见 | 可见 |
entity.name.type.declaration |
类型的正向声明 | 可见 | 隐藏 |
entity.name.type.typedef |
类型别名(typedef ) |
可见 | 可见 |
entity.name.function |
函数定义 | 可见 | 可见 |
entity.name.function.declaration |
函数声明 | 可见 | 隐藏 |
entity.name.function.preprocessor |
函数宏 | 可见 | 可见 |
entity.name.constant.preprocessor |
对象宏 | 可见 | 可见 |
这些设置可以通过.tmPreferences
文件进行更改,请参阅Packages/C Improved/Symbol Index (*)
。.tmPreferences
。
已删除的功能
#if 1 ... #else
条件
标准语法高亮现在将#if 1
条件后的#else
部分识别为注释。这是一个非常好的特性,但它相当脆弱,有众多问题,例如未终止的块(预处理条件中的开/闭花括号)。因此,为了简化问题,决定完全删除它,仅留下#if 0
处理,它相对稳定,实现也较为直接。
您可以选择一个没有这个限制的分支:preprocessor-cond-scopes。
局部变量的声明/初始化
C语言在某些部分可能非常复杂,例如相关于指针声明(什么是t * v
?是简单的乘法还是指名为t
类型的指针的声明v
?)。不用多说,使用正则表达式是无法解析C语言的。因此,C Improved并不尝试识别变量声明,因此没有为它们提供不同的作用域/高亮显示。
有关这一点的讨论可以在相关的问题中找到。
安装
Package Control
- 打开命令面板(ctrl+shift+P或⌘+⇧+P)
- 选择Package Control: 安装包(
pkginst
) - 搜索包安装C Improved(
cimp
)并安装它
手动
找到Sublime Text的Packages
目录(首选项 → 浏览包…)并将此仓库克隆到C Improved
git clone https://github.com/abusalimov/SublimeCImproved.git "C Improved"
用法
安装后,C Improved将在打开.c
和.h
文件时代替标准C语法使用,除非您已经强制将这些扩展名与其它的东西绑定了。在这种情况下,您可以通过视图 → 语法 → 以当前扩展名作为…打开所有 → C Improved重新绑定它们。
从C衍生出来的其他语言(如C++和Objective C)不需要将其语法更改为特殊格式:它们通常在底层扩展source.c
,现在由C Improved语法提供。