@@ -845,7 +845,7 @@ pub use server::run_language_server;
845845
846846#[ cfg( feature = "lsp" ) ]
847847mod server {
848- use std:: { char:: decode_utf16, env:: current_dir, path:: Path , sync:: Arc } ;
848+ use std:: { char:: decode_utf16, env:: current_dir, fmt :: Write , path:: Path , sync:: Arc } ;
849849
850850 use dashmap:: DashMap ;
851851 use tower_lsp:: {
@@ -1127,7 +1127,7 @@ mod server {
11271127 span. as_str ( & doc. asm . inputs , |s| value. push_str ( s) ) ;
11281128 match docs. kind {
11291129 BindingDocsKind :: Function { sig, .. } => {
1130- value . push_str ( & format ! ( " {sig}" ) ) ;
1130+ write ! ( value , " {sig}" ) . ok ( ) ;
11311131 }
11321132 _ => { }
11331133 }
@@ -1148,7 +1148,7 @@ mod server {
11481148 }
11491149 value. push_str ( "\n ```" ) ;
11501150 if let Some ( escape) = & docs. escape {
1151- value . push_str ( & format ! ( "\n `{escape}`" ) ) ;
1151+ write ! ( value , "\n `{escape}`" ) . ok ( ) ;
11521152 }
11531153 match docs. kind {
11541154 BindingDocsKind :: Function {
@@ -2435,20 +2435,21 @@ mod server {
24352435
24362436 fn doc_frag_markdown ( md : & mut String , frag : & PrimDocFragment ) {
24372437 match frag {
2438- PrimDocFragment :: Text ( text) => md . push_str ( text) ,
2439- PrimDocFragment :: Code ( text) => md . push_str ( & format ! ( "`{text}`" ) ) ,
2440- PrimDocFragment :: Emphasis ( text) => md . push_str ( & format ! ( "*{text}*" ) ) ,
2441- PrimDocFragment :: Strong ( text) => md . push_str ( & format ! ( "**{text}**" ) ) ,
2442- PrimDocFragment :: Link { text, url } => md . push_str ( & format ! ( "[{text}]({url})" ) ) ,
2438+ PrimDocFragment :: Text ( text) => write ! ( md , "{ text}" ) ,
2439+ PrimDocFragment :: Code ( text) => write ! ( md , "`{text}`" ) ,
2440+ PrimDocFragment :: Emphasis ( text) => write ! ( md , "*{text}*" ) ,
2441+ PrimDocFragment :: Strong ( text) => write ! ( md , "**{text}**" ) ,
2442+ PrimDocFragment :: Link { text, url } => write ! ( md , "[{text}]({url})" ) ,
24432443 PrimDocFragment :: Primitive { prim, named } => {
24442444 let text = if * named {
24452445 format ! ( "`{}`" , prim. format( ) )
24462446 } else {
24472447 prim. to_string ( )
24482448 } ;
2449- md . push_str ( & format ! ( "[{text }](https://uiua.org/docs/{})" , prim. name( ) ) )
2449+ write ! ( md , "[{}](https://uiua.org/docs/{})" , text , prim. name( ) )
24502450 }
24512451 }
2452+ . ok ( ) ;
24522453 }
24532454
24542455 fn full_prim_doc_markdown ( prim : Primitive ) -> String {
@@ -2459,12 +2460,12 @@ mod server {
24592460 for frag in & doc. short {
24602461 doc_frag_markdown ( & mut value, frag) ;
24612462 }
2462- value . push_str ( " \n \n " ) ;
2463- value. push_str ( & format ! (
2464- "[Documentation](https://uiua.org/docs/{})" ,
2463+ write ! (
2464+ value,
2465+ "\n \n [Documentation](https://uiua.org/docs/{})\n \n " ,
24652466 prim. name( )
2466- ) ) ;
2467- value . push_str ( " \n \n " ) ;
2467+ )
2468+ . ok ( ) ;
24682469 for line in & doc. lines {
24692470 match line {
24702471 PrimDocLine :: Text ( frags) => {
@@ -2474,22 +2475,26 @@ mod server {
24742475 value. push ( '\n' ) ;
24752476 }
24762477 PrimDocLine :: Example ( ex) => {
2477- value. push_str ( & format ! (
2478+ write ! (
2479+ value,
24782480 "\
24792481 ```uiua
24802482{}
24812483```
24822484> ```
24832485" ,
24842486 ex. input( )
2485- ) ) ;
2487+ )
2488+ . ok ( ) ;
24862489 match ex. output_strings ( ) {
24872490 Ok ( lines) => {
24882491 for line in lines. iter ( ) . flat_map ( |l| l. lines ( ) ) {
2489- value . push_str ( & format ! ( "> {line}\n " ) ) ;
2492+ writeln ! ( value , "> {line}" ) . ok ( ) ;
24902493 }
24912494 }
2492- Err ( err) => value. push_str ( & format ! ( "> Error: {err}\n " ) ) ,
2495+ Err ( err) => {
2496+ writeln ! ( value, "> Error: {err}" ) . ok ( ) ;
2497+ }
24932498 }
24942499 value. push_str ( "> ```\n \n " ) ;
24952500 }
0 commit comments