Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
cs24-19fa
git_rec_nano
Commits
5806bf52
Commit
5806bf52
authored
8 years ago
by
Benno Schulenberg
Browse files
Options
Download
Email Patches
Plain Diff
tweaks: normalize some whitespace and adjust several comments
parent
90a90365
master
feature/match-parens
refactor/readbility
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
src/winio.c
+37
-56
src/winio.c
with
37 additions
and
56 deletions
+37
-56
src/winio.c
View file @
5806bf52
...
...
@@ -260,9 +260,9 @@ void unget_kbinput(int kbinput, bool metakey)
}
}
/* Try to read input_len c
haracter
s from the keystroke buffer. If the
/* Try to read input_len c
ode
s from the keystroke buffer. If the
* keystroke buffer is empty and win isn't NULL, try to read in more
* c
haracter
s from win and add them to the keystroke buffer before doing
* c
ode
s from win and add them to the keystroke buffer before doing
* anything else. If the keystroke buffer is (still) empty, return NULL. */
int
*
get_input
(
WINDOW
*
win
,
size_t
input_len
)
{
...
...
@@ -274,29 +274,21 @@ int *get_input(WINDOW *win, size_t input_len)
if
(
key_buffer_len
==
0
)
return
NULL
;
/* If input_len is greater than the length of the keystroke buffer,
* only read the number of characters in the keystroke buffer. */
/* Limit the request to the number of available codes in the buffer. */
if
(
input_len
>
key_buffer_len
)
input_len
=
key_buffer_len
;
/* Subtract input_len from the length of the keystroke buffer, and
* allocate input so that it has enough room for input_len
* keystrokes. */
key_buffer_len
-=
input_len
;
/* Copy input_len codes from the head of the keystroke buffer. */
input
=
(
int
*
)
nmalloc
(
input_len
*
sizeof
(
int
));
/* Copy input_len keystrokes from the beginning of the keystroke
* buffer into input. */
memcpy
(
input
,
key_buffer
,
input_len
*
sizeof
(
int
));
key_buffer_len
-=
input_len
;
/* If the keystroke buffer is empty, mark it as such. */
/* If the keystroke buffer is
now
empty, mark it as such. */
if
(
key_buffer_len
==
0
)
{
free
(
key_buffer
);
key_buffer
=
NULL
;
/* If the keystroke buffer isn't empty, move its beginning forward
* far enough so that the keystrokes in input are no longer at its
* beginning. */
}
else
{
/* Trim from the buffer the codes that were copied. */
memmove
(
key_buffer
,
key_buffer
+
input_len
,
key_buffer_len
*
sizeof
(
int
));
key_buffer
=
(
int
*
)
nrealloc
(
key_buffer
,
key_buffer_len
*
...
...
@@ -362,13 +354,13 @@ int parse_kbinput(WINDOW *win)
return
ERR
;
if
(
keycode
==
ESC_CODE
)
{
/* Increment the escape counter. */
escapes
++
;
/* If there are four consecutive escapes, discard three of them. */
if
(
escapes
>
3
)
escapes
=
1
;
solitary
=
(
escapes
==
1
&&
key_buffer_len
==
0
);
return
ERR
;
/* Increment the escape counter
, but trim an overabundance
. */
escapes
++
;
if
(
escapes
>
3
)
escapes
=
1
;
/* Take note when an Esc arrived by itself. */
solitary
=
(
escapes
==
1
&&
key_buffer_len
==
0
);
return
ERR
;
}
switch
(
escapes
)
{
...
...
@@ -377,8 +369,6 @@ int parse_kbinput(WINDOW *win)
retval
=
keycode
;
break
;
case
1
:
/* Reset the escape counter. */
escapes
=
0
;
if
((
keycode
!=
'O'
&&
keycode
!=
'o'
&&
keycode
!=
'['
)
||
key_buffer_len
==
0
||
*
key_buffer
==
ESC_CODE
)
{
/* One escape followed by a single non-escape:
...
...
@@ -390,6 +380,7 @@ int parse_kbinput(WINDOW *win)
/* One escape followed by a non-escape, and there
* are more codes waiting: escape sequence mode. */
retval
=
parse_escape_sequence
(
win
,
keycode
);
escapes
=
0
;
break
;
case
2
:
if
(
double_esc
)
{
...
...
@@ -427,36 +418,30 @@ int parse_kbinput(WINDOW *win)
byte_digits
++
;
byte
=
get_byte_kbinput
(
keycode
);
/* If we've read in a complete byte sequence,
* reset the escape counter and the byte sequence
* counter, and put the obtained byte value back
* into the key buffer. */
/* If the decimal byte value is complete, convert it and
* put the obtained byte(s) back into the input buffer. */
if
(
byte
!=
ERR
)
{
char
*
byte_mb
;
int
byte_mb_len
,
*
seq
,
i
;
escapes
=
0
;
byte_digits
=
0
;
/* Put back the multibyte equivalent of
* the byte value. */
byte_mb
=
make_mbchar
((
long
)
byte
,
&
byte_mb_len
);
/* Convert the decimal code to one or two bytes. */
byte_mb
=
make_mbchar
((
long
)
byte
,
&
byte_mb_len
);
seq
=
(
int
*
)
nmalloc
(
byte_mb_len
*
sizeof
(
int
));
seq
=
(
int
*
)
nmalloc
(
byte_mb_len
*
sizeof
(
int
));
for
(
i
=
0
;
i
<
byte_mb_len
;
i
++
)
seq
[
i
]
=
(
unsigned
char
)
byte_mb
[
i
];
/* Insert the byte(s) into the input buffer. */
unget_input
(
seq
,
byte_mb_len
);
free
(
byte_mb
);
free
(
seq
);
byte_digits
=
0
;
escapes
=
0
;
}
}
else
{
/* Reset the escape counter. */
escapes
=
0
;
if
(
byte_digits
==
0
)
/* Two escapes followed by a non-decimal
* digit (or a decimal digit that would
...
...
@@ -471,6 +456,7 @@ int parse_kbinput(WINDOW *win)
byte_digits
=
0
;
retval
=
keycode
;
}
escapes
=
0
;
}
}
else
if
(
keycode
==
'['
&&
key_buffer_len
>
0
&&
'A'
<=
*
key_buffer
&&
*
key_buffer
<=
'D'
)
{
...
...
@@ -479,14 +465,12 @@ int parse_kbinput(WINDOW *win)
}
else
{
/* Two escapes followed by a non-escape, and there are more
* codes waiting: combined meta and escape sequence mode. */
escapes
=
0
;
meta_key
=
TRUE
;
retval
=
parse_escape_sequence
(
win
,
keycode
);
meta_key
=
TRUE
;
escapes
=
0
;
}
break
;
case
3
:
/* Reset the escape counter. */
escapes
=
0
;
if
(
key_buffer_len
==
0
)
/* Three escapes followed by a non-escape, and no
* other codes are waiting: normal input mode. */
...
...
@@ -498,6 +482,7 @@ int parse_kbinput(WINDOW *win)
* sequence, then the result as a control sequence. */
retval
=
get_control_kbinput
(
parse_escape_sequence
(
win
,
keycode
));
escapes
=
0
;
break
;
}
...
...
@@ -627,7 +612,7 @@ int parse_kbinput(WINDOW *win)
case
KEY_RESIZE
:
return
ERR
;
#endif
}
}
return
retval
;
}
...
...
@@ -1351,7 +1336,7 @@ int *parse_verbatim_kbinput(WINDOW *win, size_t *kbinput_len)
{
int
*
kbinput
,
*
retval
;
/* Read in the first
keystrok
e. */
/* Read in the first
cod
e. */
while
((
kbinput
=
get_input
(
win
,
1
))
==
NULL
)
;
...
...
@@ -1366,18 +1351,14 @@ int *parse_verbatim_kbinput(WINDOW *win, size_t *kbinput_len)
#ifdef ENABLE_UTF8
if
(
using_utf8
())
{
/* Check whether the first keystroke is a valid hexadecimal
* digit. */
/* Check whether the first code is a valid starter digit: 0 or 1. */
long
uni
=
get_unicode_kbinput
(
win
,
*
kbinput
);
/* If the first keystroke isn't a valid hexadecimal digit, put
* back the first keystroke. */
/* If the first code isn't the digit 0 nor 1, put it back. */
if
(
uni
!=
ERR
)
unget_input
(
kbinput
,
1
);
/* Otherwise, read in keystrokes until we have a complete
* Unicode sequence, and put back the corresponding Unicode
* value. */
/* Otherwise, continue reading in digits until we have a complete
* Unicode value, and put back the corresponding byte(s). */
else
{
char
*
uni_mb
;
int
uni_mb_len
,
*
seq
,
i
;
...
...
@@ -1389,8 +1370,7 @@ int *parse_verbatim_kbinput(WINDOW *win, size_t *kbinput_len)
uni
=
get_unicode_kbinput
(
win
,
*
kbinput
);
}
/* Put back the multibyte equivalent of the Unicode
* value. */
/* Convert the Unicode value to a multibyte sequence. */
uni_mb
=
make_mbchar
(
uni
,
&
uni_mb_len
);
seq
=
(
int
*
)
nmalloc
(
uni_mb_len
*
sizeof
(
int
));
...
...
@@ -1398,6 +1378,7 @@ int *parse_verbatim_kbinput(WINDOW *win, size_t *kbinput_len)
for
(
i
=
0
;
i
<
uni_mb_len
;
i
++
)
seq
[
i
]
=
(
unsigned
char
)
uni_mb
[
i
];
/* Insert the multibyte sequence into the input buffer. */
unget_input
(
seq
,
uni_mb_len
);
free
(
seq
);
...
...
@@ -1406,7 +1387,7 @@ int *parse_verbatim_kbinput(WINDOW *win, size_t *kbinput_len)
}
else
#endif
/* ENABLE_UTF8 */
/* Put back the first
keystrok
e. */
/* Put back the first
cod
e. */
unget_input
(
kbinput
,
1
);
free
(
kbinput
);
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment
Menu
Projects
Groups
Snippets
Help