@@ -94,7 +94,8 @@ impl Component for SignatureHelp {
94
94
}
95
95
96
96
fn render ( & mut self , area : Rect , surface : & mut Buffer , cx : & mut Context ) {
97
- let margin = Margin :: horizontal ( 1 ) ;
97
+ let margin = Margin :: all ( 1 ) ;
98
+ let area = area. inner ( margin) ;
98
99
99
100
let signature = self
100
101
. signatures
@@ -127,13 +128,15 @@ impl Component for SignatureHelp {
127
128
let signature_index = self . signature_index ( ) ;
128
129
let text = Text :: from ( signature_index) ;
129
130
let paragraph = Paragraph :: new ( & text) . alignment ( Alignment :: Right ) ;
130
- paragraph. render ( area. clip_top ( 1 ) . with_height ( 1 ) . clip_right ( 1 ) , surface) ;
131
+ paragraph. render ( area. with_height ( 1 ) . clip_right ( 1 ) , surface) ;
131
132
}
132
133
133
134
let ( _, sig_text_height) = crate :: ui:: text:: required_size ( & sig_text, area. width ) ;
134
- let sig_text_area = area. clip_top ( 1 ) . with_height ( sig_text_height) ;
135
- let sig_text_area = sig_text_area. inner ( margin) . intersection ( surface. area ) ;
136
- let sig_text_para = Paragraph :: new ( & sig_text) . wrap ( Wrap { trim : false } ) ;
135
+ let sig_text_area = area. with_height ( sig_text_height. min ( area. height ) ) ;
136
+ let sig_text_area = sig_text_area. intersection ( surface. area ) ;
137
+ let sig_text_para = Paragraph :: new ( & sig_text)
138
+ . wrap ( Wrap { trim : false } )
139
+ . scroll ( ( cx. scroll . unwrap_or_default ( ) as u16 , 0 ) ) ;
137
140
sig_text_para. render ( sig_text_area, surface) ;
138
141
139
142
if signature. signature_doc . is_none ( ) {
@@ -159,7 +162,7 @@ impl Component for SignatureHelp {
159
162
let sig_doc_para = Paragraph :: new ( & sig_doc)
160
163
. wrap ( Wrap { trim : false } )
161
164
. scroll ( ( cx. scroll . unwrap_or_default ( ) as u16 , 0 ) ) ;
162
- sig_doc_para. render ( sig_doc_area. inner ( margin ) , surface) ;
165
+ sig_doc_para. render ( sig_doc_area, surface) ;
163
166
}
164
167
165
168
fn required_size ( & mut self , viewport : ( u16 , u16 ) ) -> Option < ( u16 , u16 ) > {
@@ -196,6 +199,8 @@ impl Component for SignatureHelp {
196
199
}
197
200
None => ( sig_width, sig_height) ,
198
201
} ;
202
+ let sig_text_para = Paragraph :: new ( & signature_text) . wrap ( Wrap { trim : false } ) ;
203
+ let height = height. max ( sig_text_para. line_count ( max_text_width) ) ;
199
204
200
205
let sig_index_width = if self . signatures . len ( ) > 1 {
201
206
self . signature_index ( ) . len ( ) + 1
0 commit comments