[PATCH] D65738: [clangd] Added a TextMate theme parser that updates when the current theme changes.

Haojian Wu via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Aug 5 08:08:13 PDT 2019


hokein added a comment.

Haven't looked at the patch in details.

Looks like the patch is doing different things, and the test just covers a small set of the code.

1. find and parse the theme definition files `json` ;
2. define related data structures to save the TM scopes and do the transformation;
3. handle changes of the theme;

could we narrow it further? I think we could just implement 1) for this patch.



================
Comment at: clang-tools-extra/clangd/clients/clangd-vscode/src/TextMate.ts:11
+  // Mapping from a clangd scope index to a color hex string.
+  private colors: string[];
+  // The current best matching scope for every index.
----------------
The `color` word here is ambiguous -- we have different colors in DecorationRenderOptions, e.g. `color`, `backgroundColor`, `borderColor`, I believe you meant `color`, maybe we could just a more descriptive name, like `highlightColor`, or `TextColor`? 

I think we may want to use a structure here (`color` is one of the field), so that the code is extensible to support more options in  `DecorationRenderOptions`.


================
Comment at: clang-tools-extra/clangd/clients/clangd-vscode/src/TextMate.ts:12
+  private colors: string[];
+  // The current best matching scope for every index.
+  private colorScopes: string[];
----------------
what does the `index` mean here?


================
Comment at: clang-tools-extra/clangd/clients/clangd-vscode/src/TextMate.ts:119
+// Gets a TextMate theme by its name and all its included themes.
+async function getFullNamedTheme(themeName: string): Promise<any[]> {
+  const extension =
----------------
I think we may define a type/interface (like `TokenColorRule`) for the entries (tokenColors) in the theme file, and have a function that parsing the content and returning an array of `TokenColorRule`?




================
Comment at: clang-tools-extra/clangd/clients/clangd-vscode/src/TextMate.ts:148
+    const contents = await readFileText(fullPath);
+    const parsed = jsonc.parse(contents);
+    if (parsed.include)
----------------
note that `json` is one of the theme format files, vscode also supports `.tmTheme`. We probably don't support `tmTheme` for now (just add a fixme).


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D65738/new/

https://reviews.llvm.org/D65738





More information about the cfe-commits mailing list