// Copyright (c) 2026 Storm Dragon // SPDX-License-Identifier: GPL-3.0-or-later package review import ( "strings" "git.stormux.org/storm/fenrir/internal/command" "git.stormux.org/storm/fenrir/internal/i18n" "git.stormux.org/storm/fenrir/internal/presentation" ) func (r *Review) spelling_text(scope command.ID, phonetic bool) string { var text string if r.tableMode && scope != command.CurrentLine { cells := r.current_table_cells() if len(cells) == 0 || r.tableColumn >= len(cells) { return i18n.T("no table data") } cell := cells[r.tableColumn] if scope == command.CurrentWord { // Spell the complete selected cell, excluding its spoken header. text = string(r.screen.Line(r.y)[cell.start:cell.end]) } else if cell.start != cell.end { first, last := min(cell.start, r.screen.Cols-1), min(cell.end-1, r.screen.Cols-1) if r.x < first || r.x > last { r.x = first } text = string(r.screen.Line(r.y)[r.x]) } } else { switch scope { case command.CurrentLine: text = r.screen.Text(r.y) case command.CurrentWord: text = r.raw_word() case command.CurrentChar: text = string(r.screen.Line(r.y)[r.x]) } } if strings.TrimSpace(text) == "" { r.result.Cue = presentation.Blank return i18n.T("blank") } r.result.Spelling = &presentation.Spelling{Text: text, Phonetic: phonetic} return text }