* sysdep.c (suppress_echo_on_tty): New function.
* minibuf.c (read_minibuf_noninteractive): Use it.
This commit is contained in:
parent
3aa96ff51e
commit
fb96e203d8
3 changed files with 25 additions and 9 deletions
|
@ -1,3 +1,8 @@
|
|||
2014-07-11 Michael Albinus <michael.albinus@gmx.de>
|
||||
|
||||
* sysdep.c (suppress_echo_on_tty): New function.
|
||||
* minibuf.c (read_minibuf_noninteractive): Use it.
|
||||
|
||||
2014-07-11 Dmitry Antipov <dmantipov@yandex.ru>
|
||||
|
||||
* alloc.c (Fmemory_info) [HAVE_LINUX_SYSINFO]: Return nil if
|
||||
|
|
|
@ -38,6 +38,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
#include "systty.h"
|
||||
extern void emacs_get_tty (int, struct emacs_tty *);
|
||||
extern int emacs_set_tty (int, struct emacs_tty *, bool);
|
||||
extern void suppress_echo_on_tty (int);
|
||||
|
||||
/* List of buffers for use as minibuffers.
|
||||
The first element of the list is used for the outermost minibuffer
|
||||
|
@ -229,7 +230,7 @@ read_minibuf_noninteractive (Lisp_Object map, Lisp_Object initial,
|
|||
Lisp_Object val;
|
||||
int c;
|
||||
unsigned char hide_char = 0;
|
||||
struct emacs_tty old, new;
|
||||
struct emacs_tty etty;
|
||||
|
||||
/* Check, whether we need to suppress echoing. */
|
||||
if (CHARACTERP (Vread_hide_char))
|
||||
|
@ -238,13 +239,8 @@ read_minibuf_noninteractive (Lisp_Object map, Lisp_Object initial,
|
|||
/* Manipulate tty. */
|
||||
if (hide_char)
|
||||
{
|
||||
emacs_get_tty (fileno (stdin), &old);
|
||||
new = old;
|
||||
#ifndef WINDOWSNT
|
||||
new.main.c_lflag &= ~ICANON; /* Disable buffering */
|
||||
new.main.c_lflag &= ~ECHO; /* Disable echoing */
|
||||
#endif
|
||||
emacs_set_tty (fileno (stdin), &new, 0);
|
||||
emacs_get_tty (fileno (stdin), &etty);
|
||||
suppress_echo_on_tty (fileno (stdin));
|
||||
}
|
||||
|
||||
fprintf (stdout, "%s", SDATA (prompt));
|
||||
|
@ -281,7 +277,7 @@ read_minibuf_noninteractive (Lisp_Object map, Lisp_Object initial,
|
|||
if (hide_char)
|
||||
{
|
||||
fprintf (stdout, "\n");
|
||||
emacs_set_tty (fileno (stdin), &old, 0);
|
||||
emacs_set_tty (fileno (stdin), &etty, 0);
|
||||
}
|
||||
|
||||
if (len || c == '\n')
|
||||
|
|
15
src/sysdep.c
15
src/sysdep.c
|
@ -1140,6 +1140,21 @@ tabs_safe_p (int fd)
|
|||
return 0;
|
||||
#endif /* DOS_NT */
|
||||
}
|
||||
|
||||
/* Discard echoing. */
|
||||
|
||||
void
|
||||
suppress_echo_on_tty (int fd)
|
||||
{
|
||||
struct emacs_tty etty;
|
||||
|
||||
emacs_get_tty (fd, &etty);
|
||||
#ifndef WINDOWSNT
|
||||
etty.main.c_lflag &= ~ICANON; /* Disable buffering */
|
||||
etty.main.c_lflag &= ~ECHO; /* Disable echoing */
|
||||
#endif /* ! WINDOWSNT */
|
||||
emacs_set_tty (fd, &etty, 0);
|
||||
}
|
||||
|
||||
/* Get terminal size from system.
|
||||
Store number of lines into *HEIGHTP and width into *WIDTHP.
|
||||
|
|
Loading…
Add table
Reference in a new issue