snapCursorOutOfChip snaps a cursor sitting strictly inside a chip to the nearer boundary. Returns the (possibly adjusted) offset so callers skip a second cursorRuneOffset read.
()
| 146 | // nearer boundary. Returns the (possibly adjusted) offset so callers skip a |
| 147 | // second cursorRuneOffset read. |
| 148 | func (p *promptInput) snapCursorOutOfChip() int { |
| 149 | cur := p.cursorRuneOffset() |
| 150 | for _, chip := range p.spans { |
| 151 | if cur > chip.start && cur < chip.end { |
| 152 | target := chip.end |
| 153 | if cur-chip.start < chip.end-cur { |
| 154 | target = chip.start |
| 155 | } |
| 156 | p.setCursorRuneOffset(target) |
| 157 | return target |
| 158 | } |
| 159 | } |
| 160 | return cur |
| 161 | } |
| 162 | |
| 163 | // chipAtBoundary returns the chip whose start (atStart=true) or end |
| 164 | // (atStart=false) coincides with cur, the check Backspace/Delete/Left/Right share. |
no test coverage detected