Combining column and tabWidth into a struct is an option with minimal changes. Maybe struct ColumnCounter { position column; int tabWidth; };
Add API `SCI_FINDCOLUMN(line line, position column, int tabWidth) → position`
Could you add a CLI option to set the `removePathParts`?
I'm not as familiar with the project code as you are. I commented out SciCall_SetTabIndents() and SciCall_SetUseTabs(), leaving only SciCall_Tab(). It worked fine (in use Tabs mode). Then narrowed down to the handling of Message::SetUseTabs and found that InvalidateStyleRedraw() was unnecessary. After removing it, it did work, so I didn't look into it.
I'm not as familiar with the project code as you are. I commented out SciCall_SetTabIndents() and SciCall_SetUseTabs(), leaving only SciCall_Tab(). It worked fine. Then narrowed down to the handling of Message::SetUseTabs and found that InvalidateStyleRedraw() was unnecessary. After removing it, it did work, so I didn't look into it.
Remove unnecessary `InvalidateStyleRedraw()` for `Message::SetUseTabs`
Isn't atomic commits preferred? This is beyond my knowledge for so many changes, especially during this big-change stage. If there is any contribute from me, it's just the idea. Others are all your efforts. Please commit it at the proper time by your schedule. Many thanks!
I thought it would be in 2 commits. Thanks for your detailed description and codes. Here is the updates. Known issues with legacy GDI: 1. SurfaceGDI::LineDraw and SurfaceGDI::PolyLine for DrawTabArrow don't work well with alpha drawing. Maybe also others. 2. SurfaceGDI::AlphaRectangle is not efficiency enough for "many" tasks.