1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

Create new line while pressing enter in repl.

Pressing Enter in repl should create new line instead of quiting the repl.
This commit is contained in:
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 mut lines := []string
for { for {
print('>>> ') 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 == '' { if line == '' {
break break
} }

11
os/os.v
View File

@ -383,6 +383,17 @@ pub fn get_line() string {
return tos(buf, nr_chars) 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 { pub fn user_os() string {
$if linux { $if linux {
return 'linux' return 'linux'