Create new line while pressing enter in repl.

Pressing Enter in repl should create new line instead of quiting the repl.
pull/759/head
shivakishore14 2019-06-28 03:21:25 +05:30 committed by Alexander Medvednikov
parent 4aab26d3e3
commit 65fed2d784
2 changed files with 16 additions and 1 deletions

View File

@ -858,7 +858,11 @@ fn run_repl() []string {
mut lines := []string
for {
print('>>> ')
mut line := os.get_line().trim_space()
mut line := os.get_raw_line()
if line.trim_space() == '' && line.ends_with('\n') {
continue
}
line = line.trim_space()
if line == '' {
break
}

11
os/os.v
View File

@ -383,6 +383,17 @@ pub fn get_line() string {
return tos(buf, nr_chars)
}
// get_raw_line returns a one-line string from stdin along with '\n' if there is any
pub fn get_raw_line() string {
max := u64(256)
buf := malloc(int(max))
nr_chars := C.getline(&buf, &max, stdin)
if nr_chars == 0 {
return ''
}
return tos(buf, nr_chars)
}
pub fn user_os() string {
$if linux {
return 'linux'