aboutsummaryrefslogtreecommitdiffstats
path: root/editor.cpp
diff options
context:
space:
mode:
authorJan Tuomi <jan-sebastian.tuomi@aalto.fi>2016-10-09 14:35:59 +0300
committerJan Tuomi <jan-sebastian.tuomi@aalto.fi>2016-10-09 14:50:24 +0300
commit812f3f69c854a5376dc0d123c4e545cf67c8690c (patch)
treec1005667afa8c79ef7e358a8ac3aadf9ed07709c /editor.cpp
parentda5ecb5de0ca0bc099258f7b77480fbb28b31392 (diff)
Fix printing issues
Diffstat (limited to 'editor.cpp')
-rw-r--r--editor.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/editor.cpp b/editor.cpp
index f8c8ade..ff12c9e 100644
--- a/editor.cpp
+++ b/editor.cpp
@@ -3,6 +3,7 @@
#include <fstream>
#include <limits>
#include <iostream>
+#include <iomanip>
Editor::Editor(std::vector<std::string>* contents, const std::string& filename):
m_current_line(0), m_filename(filename), m_stopped(false) {
@@ -48,14 +49,21 @@ int Editor::run_editor() {
}
int Editor::print_contents_on_line(int line) const {
+ Utils::clear_screen();
+
int output_length = m_contents->size();
bool truncated = false;
- if ((int) m_contents->size() > line + OUTPUT_LINE_MAX) {
- output_length = line + OUTPUT_LINE_MAX;
+ int line_max = Utils::window_height() - 3;
+
+ int line_number_width = Utils::count_digits(m_contents->size());
+
+ if ((int) m_contents->size() > line + line_max) {
+ output_length = line + line_max;
truncated = true;
}
for (int i = line; i < output_length; i++) {
- std::cout << i << " " << m_contents->at(i) << '\n';
+ std::cout << std::setw(line_number_width) << i;
+ std::cout << " " << m_contents->at(i) << '\n';
}
if (truncated) {
std::cout << "...\n";