@@ -184,26 +184,26 @@ void Term::print_left_curly_bracket(Term::Window& scr, const std::size_t& x, con
184184 }
185185}
186186
187- void Term::render (Term::Window& scr, const Model& m , const std::size_t & cols)
187+ void Term::render (Term::Window& scr, const Model& model , const std::size_t & cols)
188188{
189189 scr.clear ();
190- print_left_curly_bracket (scr, cols, 1 , m .lines .size ());
191- scr.print_str (cols - 6 , m .lines .size (), std::to_string (m .cursor_row ) + " ," + std::to_string (m .cursor_col ));
192- for (std::size_t j = 0 ; j < m .lines .size (); j++)
190+ print_left_curly_bracket (scr, cols, 1 , model .lines .size ());
191+ scr.print_str (cols - 6 , model .lines .size (), std::to_string (model .cursor_row ) + " ," + std::to_string (model .cursor_col ));
192+ for (std::size_t j = 0 ; j < model .lines .size (); j++)
193193 {
194194 if (j == 0 )
195195 {
196- scr.fill_fg (1 , j + 1 , m .prompt_string .size (), m .lines .size (), Term::Color::Name::Green);
197- scr.fill_style (1 , j + 1 , m .prompt_string .size (), m .lines .size (), Term::Style::Bold);
198- scr.print_str (1 , j + 1 , m .prompt_string );
196+ scr.fill_fg (1 , j + 1 , model .prompt_string .size (), model .lines .size (), Term::Color::Name::Green);
197+ scr.fill_style (1 , j + 1 , model .prompt_string .size (), model .lines .size (), Term::Style::Bold);
198+ scr.print_str (1 , j + 1 , model .prompt_string );
199199 }
200200 else
201201 {
202- for (std::size_t i = 0 ; i < m .prompt_string .size () - 1 ; i++) { scr.set_char (i + 1 , j + 1 , ' .' ); }
202+ for (std::size_t i = 0 ; i < model .prompt_string .size () - 1 ; i++) { scr.set_char (i + 1 , j + 1 , ' .' ); }
203203 }
204- scr.print_str (m .prompt_string .size () + 1 , j + 1 , m .lines [j]);
204+ scr.print_str (model .prompt_string .size () + 1 , j + 1 , model .lines [j]);
205205 }
206- scr.set_cursor_pos (m .prompt_string .size () + m .cursor_col , m .cursor_row );
206+ scr.set_cursor_pos (model .prompt_string .size () + model .cursor_col , model .cursor_row );
207207}
208208
209209std::string Term::prompt_multiline (const std::string& prompt_string, std::vector<std::string>& m_history, std::function<bool (std::string)>& iscomplete)
@@ -217,18 +217,18 @@ std::string Term::prompt_multiline(const std::string& prompt_string, std::vector
217217 screen = screen_size ();
218218 }
219219
220- Model m ;
221- m .prompt_string = prompt_string;
220+ Model model ;
221+ model .prompt_string = prompt_string;
222222
223223 // Make a local copy of history that can be modified by the user. All
224224 // changes will be forgotten once a command is submitted.
225225 std::vector<std::string> history = m_history;
226226 std::size_t history_pos = history.size ();
227- history.push_back (concat (m .lines )); // Push back empty input
227+ history.push_back (concat (model .lines )); // Push back empty input
228228
229229 Term::Window scr (screen.columns (), 1 );
230230 Term::Key key;
231- render (scr, m , screen.columns ());
231+ render (scr, model , screen.columns ());
232232 std::cout << scr.render (1 , cursor.row (), term_attached) << std::flush;
233233 bool not_complete = true ;
234234 while (not_complete)
@@ -237,123 +237,123 @@ std::string Term::prompt_multiline(const std::string& prompt_string, std::vector
237237 if (key == Term::Key::NoKey) continue ;
238238 if (key.isprint ())
239239 {
240- std::string before = m .lines [m .cursor_row - 1 ].substr (0 , m .cursor_col - 1 );
240+ std::string before = model .lines [model .cursor_row - 1 ].substr (0 , model .cursor_col - 1 );
241241 std::string newchar;
242242 newchar.push_back (static_cast <char >(key));
243- std::string after = m .lines [m .cursor_row - 1 ].substr (m .cursor_col - 1 );
244- m .lines [m .cursor_row - 1 ] = before += newchar += after;
245- m .cursor_col ++;
243+ std::string after = model .lines [model .cursor_row - 1 ].substr (model .cursor_col - 1 );
244+ model .lines [model .cursor_row - 1 ] = before += newchar += after;
245+ model .cursor_col ++;
246246 }
247247 else if (key == Key::Ctrl_D)
248248 {
249- if (m .lines .size () == 1 && m .lines [m .cursor_row - 1 ].empty ())
249+ if (model .lines .size () == 1 && model .lines [model .cursor_row - 1 ].empty ())
250250 {
251- m .lines [m .cursor_row - 1 ].push_back (static_cast <char >(Key::Ctrl_D));
251+ model .lines [model .cursor_row - 1 ].push_back (static_cast <char >(Key::Ctrl_D));
252252 std::cout << " \n " << std::flush;
253- m_history.push_back (m .lines [0 ]);
254- return m .lines [0 ];
253+ m_history.push_back (model .lines [0 ]);
254+ return model .lines [0 ];
255255 }
256256 }
257257 else
258258 {
259259 switch (key)
260260 {
261261 case Key::Enter:
262- not_complete = !iscomplete (concat (m .lines ));
262+ not_complete = !iscomplete (concat (model .lines ));
263263 if (not_complete) key = Key (static_cast <Term::Key>(Term::MetaKey::Value::Alt + Term::Key::Enter));
264264 else
265265 break ;
266266 CPP_TERMINAL_FALLTHROUGH;
267267 case Key::Backspace:
268- if (m .cursor_col > 1 )
268+ if (model .cursor_col > 1 )
269269 {
270- std::string before = m .lines [m .cursor_row - 1 ].substr (0 , m .cursor_col - 2 );
271- std::string after = m .lines [m .cursor_row - 1 ].substr (m .cursor_col - 1 );
272- m .lines [m .cursor_row - 1 ] = before + after;
273- m .cursor_col --;
270+ std::string before = model .lines [model .cursor_row - 1 ].substr (0 , model .cursor_col - 2 );
271+ std::string after = model .lines [model .cursor_row - 1 ].substr (model .cursor_col - 1 );
272+ model .lines [model .cursor_row - 1 ] = before + after;
273+ model .cursor_col --;
274274 }
275- else if (m .cursor_col == 1 && m .cursor_row > 1 )
275+ else if (model .cursor_col == 1 && model .cursor_row > 1 )
276276 {
277- m .cursor_col = m .lines [m .cursor_row - 2 ].size () + 1 ;
278- m .lines [m .cursor_row - 2 ] += m .lines [m .cursor_row - 1 ];
279- m .lines .erase (m .lines .begin () + static_cast <long >(m .cursor_row ) - 1 );
280- m .cursor_row --;
277+ model .cursor_col = model .lines [model .cursor_row - 2 ].size () + 1 ;
278+ model .lines [model .cursor_row - 2 ] += model .lines [model .cursor_row - 1 ];
279+ model .lines .erase (model .lines .begin () + static_cast <long >(model .cursor_row ) - 1 );
280+ model .cursor_row --;
281281 }
282282 break ;
283283 case Key::Del:
284- if (m .cursor_col <= m .lines [m .cursor_row - 1 ].size ())
284+ if (model .cursor_col <= model .lines [model .cursor_row - 1 ].size ())
285285 {
286- std::string before = m .lines [m .cursor_row - 1 ].substr (0 , m .cursor_col - 1 );
287- std::string after = m .lines [m .cursor_row - 1 ].substr (m .cursor_col );
288- m .lines [m .cursor_row - 1 ] = before + after;
286+ std::string before = model .lines [model .cursor_row - 1 ].substr (0 , model .cursor_col - 1 );
287+ std::string after = model .lines [model .cursor_row - 1 ].substr (model .cursor_col );
288+ model .lines [model .cursor_row - 1 ] = before + after;
289289 }
290290 break ;
291291 case Key::ArrowLeft:
292- if (m .cursor_col > 1 ) { m .cursor_col --; }
292+ if (model .cursor_col > 1 ) { model .cursor_col --; }
293293 break ;
294294 case Key::ArrowRight:
295- if (m .cursor_col <= m .lines [m .cursor_row - 1 ].size ()) { m .cursor_col ++; }
295+ if (model .cursor_col <= model .lines [model .cursor_row - 1 ].size ()) { model .cursor_col ++; }
296296 break ;
297- case Key::Home: m .cursor_col = 1 ; break ;
298- case Key::End: m .cursor_col = m .lines [m .cursor_row - 1 ].size () + 1 ; break ;
297+ case Key::Home: model .cursor_col = 1 ; break ;
298+ case Key::End: model .cursor_col = model .lines [model .cursor_row - 1 ].size () + 1 ; break ;
299299 case Key::ArrowUp:
300- if (m .cursor_row == 1 )
300+ if (model .cursor_row == 1 )
301301 {
302302 if (history_pos > 0 )
303303 {
304- history[history_pos] = concat (m .lines );
304+ history[history_pos] = concat (model .lines );
305305 history_pos--;
306- m .lines = split (history[history_pos]);
307- m .cursor_row = m .lines .size ();
308- if (m .cursor_col > m .lines [m .cursor_row - 1 ].size () + 1 ) { m .cursor_col = m .lines [m .cursor_row - 1 ].size () + 1 ; }
309- if (m .lines .size () > scr.get_h ()) { scr.set_h (m .lines .size ()); }
306+ model .lines = split (history[history_pos]);
307+ model .cursor_row = model .lines .size ();
308+ if (model .cursor_col > model .lines [model .cursor_row - 1 ].size () + 1 ) { model .cursor_col = model .lines [model .cursor_row - 1 ].size () + 1 ; }
309+ if (model .lines .size () > scr.get_h ()) { scr.set_h (model .lines .size ()); }
310310 }
311311 }
312312 else
313313 {
314- m .cursor_row --;
315- if (m .cursor_col > m .lines [m .cursor_row - 1 ].size () + 1 ) { m .cursor_col = m .lines [m .cursor_row - 1 ].size () + 1 ; }
314+ model .cursor_row --;
315+ if (model .cursor_col > model .lines [model .cursor_row - 1 ].size () + 1 ) { model .cursor_col = model .lines [model .cursor_row - 1 ].size () + 1 ; }
316316 }
317317 break ;
318318 case Key::ArrowDown:
319- if (m .cursor_row == m .lines .size ())
319+ if (model .cursor_row == model .lines .size ())
320320 {
321321 if (history_pos < history.size () - 1 )
322322 {
323- history[history_pos] = concat (m .lines );
323+ history[history_pos] = concat (model .lines );
324324 history_pos++;
325- m .lines = split (history[history_pos]);
326- m .cursor_row = 1 ;
327- if (m .cursor_col > m .lines [m .cursor_row - 1 ].size () + 1 ) { m .cursor_col = m .lines [m .cursor_row - 1 ].size () + 1 ; }
328- if (m .lines .size () > scr.get_h ()) { scr.set_h (m .lines .size ()); }
325+ model .lines = split (history[history_pos]);
326+ model .cursor_row = 1 ;
327+ if (model .cursor_col > model .lines [model .cursor_row - 1 ].size () + 1 ) { model .cursor_col = model .lines [model .cursor_row - 1 ].size () + 1 ; }
328+ if (model .lines .size () > scr.get_h ()) { scr.set_h (model .lines .size ()); }
329329 }
330330 }
331331 else
332332 {
333- m .cursor_row ++;
334- if (m .cursor_col > m .lines [m .cursor_row - 1 ].size () + 1 ) { m .cursor_col = m .lines [m .cursor_row - 1 ].size () + 1 ; }
333+ model .cursor_row ++;
334+ if (model .cursor_col > model .lines [model .cursor_row - 1 ].size () + 1 ) { model .cursor_col = model .lines [model .cursor_row - 1 ].size () + 1 ; }
335335 }
336336 break ;
337337 case Key::Ctrl_N:
338338 {
339- std::string before = m .lines [m .cursor_row - 1 ].substr (0 , m .cursor_col - 1 );
340- std::string after = m .lines [m .cursor_row - 1 ].substr (m .cursor_col - 1 );
341- m .lines [m .cursor_row - 1 ] = before;
342- if (m .cursor_row < m .lines .size ())
339+ std::string before = model .lines [model .cursor_row - 1 ].substr (0 , model .cursor_col - 1 );
340+ std::string after = model .lines [model .cursor_row - 1 ].substr (model .cursor_col - 1 );
341+ model .lines [model .cursor_row - 1 ] = before;
342+ if (model .cursor_row < model .lines .size ())
343343 {
344344 // Not at the bottom row, can't push back
345- m .lines .insert (m .lines .begin () + static_cast <long >(m .cursor_row ), after);
345+ model .lines .insert (model .lines .begin () + static_cast <long >(model .cursor_row ), after);
346346 }
347- else { m .lines .push_back (after); }
348- m .cursor_col = 1 ;
349- m .cursor_row ++;
350- if (m .lines .size () > scr.get_h ()) { scr.set_h (m .lines .size ()); }
347+ else { model .lines .push_back (after); }
348+ model .cursor_col = 1 ;
349+ model .cursor_row ++;
350+ if (model .lines .size () > scr.get_h ()) { scr.set_h (model .lines .size ()); }
351351 break ;
352352 }
353353 default : break ;
354354 }
355355 }
356- render (scr, m , screen.columns ());
356+ render (scr, model , screen.columns ());
357357 std::cout << scr.render (1 , cursor.row (), term_attached) << std::flush;
358358 if (cursor.row () + (int )scr.get_h () - 1 > screen.rows ())
359359 {
@@ -362,8 +362,8 @@ std::string Term::prompt_multiline(const std::string& prompt_string, std::vector
362362 }
363363 }
364364 std::string line_skips;
365- for (std::size_t i = 0 ; i <= m .lines .size () - m .cursor_row ; i++) { line_skips += " \n " ; }
365+ for (std::size_t i = 0 ; i <= model .lines .size () - model .cursor_row ; i++) { line_skips += " \n " ; }
366366 std::cout << line_skips << std::flush;
367- m_history.push_back (concat (m .lines ));
368- return concat (m .lines );
367+ m_history.push_back (concat (model .lines ));
368+ return concat (model .lines );
369369}
0 commit comments