Fixes#278930
This commit fixes the scroll synchronization issues between the markdown
editor and preview when scrolling through code blocks:
1. **Code block line tracking**: Added endLine calculation for fenced
code blocks by counting newlines, enabling accurate line-to-position
mapping within multi-line code blocks.
2. **Padding-aware scrolling**: Implemented getContentBounds() to
calculate scroll positions excluding padding, preventing jumps when
scrolling through code blocks with padding.
3. **Scroll loop prevention**: Changed scroll disable flags from counters
to timer-based booleans (50ms) to prevent infinite sync loops while
maintaining smooth bidirectional synchronization.
The fix ensures smooth scrolling through code blocks without jumping or
stuttering in both directions (editor ↔ preview).
Fixes#165055
We need to consider the distance between the end of the previous element and start of the next element. Previously we were taking distance from start of the previous to start of the next
Fixes#155552
For lists, the outer ul/ol always has the same source line as the first element in the list. We should prefer using the first element in the list when highlighting the active line
This also fixes a bug where scroll sync would stop working if you added lines to the doc. This was caused by `lineCount` getting out of sync as the document is being updated. I've removed this state and made the reveal logic more robust instead
* Fix scrolling of markdown preview.
* Use scrollDisabledCount.
* Stop initializing scrollDisabledCount.
* Make scrollTo enough large to occur scroll events.
* Should resolve when the error event occurs.