@@ -26,13 +26,12 @@ use syntax::{
26
26
use crate :: {
27
27
doc_links:: { remove_links, rewrite_links} ,
28
28
hover:: walk_and_push_ty,
29
- markdown_remove:: remove_markdown,
30
29
HoverAction , HoverConfig , HoverResult , Markup ,
31
30
} ;
32
31
33
32
pub ( super ) fn type_info (
34
33
sema : & Semantics < ' _ , RootDatabase > ,
35
- config : & HoverConfig ,
34
+ _config : & HoverConfig ,
36
35
expr_or_pat : & Either < ast:: Expr , ast:: Pat > ,
37
36
) -> Option < HoverResult > {
38
37
let TypeInfo { original, adjusted } = match expr_or_pat {
@@ -55,27 +54,23 @@ pub(super) fn type_info(
55
54
let adjusted = adjusted_ty. display ( sema. db ) . to_string ( ) ;
56
55
let static_text_diff_len = "Coerced to: " . len ( ) - "Type: " . len ( ) ;
57
56
format ! (
58
- "{bt_start}Type : {:>apad$}\n Coerced to: {:>opad$}\n {bt_end} " ,
57
+ "```text \n Type : {:>apad$}\n Coerced to: {:>opad$}\n ``` \n " ,
59
58
original,
60
59
adjusted,
61
60
apad = static_text_diff_len + adjusted. len( ) . max( original. len( ) ) ,
62
61
opad = original. len( ) ,
63
- bt_start = if config. markdown( ) { "```text\n " } else { "" } ,
64
- bt_end = if config. markdown( ) { "```\n " } else { "" }
65
62
)
66
63
. into ( )
67
- } else if config. markdown ( ) {
68
- Markup :: fenced_block ( & original. display ( sema. db ) )
69
64
} else {
70
- original. display ( sema. db ) . to_string ( ) . into ( )
65
+ Markup :: fenced_block ( & original. display ( sema. db ) )
71
66
} ;
72
67
res. actions . push ( HoverAction :: goto_type_from_targets ( sema. db , targets) ) ;
73
68
Some ( res)
74
69
}
75
70
76
71
pub ( super ) fn try_expr (
77
72
sema : & Semantics < ' _ , RootDatabase > ,
78
- config : & HoverConfig ,
73
+ _config : & HoverConfig ,
79
74
try_expr : & ast:: TryExpr ,
80
75
) -> Option < HoverResult > {
81
76
let inner_ty = sema. type_of_expr ( & try_expr. expr ( ) ?) ?. original ;
@@ -151,22 +146,20 @@ pub(super) fn try_expr(
151
146
let ppad = static_text_len_diff. min ( 0 ) . abs ( ) as usize ;
152
147
153
148
res. markup = format ! (
154
- "{bt_start}{} Type: {:>pad0$}\n Propagated as: {:>pad1$}\n {bt_end} " ,
149
+ "```text \n {} Type: {:>pad0$}\n Propagated as: {:>pad1$}\n ``` \n " ,
155
150
s,
156
151
inner_ty,
157
152
body_ty,
158
153
pad0 = ty_len_max + tpad,
159
154
pad1 = ty_len_max + ppad,
160
- bt_start = if config. markdown( ) { "```text\n " } else { "" } ,
161
- bt_end = if config. markdown( ) { "```\n " } else { "" }
162
155
)
163
156
. into ( ) ;
164
157
Some ( res)
165
158
}
166
159
167
160
pub ( super ) fn deref_expr (
168
161
sema : & Semantics < ' _ , RootDatabase > ,
169
- config : & HoverConfig ,
162
+ _config : & HoverConfig ,
170
163
deref_expr : & ast:: PrefixExpr ,
171
164
) -> Option < HoverResult > {
172
165
let inner_ty = sema. type_of_expr ( & deref_expr. expr ( ) ?) ?. original ;
@@ -195,15 +188,13 @@ pub(super) fn deref_expr(
195
188
. max ( adjusted. len ( ) + coerced_len)
196
189
. max ( inner. len ( ) + deref_len) ;
197
190
format ! (
198
- "{bt_start}Dereferenced from: {:>ipad$}\n To type: {:>apad$}\n Coerced to: {:>opad$}\n {bt_end} " ,
191
+ "```text \n Dereferenced from: {:>ipad$}\n To type: {:>apad$}\n Coerced to: {:>opad$}\n ``` \n " ,
199
192
inner,
200
193
original,
201
194
adjusted,
202
195
ipad = max_len - deref_len,
203
196
apad = max_len - type_len,
204
197
opad = max_len - coerced_len,
205
- bt_start = if config. markdown( ) { "```text\n " } else { "" } ,
206
- bt_end = if config. markdown( ) { "```\n " } else { "" }
207
198
)
208
199
. into ( )
209
200
} else {
@@ -213,13 +204,11 @@ pub(super) fn deref_expr(
213
204
let deref_len = "Dereferenced from: " . len ( ) ;
214
205
let max_len = ( original. len ( ) + type_len) . max ( inner. len ( ) + deref_len) ;
215
206
format ! (
216
- "{bt_start}Dereferenced from: {:>ipad$}\n To type: {:>apad$}\n {bt_end} " ,
207
+ "```text \n Dereferenced from: {:>ipad$}\n To type: {:>apad$}\n ``` \n " ,
217
208
inner,
218
209
original,
219
210
ipad = max_len - deref_len,
220
211
apad = max_len - type_len,
221
- bt_start = if config. markdown( ) { "```text\n " } else { "" } ,
222
- bt_end = if config. markdown( ) { "```\n " } else { "" }
223
212
)
224
213
. into ( )
225
214
} ;
@@ -233,7 +222,7 @@ pub(super) fn keyword(
233
222
config : & HoverConfig ,
234
223
token : & SyntaxToken ,
235
224
) -> Option < HoverResult > {
236
- if !token. kind ( ) . is_keyword ( ) || !config. documentation . is_some ( ) || !config. keywords {
225
+ if !token. kind ( ) . is_keyword ( ) || !config. documentation || !config. keywords {
237
226
return None ;
238
227
}
239
228
let parent = token. parent ( ) ?;
@@ -257,7 +246,7 @@ pub(super) fn keyword(
257
246
/// i.e. `let S {a, ..} = S {a: 1, b: 2}`
258
247
pub ( super ) fn struct_rest_pat (
259
248
sema : & Semantics < ' _ , RootDatabase > ,
260
- config : & HoverConfig ,
249
+ _config : & HoverConfig ,
261
250
pattern : & RecordPat ,
262
251
) -> HoverResult {
263
252
let missing_fields = sema. record_pattern_missing_fields ( pattern) ;
@@ -286,11 +275,7 @@ pub(super) fn struct_rest_pat(
286
275
// get rid of trailing comma
287
276
s. truncate ( s. len ( ) - 2 ) ;
288
277
289
- if config. markdown ( ) {
290
- Markup :: fenced_block ( & s)
291
- } else {
292
- s. into ( )
293
- }
278
+ Markup :: fenced_block ( & s)
294
279
} ;
295
280
res. actions . push ( HoverAction :: goto_type_from_targets ( sema. db , targets) ) ;
296
281
res
@@ -344,13 +329,8 @@ pub(super) fn process_markup(
344
329
config : & HoverConfig ,
345
330
) -> Markup {
346
331
let markup = markup. as_str ( ) ;
347
- let markup = if !config. markdown ( ) {
348
- remove_markdown ( markup)
349
- } else if config. links_in_hover {
350
- rewrite_links ( db, markup, def)
351
- } else {
352
- remove_links ( markup)
353
- } ;
332
+ let markup =
333
+ if config. links_in_hover { rewrite_links ( db, markup, def) } else { remove_links ( markup) } ;
354
334
Markup :: from ( markup)
355
335
}
356
336
@@ -463,19 +443,18 @@ pub(super) fn definition(
463
443
Definition :: DeriveHelper ( it) => ( format ! ( "derive_helper {}" , it. name( db) ) , None ) ,
464
444
} ;
465
445
466
- let docs = match config. documentation {
467
- Some ( _) => docs. or_else ( || {
446
+ let docs = docs
447
+ . filter ( |_| config. documentation )
448
+ . or_else ( || {
468
449
// docs are missing, for assoc items of trait impls try to fall back to the docs of the
469
450
// original item of the trait
470
451
let assoc = def. as_assoc_item ( db) ?;
471
452
let trait_ = assoc. containing_trait_impl ( db) ?;
472
453
let name = Some ( assoc. name ( db) ?) ;
473
454
let item = trait_. items ( db) . into_iter ( ) . find ( |it| it. name ( db) == name) ?;
474
455
item. docs ( db)
475
- } ) ,
476
- None => None ,
477
- } ;
478
- let docs = docs. filter ( |_| config. documentation . is_some ( ) ) . map ( Into :: into) ;
456
+ } )
457
+ . map ( Into :: into) ;
479
458
markup ( docs, label, mod_path)
480
459
}
481
460
0 commit comments