@ -4210,16 +4210,23 @@ pub fn completion(cx: &mut Context) {
let ( view , doc ) = current ! ( cx . editor ) ;
let ( view , doc ) = current ! ( cx . editor ) ;
let savepoint = if let Some ( CompleteAction ::Selected { savepoint } ) = & cx . editor . last_completion
{
savepoint . clone ( )
} else {
doc . savepoint ( view )
} ;
let language_server = match doc . language_server ( ) {
let language_server = match doc . language_server ( ) {
Some ( language_server ) = > language_server ,
Some ( language_server ) = > language_server ,
None = > return ,
None = > return ,
} ;
} ;
let offset_encoding = language_server . offset_encoding ( ) ;
let offset_encoding = language_server . offset_encoding ( ) ;
let text = doc . text ( ) . slice ( .. ) ;
let text = savepoint. text . clone ( ) ;
let cursor = doc. selection ( view . id ) . primary ( ) . cursor ( text ) ;
let cursor = savepoint. cursor ( ) ;
let pos = pos_to_lsp_pos ( doc . text ( ) , cursor , offset_encoding ) ;
let pos = pos_to_lsp_pos ( & text , cursor , offset_encoding ) ;
let future = match language_server . completion ( doc . identifier ( ) , pos , None ) {
let future = match language_server . completion ( doc . identifier ( ) , pos , None ) {
Some ( future ) = > future ,
Some ( future ) = > future ,
@ -4254,12 +4261,6 @@ pub fn completion(cx: &mut Context) {
iter . reverse ( ) ;
iter . reverse ( ) ;
let offset = iter . take_while ( | ch | chars ::char_is_word ( * ch ) ) . count ( ) ;
let offset = iter . take_while ( | ch | chars ::char_is_word ( * ch ) ) . count ( ) ;
let start_offset = cursor . saturating_sub ( offset ) ;
let start_offset = cursor . saturating_sub ( offset ) ;
let savepoint = if let Some ( CompleteAction ::Selected { savepoint } ) = & cx . editor . last_completion
{
savepoint . clone ( )
} else {
doc . savepoint ( view )
} ;
let trigger_doc = doc . id ( ) ;
let trigger_doc = doc . id ( ) ;
let trigger_view = view . id ;
let trigger_view = view . id ;