mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
term: get_terminal_size()
This commit is contained in:
parent
08d3401092
commit
78c96fe989
@ -95,7 +95,7 @@ pub fn (ts mut TestSession) test() {
|
||||
}
|
||||
ts.waitgroup.wait()
|
||||
ts.benchmark.stop()
|
||||
eprintln(term.h_divider())
|
||||
eprintln(term.h_divider('-'))
|
||||
}
|
||||
|
||||
|
||||
@ -258,7 +258,7 @@ pub fn building_any_v_binaries_failed() bool {
|
||||
eprintln(bmark.step_message_ok('command: ${cmd}'))
|
||||
}
|
||||
bmark.stop()
|
||||
eprintln(term.h_divider())
|
||||
eprintln(term.h_divider('-'))
|
||||
eprintln(bmark.total_message('building v binaries'))
|
||||
return failed
|
||||
}
|
||||
|
@ -36,7 +36,7 @@ enum Action {
|
||||
|
||||
fn C.tcgetattr() int
|
||||
fn C.tcsetattr() int
|
||||
fn C.ioctl() int
|
||||
//fn C.ioctl() int
|
||||
fn C.raise()
|
||||
|
||||
// Toggle raw mode of the terminal by changing its attributes
|
||||
|
@ -26,18 +26,3 @@ pub fn ok_message(s string) string {
|
||||
pub fn fail_message(s string) string {
|
||||
return if can_show_color_on_stdout() { red(s) } else { s }
|
||||
}
|
||||
|
||||
// h_divider will return a horizontal divider line with a dynamic width,
|
||||
// that depends on the current terminal settings
|
||||
pub fn h_divider() string {
|
||||
mut cols := 76
|
||||
if term_size := os.exec('stty size') {
|
||||
if term_size.exit_code == 0 {
|
||||
term_cols := term_size.output.split(' ')[1].int()
|
||||
if term_cols > 0 {
|
||||
cols = term_cols
|
||||
}
|
||||
}
|
||||
}
|
||||
return '-'.repeat(cols)
|
||||
}
|
||||
|
15
vlib/term/misc.v
Normal file
15
vlib/term/misc.v
Normal file
@ -0,0 +1,15 @@
|
||||
module term
|
||||
|
||||
// h_divider will return a horizontal divider line with a dynamic width,
|
||||
// that depends on the current terminal settings
|
||||
pub fn h_divider(divider string) string {
|
||||
mut cols := 76
|
||||
term_cols, _ := get_terminal_size()
|
||||
|
||||
if term_cols > 0 {
|
||||
cols = term_cols
|
||||
}
|
||||
|
||||
result := divider.repeat(1 + (cols / divider.len))
|
||||
return result[0..cols]
|
||||
}
|
6
vlib/term/misc_js.v
Normal file
6
vlib/term/misc_js.v
Normal file
@ -0,0 +1,6 @@
|
||||
module term
|
||||
|
||||
pub fn get_terminal_size() (int, int) {
|
||||
// TODO: find a way to get proper width&height of the terminal on a Javascript environment
|
||||
return 80, 25
|
||||
}
|
20
vlib/term/misc_nix.v
Normal file
20
vlib/term/misc_nix.v
Normal file
@ -0,0 +1,20 @@
|
||||
module term
|
||||
|
||||
#include <sys/ioctl.h>
|
||||
|
||||
struct C.winsize{
|
||||
pub:
|
||||
ws_row int
|
||||
ws_col int
|
||||
}
|
||||
|
||||
fn C.ioctl() int
|
||||
|
||||
pub fn get_terminal_size() (int, int) {
|
||||
// TODO: check for resize events
|
||||
|
||||
mut w := C.winsize{}
|
||||
C.ioctl(0, C.TIOCGWINSZ, &w)
|
||||
|
||||
return w.ws_col, w.ws_row
|
||||
}
|
6
vlib/term/misc_windows.v
Normal file
6
vlib/term/misc_windows.v
Normal file
@ -0,0 +1,6 @@
|
||||
module term
|
||||
|
||||
pub fn get_terminal_size() (int, int) {
|
||||
// TODO: find a way to get proper width&height of the terminal on windows, probably using Winapis
|
||||
return 80, 25
|
||||
}
|
Loading…
Reference in New Issue
Block a user