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

CodeMap

oleg-shilo ST3

CodeMap - 是一个ST3插件,用于展示表示活动视图/文档代码结构的代码树

详细信息

  • 1.0.14
  • github.com
  • github.com
  • 2年前
  • 12分钟前
  • 7年前

安装

  • 总计 4K
  • Win 2K
  • Mac 972
  • Linux 978
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 1 0 1 0 0 4 0 1 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 2 0 1 2 0 0 0 1 0 0 0 1 2
Mac 1 1 0 0 0 1 0 0 2 0 0 0 1 0 0 0 0 0 0 2 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Linux 1 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 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0

README

源代码
raw.githubusercontent.com

stand with Ukraine

Sublime CodeMap

paypal

Sublime Text 3编辑器中显示代码地图(代码结构树)的插件。

此插件是Visual Studio扩展PyMap的移植。

插件当前支持构建以下语言的代码树:- Python - C# - 文本文件 - Rexx - Ruby - JSON - YAML - Ini

插件的设计允许集成用户定义的用于其他语言的树构建算法。自定义语法集成基础设施和样本将在下一个版本中可用。

安装

注意,该插件是在ST3上进行开发和测试的,但并非ST2。

包控制

您可以使用包控制安装插件。

手动

  • 使用包控制移除已安装的包。
  • 添加仓库:https://github.com/oleg-shilo/sublime-codemap.git
  • 使用包控制安装sublime-codemap
  • 如需则重启Sublime编辑器

您还可以通过将sublime-codemap仓库克隆到您的Packages文件夹中或手动放置下载的包到那里来安装插件。

使用方法

插件使用专门的视图组“代码 - 图”(在右侧)来模拟“侧边栏”,内容(代码树)表示主视图组中活动视图内容的结构。

代码树在保存活动文档或切换标签时自动刷新。使用方法非常简单。您可以在代码树中双击一个节点,这将触发导航到代码(活动文档)中相应的区域。或者,您可以通过从命令面板或使用配置的快捷键触发sync_code_map命令来同步代码树节点选择与文档中当前位置的当前位置。

要开始使用CodeMap,只需使映射视图可见(例如[alt+m, alt+m]),并设置焦点到代码视图。

命令面板

cmd+shift+p。键入codemap以查看可用的命令

  • 切换可见性 - 显示/隐藏CodeMap视图。CodeMap视图始终放置在活动窗口的最右列(组)中。如果show_in_new_group设置为true,则将创建新组。
    默认快捷键是Alt+m Alt+m

  • 在CodeMap中显示 - 选择与代码中光标位置相对应的代码树节点。
    默认快捷键是Alt+m Alt+.

  • 从视图渲染 - 尝试从未绑定到物理文件的视图渲染CodeMap。
    默认快捷键是Alt+m Alt+,

自定义映射

自定义映射器

您可以通过自定义映射器扩展内置功能。自定义映射器是一个Python脚本,它定义了一个必要的def generate(file)例程,分析给定的文件内容并生成表示内容结构的'代码映射'。

您可以在源代码中找到md.py的示例。此映射器在给定的文本文件中构建Markdown部分的列表。为了激活映射器,其脚本需要正确命名并放置在特殊文件夹中:<Packages>\User\CodeMap\custom_mappers。映射器文件的名称必须遵循特定的命名约定:"<extension>.py"

示例:"%APPDATA%\Sublime Text 3\Packages\User\CodeMap\custom_mappers\md.py"

您可以将语法与自定义映射器相关联,以便CodeMap在渲染地图内容时使用它。自定义语法也可以放在Packages\User\CodeMap\custom_languages中。语法关联必须在自定义映射器本身中指定

map_syntax = 'Packages/Python/Python.tmLanguage'

Python语法似乎是对大多数映射场景的一个很好的高亮显示模式。

通用映射器

通用映射器是一个基于正则表达式的通用映射器,可以用作专用自定义映射器的替代品。《通用映射器》的映射算法(s)在插件设置中定义,并且依赖于扩展。

插件将始终尝试使用通用映射器映射算法,并且只有在它不可用的情况下,插件才会尝试根据活动文档文件扩展名定位专用自定义映射器。有关如何使用通用映射器创建自定义映射器的完整说明包含在设置文件中。

请注意,如果您为在通用映射器设置中已定义的扩展使用自定义映射器,则后者具有优先级。在《通用映射器》部分中注释掉扩展,以使用您的自定义映射器代替它。

使用通用映射器(并在需要时定义其新规则)的优点在于它默认支持映射深度系统,您可以使用该系统修改显示的映射深度。自定义映射器需要在这个系统内部支持。

以下是添加对TypeScript的通用映射器支持的简单示例

将文件扩展名(例如"ts")和算法部分名称添加到语法部分

"syntaxes":     [
                        ["universal",   ""],
                        ["text",        "txt"],
                        ["typescript",  "ts"],
                        ["python",      "py"]
                ],

创建一个新的typescript部分并填充以下内容

"typescript": {
                "regex":
                [
                    [
                        "^(class |function |export class |interface ).*$",
                        "[(:{].*$",
                        "",
                        false
                    ]
                ],
                "indent": 4,
                "obligatory indent": false,
                "empty line in map before": "class",
                "line numbers before": false,
                "prefix": "",
                "suffix": "()",
                "syntax": "Packages/TypeScript/TypeScript.tmLanguage"
             },

这就是如何在运行时使用通用映射器设置

"regex"是正则表达式匹配定义的集合,用于测试给定的字符串。

每个项(定义)都包含一些正则表达式,用于识别语法声明并将正则表达式匹配转换为代码映射树中的可显示项

1. Pattern to detect if the string is a declaration (e.g. a class). It is if it matches the pattern
2. Replacement pattern to be used against a declaration string
3. Replacement value to be used against a declaration string
4. instead of testing string test its last matching+grooming result. Only applicable if multiple 
   patterns are defined. 
   Basically it is like this:
     take the pattern def ind apply it on the string, save the matching result
     take the next pattern and apply it to on the last match from the prev matching
     . . .

请注意,使用正则表达式测试的行文在测试前将被左删除。这意味着如果您的代码有以下行

"  say_hello():"

使用正则表达式测试的文本是

"say_hello():"

关于该主题的进一步阅读请参考这里

地图深度

如果您使用的是通用映射器或支持它的专用映射器,您可以更改显示映射的深度。默认的热键是

{ "keys": ["alt+m", "alt+left"], "command": "code_map_decrease_depth" },
{ "keys": ["alt+m", "alt+right"],"command": "code_map_increase_depth" },

使用键盘导航

您可以使用以下键开始键盘导航: Al+m, Alt+n。然后使用以下键

up / down                   move by definition
alt+up / alt+down           move by class
enter/escape/left/right     focus back on edited view

设置

您还可以配置插件以:1. 在关闭CodeMap视图时隐藏组(当时该组是唯一的视图)。2. 总是将CodeMap视图放置在右端的单独一列中。3. CodeMap组的宽度。4. 为CodeMap分配自定义的字体大小/字体/边距。

code_map.sublime-settings

{
    "close_empty_group_on_closing_map": true,
    "show_in_new_group": true,
    "codemap_width": 0.17,
    "codemap_font_size": 8,
    "codemap_font_face": "Verily Serif Mono",
    "codemap_margin": 8
}