aboutsummaryrefslogtreecommitdiffhomepage
path: root/screen.cpp
diff options
context:
space:
mode:
authorGravatar d10n <david@bitinvert.com>2013-11-17 07:49:48 -0500
committerGravatar ridiculousfish <corydoras@ridiculousfish.com>2013-11-26 00:51:02 -0800
commit2813dcc6cc756f20548b4cfadfa2facd6c126f22 (patch)
tree9870d8fa7f6a1da77c98f1ff7fa71539577363f3 /screen.cpp
parent0a54558ee24f2375266bf6c3c33a12602b344e5b (diff)
On short prompts, commands wider than the terminal do not reposition to start on their own lines.
Diffstat (limited to 'screen.cpp')
-rw-r--r--screen.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/screen.cpp b/screen.cpp
index d02fc438..fdf462e2 100644
--- a/screen.cpp
+++ b/screen.cpp
@@ -1215,7 +1215,14 @@ static screen_layout_t compute_layout(screen_t *s,
result.left_prompt_space = left_prompt_width;
// See remark about for why we can't use the right prompt here
//result.right_prompt = right_prompt;
- result.prompts_get_own_line = true;
+
+ // If the command wraps, and the prompt is not short, place the command on its own line.
+ // A short prompt is 33% or less of the terminal's width.
+ const size_t prompt_percent_width = (100 * left_prompt_width) / screen_width;
+ if (left_prompt_width + first_command_line_width + 1 > screen_width && prompt_percent_width > 33) {
+ result.prompts_get_own_line = true;
+ }
+
done = true;
}