# File typeprof-0.21.2/lib/typeprof/lsp.rb, line 159 def code_complete(loc, trigger_kind) case loc in { line: row, character: col } end unless row < @text.lines.length && col >= 1 && @text.lines[row][0, col] =~ /\.\w*$/ return nil end start_offset = $~.begin(0) end_offset = $&.size case trigger_kind when LSP::CompletionTriggerKind::TRIGGER_FOR_INCOMPLETE_COMPLETIONS unless @current_completion_session&.reusable?(row, start_offset) puts "no reusable completion session but got TRIGGER_FOR_INCOMPLETE_COMPLETIONS" @current_completion_session = new_code_completion_session(row, start_offset, end_offset) end return @current_completion_session.results else @current_completion_session = new_code_completion_session(row, start_offset, end_offset) return @current_completion_session&.results end end
# File typeprof-0.21.2/lib/typeprof/lsp.rb, line 141 def new_code_completion_session(row, start_offset, end_offset) lines = @text.lines lines[row][start_offset, end_offset] = ".__typeprof_lsp_completion" tmp_text = lines.join res, = analyze(@uri, tmp_text) if res && res[:completion] results = res[:completion].keys.map do |name| { label: name, kind: 2, # Method } end return CompletionSession.new(results, row, start_offset) else nil end end