DEV Community

williamslay
williamslay

Posted on AI-assisted

I forked Text Marker (VS Code) to remove telemetry, add async matching, and persistent auto-save — Text Marker Plus

Text Marker Plus

Hey all — I've been using Text Marker for persistent, multi-color highlighting for a long time.

My code-reading sessions often stretch over several days, sometimes close to a week. When I'm working through an unfamiliar codebase, I lean heavily on color-coding — different colors for variables, data structures, control paths, log patterns. For that workflow, temporary highlights aren't much use; I don't want everything to vanish the moment I reload the window. Text Marker handled persistence in a way I liked: saved highlight rules just live in settings.json, simple and visible.

The catch is that the original has been essentially unmaintained since 2020/2021. A few things I'd wanted for a while — automatic saving of highlight rules, and control over where those rules get saved — weren't likely to land upstream.There was also another thing I wasn't very comfortable with: the original extension includes telemetry and enables it by default. You can turn it off, but for something whose whole job is highlighting text in files I'm working on, I didn't see much reason for telemetry to exist at all.

So I ended up forking it. The result is Text Marker Plus: source · Marketplace

My goal isn't to turn Text Marker into something different. I actually like how simple and transparent the original design is. I just wanted to keep that workflow while fixing what's become frustrating after years without updates.

What I've changed

  • No telemetry. Not "disabled by default" — removed entirely. There's no setting for it because there's no code to enable.

  • Async, chunked matching. Instead of blocking on the whole document in one pass, matching runs in smaller async chunks, with the visible part of the editor prioritized so highlights appear quickly while the rest finishes in the background. This also covers all visible split panes, not just the focused one.

  • Auto-save + configurable save target. Enable auto-save on toggle instead of saving manually every time, and choose where rules get saved — workspace, global, or prompted each time. I still default to workspace myself, since the result stays visible in settings.json.

  • One Half Dark palette, because I have opinions about colors. I swapped the default palette for one based on One Half Dark — it's just a better-looking set of colors than what shipped originally, fight me 😂. On top of that, I also fixed a behavior that bugged me: the original falls back to gray once you've used up the predefined palette, which isn't great once you've got a lot of simultaneous markers. Text Marker Plus cycles back to the start instead (red → blue → green → red → blue → green...). You can still bring your own palette via textmarker.userColor / textmarker.useUserColor if you don't share my taste.

What it actually looks like: saved highlight rules in settings.json

The normal Text Marker workflow is still there:

  • highlight the selected text or word under the cursor

  • use multiple independent colors

  • regex highlighting

  • case-sensitive / case-insensitive matching

  • whole-word / partial matching

  • jump to the next or previous occurrence

  • save highlights and restore them when reopening files

I'm also trying to keep compatibility with the original commands and settings wherever it makes sense, so existing Text Marker users shouldn't have to completely relearn the extension.

Why I'm posting this

I'm mostly testing this through my own workflow right now, and one person's workflow is a pretty bad test suite for a VS Code extension. There are almost certainly edge cases I haven't hit — unusual Unicode, very large files, different layouts, odd regexes, extension interactions. If persistent multi-color highlighting is part of how you read code too, I'd appreciate people trying it and reporting anything that looks off.

AI disclosure

I used OpenAI Codex during development — mostly for navigating the codebase, discussing approaches, generating candidate changes, and helping with tests. I don't treat its output as trusted code: everything gets reviewed, modified where needed, compiled, linted, and tested before it's merged. The design decisions are mine, and if something's broken, "Codex wrote it" isn't an excuse — it's still my bug.

Rough edges

  • Still a young fork, single maintainer (me) for now.

  • MIT licensed, original license and attribution retained — full credit to ryu1kn for the original extension. This wouldn't exist without it.

Bugs, edge cases, or anything that feels awkward — issues are welcome: https://github.com/williamslay/vscode-text-marker-plus/issues

Top comments (0)