添加将在转到符号(Cmd + R)窗口

时间:2016-10-17 04:33:52

标签: sublimetext3 sublime-text-plugin

我在ST论坛插件开发线程

中发布了这个完全相同的问题

https://forum.sublimetext.com/t/add-custom-markers-that-will-be-shown-in-the-goto-symbol-cmd-r-window/23772

我已经使用ST几年了,

我想先了解一些指导,首先要知道是否希望通过插件开发来实现,如果答案是肯定的,也许可以参考一下如何开始寻找开发此功能。

我想要包含某种标记,当放置在代码中时,它会在列表中包含一个新的条目,该条目显示在转到符号(Cmd + R)窗口中。我现在最接近的例子来自Xcode,在源代码中你可以包含一个带有“MARK:”关键字的注释,它将在编辑器的顶部标题栏中呈现一个新的部分(相当于goto) ST)中的符号。

使用大文件时,此功能将提供巨大帮助,因为它允许根据有关其周围逻辑关系的自定义条件组织代码块,而不仅仅是文件中存在的函数序列。

1 个答案:

答案 0 :(得分:1)

符号列表的内容由首选项文件控制,该文件告诉我们在任何给定语言的符号列表中应该显示哪些范围,并且可选地,应该为显示目的进行哪些转换(例如,缩进方法中的方法)类)。

此类配置文件是包中的tmPreferences个文件(Plist格式的XML文件),通常以名称以Symbol List开头的名称命名。例如,Packages/C++/Symbol List.tmPreferences是用于C ++包的文件之一(涵盖C,C ++和Objective-C的两种风格)。由于文件是Plist文件,实际名称并不重要,但这是一种使这些文件更容易找到的约定。

您可以阅读一些documentation on symbols以获取更多信息。

如果将以下XML保存到Packages/C++/Symbol List Pragma.tmPreferences,它会将源文件中的所有#pragma MARK行添加到符号列表(仅限当前文件),将#pragma MARK替换为" ---- " <?xml version="1.0" encoding="UTF-8"?> <plist version="1.0"> <dict> <key>name</key> <string>Symbol List</string> <key>scope</key> <string>(source.c | source.c++ | source.objc | source.objc++) &amp; (meta.preprocessor.c)</string> <key>settings</key> <dict> <key>showInSymbolList</key> <integer>1</integer> <key>showInIndexedSymbolList</key> <integer>0</integer> <key>symbolTransformation</key> <string> s/#pragma MARK/ ---- /g; </string> </dict> </dict> </plist>

#ifdef

这并不能让你一路走来;首先,#endif#pragma指令会被此规则捕获。此外,它并没有在视觉上缩进IIRC XCode所做的一切。但是,它是了解正在发生的事情的良好起点。

如果您想通过特殊的单行注释而不是#!/bin/bash CURRENT_DATE=`date +'%d%m%Y'` YEAR=`date +'%Y'` Temp_Path=/appinfprd/bi/infogix/IA83/InfogixClient/Scripts/IRP/New_Vendors/ SFTP_PATH=/bishare/DLSFTP/DLSTREAM/ cd $SFTP_PATH du -k --max-depth=1 >$Temp_Path/SFTP_VENDOR_FOLDER_SIZE_$CURRENT_DATE.txt 来实际执行此操作,我相信您需要增强语法突出显示您所针对的语言以匹配此类注释和给他们一个你可以独特定位的范围。