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

更好的 JavaScript

作者: int3h 所有版本

对 Sublime Text 的 JavaScript 符号列表的修复

详细信息

安装

  • 总计 33K
  • Win 18K
  • Mac 10K
  • Linux 6K
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 1 0 0 0 0 0 1 0 1 2 0 1 0 1 2 1 0 1 0 1 0 0 1 2 1 0 0 0 1 0 1 0 0 1 0 0 2 3 0 0 0 0 0
Mac 1 1 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 2 0 1 0 0 0 0 0 0 0 0
Linux 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0

说明文件

源代码
raw.​githubusercontent.​com

Sublime Better Javascript

此包是 Sublime Text 的 JavaScript 包的改进版本,主要侧重于改进符号导航。

Sublime Text 中默认的 JavaScript 语言定义具有古怪的符号识别,并将匿名函数、对象实例化甚至对 console.log() 的调用等噪音填充到符号列表中。

Useless Symbol List

该项目修复了 Sublime,使只有命名的函数定义和函数原型属性出现在符号列表中。同时它还修复了这些符号在符号列表中的显示方式,仅显示函数名。

Improved Symbol List

该包已在 Sublime Text 2 和 3 上进行了测试。

安装

通过 package control 安装(搜索“Better JavaScript”)。

或者,将 cd 命令切换到您 Sublime 的包目录,然后

git clone [email protected]:int3h/sublime-better-javascript.git 'Sublime Better JavaScript'

刷新现有文件的符号

在一些情况下,尤其是在 Sublime Text 3 中,先前已打开的文件的符号列表可能不会与改进的符号刷新。

我找到的最可靠的方法是关闭所有打开的 JavaScript 文件并退出 Sublime(重要的是在 Sublime 退出时所有 JS 文件都已关闭。)然后删除您 Sublime 用户数据目录(位于“Packages”目录的父目录中)中的 IndexCache 子目录。在 Mac OS X 上,我还必须删除 ~/Library/Caches/com.sublimetext.3(或 com.sublimetext.2)。

卸载

在卸载 Better JavaScript 之前,请确保关闭所有打开的 JavaScript/JSON 文件,并在您的 Sublime 用户设置中删除“JavaScript”以从“ignored_packages”列表中删除。现在您可以安全地卸载 Better JavaScript 包。

在 Sublime 中看到一些关于无法找到语法文件的错误是正常的。只需退出 Sublime 并重新打开它,然后一切应会修复。

详细信息

默认的 JavaScript.tmLanguage 在将某些令牌放入命名空间方面做出了一些……不寻常的决定。具体来说,它将大量令牌放入 entity.name.* 命名空间中,这些令牌可能不应该在那些命名空间中。

JavaScript包中存在一个文件,Symbol List Banned.tmPreferences,看似是用来从符号列表中过滤掉一些特定的子命名空间的,但实际上并没有起作用。我已经修改了Symbol List Banned.tmPreferences,使其专门匹配对象实例化和console.log调用,并将它们设置不在符号列表中显示。

我还修改了Symbol List Function.tmPreferences,通过正则表达式进行额外的函数名称处理,显示在符号列表之前移除多余的字符(如“function”和“= function()”)。另外还增加了一个文件,Symbol List Prototype.tmPreferences,将其添加到符号列表中以包含函数原型属性。