use tower_lsp::lsp_types::*;
use crate::subject_extraction::detect_access_operator;
use crate::types::*;
use crate::util::collapse_continuation_lines;
pub fn extract_completion_target(content: &str, position: Position) -> Option<CompletionTarget> {
let lines: Vec<&str> = content.lines().collect();
if position.line as usize >= lines.len() {
return None;
}
let (line, col) =
collapse_continuation_lines(&lines, position.line as usize, position.character as usize);
let chars: Vec<char> = line.chars().collect();
let (subject, access_kind) = detect_access_operator(&chars, col)?;
Some(CompletionTarget {
access_kind,
subject,
})
}