Skip to content

[FEATURE]: Improve handling of mix-case words #116

Description

@daogilvie-9fin

Feature Description

Hi! Thanks for a great bit of software, I've dropped nvim's built-in spellcheck due to issues with tree-sitter and I'm really liking using codebook-lsp instead!
That said, I've noticed that mixed-case words, such as "PostgreSQL", don't quite work as I would expect. This seems to be because the splitter code here is splitting on case changes.
It would be really great if there was a way to enable/disable case-based splitting to account for proper nouns such as "PostgreSQL" — a word that codebook knows about out-of-the-box!

I am not filing this is a bug because I don't think it's something not working as intended per-se, but you might prefer that it is one? Please let me know.

Use Case

In my case I have comments/docs that refer to PostgreSQL, and codebook detects that "Postgre" is not a word it knows, and helpfully offers to replace it with PostgreSQL, which then makes the word PostgreSQLSQL 😂 Which is, of course, still flagged as a mis-spelling.

Proposed Solution

The simplest solution is a config-driven toggle, to control whether the splitter splits on case boundaries at all?

Alternative Solutions

A more complicated solution would be to have the splitter return the whole word as the first potential split for case based splits (not just the individual parts), and if that happens (and is a valid word), then it could ignore the subsequent split elements?

Examples

This is an example of the problem, and what I'd like to see instead

Image
Screen.Recording.2025-09-24.at.12.31.45.mov

Additional Context

I am not really a rust dev, so I might have missed something very obvious when reading the code. That said, I am happy to try my hand at writing some rust for this as a PoC, if you'd want to see the code explored at least a little bit first.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions