Skip to content

Commit

Permalink
fixed indents (JuliaLang#26230)
Browse files Browse the repository at this point in the history
* fixed indents

* use short-circuits instead of lots of 'if elseif'

* further short circuits
  • Loading branch information
ChristianKurz authored and ararslan committed Feb 27, 2018
1 parent f38a734 commit ae3895d
Showing 1 changed file with 35 additions and 67 deletions.
102 changes: 35 additions & 67 deletions stdlib/REPL/src/TerminalMenus/util.jl
Original file line number Diff line number Diff line change
Expand Up @@ -43,80 +43,48 @@ readKey(stream::IO=stdin) = UInt32(_readKey(stream))
function _readKey(stream::IO=stdin)
c = readNextChar(stream)

# Escape characters
if c == '\x1b'
# Escape characters
if c == '\x1b'
stream.buffer.size < 2 && return '\x1b'
esc_a = readNextChar(stream)

if esc_a == 'v' # M-v
return PAGE_UP
elseif esc_a == '<' # M-<
return HOME_KEY
elseif esc_a == '>' # M->
return END_KEY
end
esc_a == 'v' && return PAGE_UP # M-v
esc_a == '<' && return HOME_KEY # M-<
esc_a == '>' && return END_KEY # M->

stream.buffer.size < 3 && return '\x1b'
esc_b = readNextChar(stream)

if esc_a == '[' || esc_a == 'O'
if esc_b >= '0' && esc_b <= '9'
stream.buffer.size < 4 && return '\x1b'
if esc_a == '[' || esc_a == 'O'
if esc_b >= '0' && esc_b <= '9'
stream.buffer.size < 4 && return '\x1b'
esc_c = readNextChar(stream)

if esc_c == '~'
if esc_b == '1'
return HOME_KEY
elseif esc_b == '4'
return END_KEY
elseif esc_b == '3'
return DEL_KEY
elseif esc_b == '5'
return PAGE_UP
elseif esc_b == '6'
return PAGE_DOWN
elseif esc_b == '7'
return HOME_KEY
elseif esc_b == '8'
return END_KEY
else
return '\x1b'
end
end

else
# Arrow keys
if esc_b == 'A'
return ARROW_UP
elseif esc_b == 'B'
return ARROW_DOWN
elseif esc_b == 'C'
return ARROW_RIGHT
elseif esc_b == 'D'
return ARROW_LEFT
elseif esc_b == 'H'
return HOME_KEY
elseif esc_b == 'F'
return END_KEY
else
if esc_c == '~'
esc_b == '1' && return HOME_KEY
esc_b == '4' && return END_KEY
esc_b == '3' && return DEL_KEY
esc_b == '5' && return PAGE_UP
esc_b == '6' && return PAGE_DOWN
esc_b == '7' && return HOME_KEY
esc_b == '8' && return END_KEY
return '\x1b'
end
end
elseif esc_a == 'H'
return HOME_KEY
elseif esc_a == 'F'
return END_KEY
end

return '\x1b'

elseif c == '\x16' # C-v
return PAGE_DOWN
elseif c == '\x10' # C-p
return ARROW_UP
elseif c == '\x0e' # C-n
return ARROW_DOWN
else
return c
end
else
# Arrow keys
esc_b == 'A' && return ARROW_UP
esc_b == 'B' && return ARROW_DOWN
esc_b == 'C' && return ARROW_RIGHT
esc_b == 'D' && return ARROW_LEFT
esc_b == 'H' && return HOME_KEY
esc_b == 'F' && return END_KEY
return '\x1b'
end
end
esc_a == 'H' && return HOME_KEY
esc_a == 'F' && return END_KEY
return '\x1b'
end
c == '\x16' && return PAGE_DOWN # C-v
c == '\x10' && return ARROW_UP # C-p
c == '\x0e' && return ARROW_DOWN # C-n
return c
end

0 comments on commit ae3895d

Please sign in to comment.