- Fix false positive when cursor is between two code blocks: the old
upward search couldn't distinguish closing fences from opening ones
- Fix nested fence support: closing fence must be >= opening fence
length per CommonMark spec; shorter inner fences are now treated
as content lines
- Extract detection logic to pure function detectCodeBlockFromLines
in src/codeBlockDetect.ts for testability
- Add 37 unit tests covering the bug scenario, nested fences,
unclosed blocks, all CodeBlockBehavior modes, and fence-line edges