如何在textmate包中创建片段子文件夹

时间:2015-01-03 13:35:06

标签: textmate

我刚刚发现了文字,我喜欢它。我很想用它作为存储我自己的片段的方式。我知道如何在textmate中做到这一点但是因为我想添加大量的片段,我不希望它们变得杂乱无章。我想将它们添加到相关捆绑下的有组织的子文件夹中。例如,在shell脚本包下我想添加一个文件夹,将我的所有网络片段保存在一起。我无法在任何地方找到如何做到这一点,但我知道它可以完成,因为有些捆绑包是这样组织的......帮助

2 个答案:

答案 0 :(得分:2)

我设法通过大量试验和错误来解决这个问题,并从这个超级用户answer开始。

在TextMate 2.0中执行此操作的唯一方法是手动编辑捆绑包的info.plist文件。我建议在捆绑包的导出副本上执行此操作并将其重新加载到textmate中。要导出包,请右键单击包编辑器中的包,然后单击Export Bundle...

首先在plist文件的顶层添加mainMenu部分:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"  "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    ...
    <key>mainMenu</key>
    <dict>
    </dict>
  </dict>
</plist>

据我所知,mainMenu词典支持3个键:excludedItemsitemssubmenusexcludedItemsitems是包含捆绑项(片段,命令等)或子菜单的UUID列表的数组。您可以通过在textmate中打开它并找到uuid键来获取命令或片段的UUID;它看起来像是:

<key>uuid</key>
<string>0A2DB1AC-3049-4BD5-8931-641E716990F9</string>

获得商品的UUID后,您可以在items中列出它们,按照您希望的顺序填充捆绑菜单,例如:

<key>items</key>
<array>
  <string>409b0e74-9ab5-4d35-b957-9ddf23a71c0c</string>
  <string>------------------------------------</string>
  <string>d2c991dc-a00e-4247-8479-f2d29f387319</string>
</array>

如果您使用一系列-字符代替UUID,它将在菜单中创建一个分隔符。同样,如果您不希望在捆绑包的菜单中显示片段,则可以将其添加到excludedItems

要创建子菜单,您必须在submenus内定义它们,如下所示:

<key>submenus</key>
<dict>
    <key>71BE58B2-E486-4B21-93F1-C208D4914099</key>
    <dict>
        <key>items</key>
        <array>
            <string>6D0B2B9D-62C7-4842-BA28-F3379E887D93</string>
            <string>CADC55BD-0D0A-48C8-B296-35FA7AAE09CA</string>
        </array>
        <key>name</key>
        <string>C++ Snippets</string>
    </dict>
</dict>

每个子菜单都需要在<key>...</key>内有一个关联的UUID。我是通过在线UUID generator创建的。然后,您可以将子菜单的UUID添加到顶级items数组,以将子菜单添加到您的包的菜单中。

最后,当您将捆绑包加载到textmate中时,必须首先从以下位置删除捆绑包的所有缓存实例:

~/Library/Application Support/Avian/Bundles
~/Library/Application Support/Avian/Pristine Copy/Bundles

如果不这样做,textmate有时会忽略新加载的包。不确定是否有更简洁的方法来重新加载捆绑包,但删除它对我有效。

有关完整示例,请参阅我的Github上的ROS包中的this commit

答案 1 :(得分:1)

关于上面出色答案的一些额外信息

从TM2 rc23开始,您可以通过在捆绑包编辑器窗口(通过cntrl-option-command-B访问)上右键单击现有项目的UUID

您可以使用命令terminal.appuuidgen中创建UUID(如果经常使用,也可以将其变成命令)

TM2不需要清除缓存-它监视plist中的更改。

@ user96157对此很清楚,但请注意,您还必须将新的子菜单添加到mainMenu中。因此:

<key>mainMenu</key>
<dict>
    <key>items</key>
    <array>
    <string>COPY-UUID-FOR-YOUR-NEW-SUB-MENU-HERE!</string>