version 1.1.1.1, 2014/07/30 08:16:45
|
version 1.1.1.2, 2021/03/17 01:01:01
|
Line 1
|
Line 1
|
/* parens.c -- implementation of matching parentheses feature. */ |
/* parens.c -- implementation of matching parentheses feature. */ |
|
|
/* Copyright (C) 1987, 1989, 1992-2009 Free Software Foundation, Inc. | /* Copyright (C) 1987, 1989, 1992-2015, 2017 Free Software Foundation, Inc. |
|
|
This file is part of the GNU Readline Library (Readline), a library |
This file is part of the GNU Readline Library (Readline), a library |
for reading lines of text with interactive input and history editing. |
for reading lines of text with interactive input and history editing. |
Line 57 static int find_matching_open PARAMS((char *, int, int
|
Line 57 static int find_matching_open PARAMS((char *, int, int
|
|
|
/* Non-zero means try to blink the matching open parenthesis when the |
/* Non-zero means try to blink the matching open parenthesis when the |
close parenthesis is inserted. */ |
close parenthesis is inserted. */ |
#if defined (HAVE_SELECT) |
|
int rl_blink_matching_paren = 1; |
|
#else /* !HAVE_SELECT */ |
|
int rl_blink_matching_paren = 0; |
int rl_blink_matching_paren = 0; |
#endif /* !HAVE_SELECT */ |
|
|
|
static int _paren_blink_usec = 500000; |
static int _paren_blink_usec = 500000; |
|
|
/* Change emacs_standard_keymap to have bindings for paren matching when |
/* Change emacs_standard_keymap to have bindings for paren matching when |
ON_OR_OFF is 1, change them back to self_insert when ON_OR_OFF == 0. */ |
ON_OR_OFF is 1, change them back to self_insert when ON_OR_OFF == 0. */ |
void |
void |
_rl_enable_paren_matching (on_or_off) | _rl_enable_paren_matching (int on_or_off) |
int on_or_off; | |
{ |
{ |
if (on_or_off) |
if (on_or_off) |
{ /* ([{ */ | { |
| /* ([{ */ |
rl_bind_key_in_map (')', rl_insert_close, emacs_standard_keymap); |
rl_bind_key_in_map (')', rl_insert_close, emacs_standard_keymap); |
rl_bind_key_in_map (']', rl_insert_close, emacs_standard_keymap); |
rl_bind_key_in_map (']', rl_insert_close, emacs_standard_keymap); |
rl_bind_key_in_map ('}', rl_insert_close, emacs_standard_keymap); |
rl_bind_key_in_map ('}', rl_insert_close, emacs_standard_keymap); |
|
|
|
#if defined (VI_MODE) |
|
/* ([{ */ |
|
rl_bind_key_in_map (')', rl_insert_close, vi_insertion_keymap); |
|
rl_bind_key_in_map (']', rl_insert_close, vi_insertion_keymap); |
|
rl_bind_key_in_map ('}', rl_insert_close, vi_insertion_keymap); |
|
#endif |
} |
} |
else |
else |
{ /* ([{ */ | { |
| /* ([{ */ |
rl_bind_key_in_map (')', rl_insert, emacs_standard_keymap); |
rl_bind_key_in_map (')', rl_insert, emacs_standard_keymap); |
rl_bind_key_in_map (']', rl_insert, emacs_standard_keymap); |
rl_bind_key_in_map (']', rl_insert, emacs_standard_keymap); |
rl_bind_key_in_map ('}', rl_insert, emacs_standard_keymap); |
rl_bind_key_in_map ('}', rl_insert, emacs_standard_keymap); |
|
|
|
#if defined (VI_MODE) |
|
/* ([{ */ |
|
rl_bind_key_in_map (')', rl_insert, vi_insertion_keymap); |
|
rl_bind_key_in_map (']', rl_insert, vi_insertion_keymap); |
|
rl_bind_key_in_map ('}', rl_insert, vi_insertion_keymap); |
|
#endif |
} |
} |
} |
} |
|
|
int |
int |
rl_set_paren_blink_timeout (u) | rl_set_paren_blink_timeout (int u) |
int u; | |
{ |
{ |
int o; |
int o; |
|
|
Line 98 rl_set_paren_blink_timeout (u)
|
Line 108 rl_set_paren_blink_timeout (u)
|
} |
} |
|
|
int |
int |
rl_insert_close (count, invoking_key) | rl_insert_close (int count, int invoking_key) |
int count, invoking_key; | |
{ |
{ |
if (rl_explicit_arg || !rl_blink_matching_paren) |
if (rl_explicit_arg || !rl_blink_matching_paren) |
_rl_insert_char (count, invoking_key); |
_rl_insert_char (count, invoking_key); |
Line 117 rl_insert_close (count, invoking_key)
|
Line 126 rl_insert_close (count, invoking_key)
|
|
|
/* Emacs might message or ring the bell here, but I don't. */ |
/* Emacs might message or ring the bell here, but I don't. */ |
if (match_point < 0) |
if (match_point < 0) |
return -1; | return 1; |
|
|
FD_ZERO (&readfds); |
FD_ZERO (&readfds); |
FD_SET (fileno (rl_instream), &readfds); |
FD_SET (fileno (rl_instream), &readfds); |
Line 136 rl_insert_close (count, invoking_key)
|
Line 145 rl_insert_close (count, invoking_key)
|
} |
} |
|
|
static int |
static int |
find_matching_open (string, from, closer) | find_matching_open (char *string, int from, int closer) |
char *string; | |
int from, closer; | |
{ |
{ |
register int i; |
register int i; |
int opener, level, delimiter; |
int opener, level, delimiter; |