VS Code中实现iTop XML大纲

开发 iTop 插件 经常会写很长很长的 XML,没有大纲会很不方便。Redhat 的 vscode-xml 倒是支持 XML 大纲,但是需要安装基于 Java 环境的 XML Language Server,太重了,我需要的是一个比较轻量级的解决方案。

另一款插件 XML Tools,实现了一个 XML Tree View 功能,类似大纲。效果如下:

可见,只需要把 id 属性移到和节点同一行就能较好的实现导航的需求。

修改方法如下,找到插件目录 C:\users\username\.vscode\extensions\dotjoshjohnson.xml-2.5.1\out\tree-view 编辑文件 xml-tree-data-provider.js

--- "xml-tree-data-provider - \345\211\257\346\234\254.js"      2020-12-14 22:17:12.621902700 +0800
+++ xml-tree-data-provider.js   2020-12-14 22:21:48.497691600 +0800
@@ -34,6 +34,9 @@
             const childElements = this._xmlTraverser.getChildElementArray(element);
             const totalChildren = (childAttributes.length + childElements.length);
             if (totalChildren > 0) {
+                if(childAttributes.length > 0) {
+                    treeItem.label += " " + childAttributes[0];
+                }
                 treeItem.label += "  (";
                 if (childAttributes.length > 0) {
                     treeItem.label += `attributes: ${childAttributes.length}, `;
@@ -50,7 +53,11 @@
                 treeItem.label += ` [line ${element.lineNumber}]`;
             }
         }
-
+
+        // attribute 类型不显示
+        if (!this._xmlTraverser.isElement(element)) {
+            return;
+        }
         treeItem.command = {
             command: constants.nativeCommands.revealLine,
             title: "",

效果如下:

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注