Commit graph

168 commits

Author SHA1 Message Date
Karoly Lorentey
0a1258976b Bugfix festival.
lib-src/emacsclient.c (main_argc, main_argv): New variables.
(main): Initialize them.
(fail): Use them.
(window_change, copy_from_to): Don't kill if emacs_pid is zero.
(pty_conversation): Watch the command socket, too.  Read emacs_pid
here.  Emacs and emacsclient could deadlock if Emacs tried to do a
reset_sys_modes before sending its pid.

lisp/server.el: Automatically delete the client frame when done editing.
(server-frames): New variable.
(server-process-filter, server-sentinel, server-buffer-done): Use it.
(server-process-filter): Do a redisplay before evaluating other
parameters.  (Prevents "emacsclient -h -e '(delete-frame)'" from
messing up the system.

src/dispextern.h: Update prototypes.

src/dispnew.c (window_change_signal): Do nothing if !term_initted.
(init_display): Set the frame size from the tty data after term_init.

src/emacs.c (main): Make sure things that init_sys_modes needs are 
initialized before init_display (which calls init_sys_modes now).
(sort_args): Use xfree, not free.
(shut_down_emacs) [!EMACS_HAVE_TTY_PGRP]: Use reset_all_sys_modes
instead of reset_sys_modes.

src/frame.c (make_terminal_frame): Sigh. Move terminal initialization
back to the middle of frame setup.  Handle errors by making sure that
the delete_tty() called from term_init() will see and delete this
frame.
(Fdelete_frame): Kill the frame before calling delete_tty().  Fix
condition for tty deletion.

src/keyboard.c (Fset_input_mode): Use reset_sys_modes on the current
terminal only.

src/lisp.h: Remove duplicate prototypes.

src/msdos.c (croak): use reset_all_sys_modes().

src/sysdeps.c (init_baud_rate): Added tty parameter, use it instead of CURTTY.
(child_setup_tty): Reset sigio on stdin, not CURTTY().
(reset_sigio): Added fd parameter, put explicit fcntl there.
(request_sigio, unrequest_sigio)[FASYNC]: Simply block/unblock the
SIGIO signal, don't touch the file params.  There are multiple ttys
now, and we can't disable the SIGIO from emacsclient.
(get_tty_size)[VMS]: Use tty_out instead of CURTTY().
(reset_sys_modes): Don't call cursor_to, clear_end_of_line; call
cmgoto and tty_clear_end_of_line instead.  The frame may already be
dead.  Updated reset_sigio call.

src/term.c (clear_and_of_line): Separate tty-dependent stuff to
tty_clear_end_of_line() for reset_sys_modes.
(tty_clear_end_of_line): New function.
(term_init): Added frame parameter, don't use selected_frame.
Set the frame's output_data.tty value (in case there is an error
later).  Set the frame size in Wcm, not in the frame.  Only free the
termcap buffer if there is a termcap-related error.  Call
init_sys_modes last, not first.
(deleting_tty): New variable.
(delete_tty): Use it for handling recursive calls.  Free deleted tty,
except its Wcm (there is still a dangling reference somewhere).

git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-19
2003-12-29 07:16:26 +00:00
Karoly Lorentey
fca177d467 Fully eliminated global tty state variables.
lib-src/emacsclient.c (main.c): Fix error message.

lisp/frame.el (make-frame-on-tty): New function.

lisp/server.el (server-process-filter): Notify emacsclient if there
was on error during evaluation.

src/cm.c: Fix remaining cases of direct Wcm references.

src/dispextern.h: Updated prototypes.

src/dispnew.c (Fredraw_frame): Fix set_terminal_modes call.
(init_display): Remove reference to meta_key.

src/frame.c (make_terminal_frame): Renamed first parameter to
tty_name.  Call term_init before creating the frame.
(Fmake_terminal_frame): Look up the `tty' and `tty-type' frame
parameters from the currently selected terminal before the global
default.
(Fdelete_frame): Make sure that the new selected frame is live.

src/keyboard.c (meta_key): Moved to struct tty_output.
(read_avail_input): Fix C syntax.  Update references to meta_key.
(Fsuspend_emacs): pass current tty to init_sys_modes via
record_unwind_protect.
(Fset_input_mode): Update references to meta_key.
(Fcurrent_input_mode): Ditto.

src/sysdep.c (init_sys_modes): Updated old_tty and meta_key
references.  Don't call set_terminal_modes, it needs termcap strings.
(reset_sys_modes): Call tty_reset_terminal_modes instead of
reset_terminal_modes.  Updated old_tty references.

src/term.c: Massive updates throuout the file.
(TS_*, TN_*): Moved to struct tty_output.
(RPov, delete_in_insert_mode se_is_so, costs_set, insert_mode): Ditto.
(standout_mode, specified_window, tty_cursor_hidden): Ditto.
(tty_set_terminal_modes, tty_reset_terminal_modes): New functions.
(turn_on_insert, turn_off_insert): Added tty parameter.
(turn_on_highlight, turn_off_highlight, toggle_highlight): Added tty parameter.
(tty_hide_cursor, tty_show_cursor): Ditto.
(background_highlight, highlight_if_desired): Ditto.
(tty_capable_p): Changed first parameter to tty_output.
(term_init): Make sure top_frame is initialized.  Don't exit on errors
if this would have been a secondary terminal.  Call set_terminal_modes
on the end.
(delete_tty): New function.
(delete_tty_1): New function.
(print_all_frames): New function, marginally useful for debugging.

src/termchar.h (struct tty_output): Changed old_tty to be a pointer.
Removed old_tty_valid member.  Added tty-specific variables from term.c.

src/xfaces.c (Ftty_supports_face_attributes_p): Update for new
tty_capable_p.

git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-9
2003-12-27 10:00:19 +00:00
Karoly Lorentey
6548cf002c Full support for multiple terminal I/O (with some rough edges).
lib-src/emacsclient.c (emacs_pid): New variable.  
(window_change): Forward the SIGWINCH signal to the Emacs process
after copying the size parameters to the proxy terminal.
(copy_from_to): New parameter (sigio), kill Emacs with SIGIO if it is
nonzero.
(main): Set emacs_pid.

lisp/server.el (server-process-filter): Send the pid of Emacs to emacsclient.

src/cm.c: Added tty parameters to all functions and all Wcm macro calls.

src/cm.h: Added tty parameters to all macros.   Updated function prototypes.
(Wcm): Moved to struct tty_output.

src/dispextern.h: Updated function prototypes.

src/dispnew.c: Added tty parameters to all Wcm macro calls.
(do_switch_frame): Make old frame obscured, not invisible, to solve
problems with other-frame.
(Wcm): Moved to struct tty_output.

src/keyboard.c (read_avail_input): Select the frame corresponding to
the tty that was read.  Slight rearrangement of tty loop.

src/lisp.h (tabs_safe_p): Removed duplicate prototype.

src/sysdep.c (hft_init, hft_reset): Added tty_output parameter.
(discard_tty_input): Discard input from all ttys on APOLLO, too.
Whatever it is.
(narrow_foreground_group, widen_foreground_group): Added tty parameter
(not really useful, the functions only work on the controlling tty.)
(tabs_safe_p): Added tty parameter.

src/term.c Added tty parameters to all Wcm macro calls.
Standardised updating_frame vs. selected frame and tty_output access.
(term_init): Allocate Wcm.
(syms_of_term): Provide the `multi-tty' feature.

src/termchar.h (struct tty_output): Added Wcm.

src/xdisp.c (try_window_id): Make sure we use the tty device
corresponding to the current frame.

git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-8
2003-12-27 01:12:57 +00:00
Karoly Lorentey
9628b8878f lib-src/emacsclient.c: Implemented --here option (open a new Emacs tty). Needs more work.
(here): New variable.
(decode_options): Use it.
(ec_get_tty, ec_set_tty, init_tty, window_change, hang_up_signal): New functions.
(window_change_signal, init_signals, reset_tty, init_pty, copy_from_to): Ditto.
(pty_conversation): Ditto.
(main): Use them.
(master, pty_name, old_tty, tty, old_tty_valid, tty_erase_char): New variables.
(flow_control, meta_key, _sobuf, in_conversation, quit_conversation): Ditto.

lisp/server.el (server-process-filter): Added support for opening a new terminal frame.

dispextern.h (get_frame_size): Renamed to get_tty_size, added tty_output parameter.

dispnew.c (Fredraw_frame): fflush the current terminal instead of stdout.
(direct_output_for_insert, direct_output_forward_char, update_frame_1): Ditto.
(Fding, bitch_at_user): Ditto.
(update_frame_1): Count pending output for current terminal instead of stdout.
(window_change_signal): Resize all terminals.
(change_frame_size): Don't resize all terminals to the same size.

frame.c (Vterminal_frame): Removed.
(syms_of_frame): Removed declaration of Vterminal_frame.
(make_terminal_frame): Set the top frame of the terminal to the new frame.
(Fmake_terminal_frame): Get a new frame size from get_tty_size, don't copy it.
(do_switch_frame): Handle terminal frame visibility.
(next_frame, prev_frame): Skip over frames on different terminals.

frame.h (Vterminal_frame): Removed.

keyboard.c (input_fd): Removed.
(read_avail_input): Removed first argument from read_socket_hook.
Try to read from each available tty, until one succeeds.
(Fsuspend_emacs): Don't suspend if there are multiple terminals.

lisp.h (get_frame_size): Removed superflous declaration.

xterm.c (Xtread_socket): Removed first parameter.
macterm.h (XTread_socket): Ditto.
w32inevt.c (w32_console_read_socket): Ditto.
w32term.c (w32_read_socket): Ditto.

sysdep.c (input_fd): Removed.
(change_input_fd): Removed.
(discard_tty_input): Discard pending input on _all_ input descriptors.
(stuff_char, tabs_safe_p): Use current terminal instead of input_fd.
(init_baud_rate, request_sigio, unrequest_sigio): Ditto.
(init_sys_modes, reset_sys_modes): Ditto.
(narrow_foreground_group, widen_foreground_group): Use stdin.
(init_sys_modes, reset_sys_modes): otty parameter renamed to tty_out.
(get_frame_size): Renamed to get_tty_size, added tty_out parameter.

term.c (read_socket_hook): Removed first parameter.
(clear_end_of_line): Use updating_frame, if possible.
(write_glyphs, insert_glyphs, ins_del_lines): Ditto.
(term_init): Renamed get_frame_size to get_tty_size.

termchar.h (struct tty_output): New entries: top_frame,
previous_terminal_frame.

termhooks.h (read_socket_hook): Removed first parameter.

window.c (init_window_once): Removed reference to Vterminal_frame.

xdisp.c (previous_terminal_frame): Moved to struct tty_output.
(redisplay_internal): Updated to use previous_terminal_frame in tty_output.
Allow for simultaneous refresh of multiple ttys.


git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-5
2003-12-26 04:24:54 +00:00
Richard M. Stallman
a4cf2096d7 Comment change. 2003-10-13 19:41:26 +00:00
Eli Zaretskii
872093579a (quote_file_name): Print the result instead of
returning it.  Fix the return type accordingly.
(main): Under --eval, don't fail if left with additional
arguments after decoding options.  Quote file names.
2003-09-28 08:24:56 +00:00
Richard M. Stallman
3db926beda Comment change. 2003-09-19 14:27:47 +00:00
Richard M. Stallman
254107e497 (socket_name): New variable.
(longopts, decode_options, print_help_and_exit):
Handle --socket-name argument.

(main): Use socket_name.
2003-09-12 00:48:03 +00:00
Miles Bader
ab5796a9f9 Add arch taglines 2003-09-01 15:45:59 +00:00
Juanma Barranquero
bb5618fe38 (main): Fix having macros in a printf statement. 2003-07-28 22:10:30 +00:00
Stefan Monnier
caa4df2b5d (main): Use new safe location for socket. 2003-04-12 19:03:08 +00:00
Juanma Barranquero
20c396e841 (print_help_and_exit): Print to stdout. Exit successfully. Added some blank
lines for readability.
(decode_options): Don't call print_help_and_exit in default case. Print version
information to stdout.
(main): Don't call print_help_and_exit.
2003-03-12 21:36:29 +00:00
Stephen Eglen
45adde3246 (main): Tell user how to start server within Emacs if socket could not
be found.
2002-12-02 20:57:42 +00:00
Richard M. Stallman
38732dbaa3 (main): Test HAVE_GETCWD rather than BSD_SYSTEM. 2002-12-02 16:14:35 +00:00
Markus Rost
15dab115ed Remove reference to SERVER_HOME_DIR completely. 2002-10-01 00:47:12 +00:00
Stefan Monnier
3ecdcd5905 (main): Always use /tmp and non-qualified hostname. 2002-09-27 22:07:38 +00:00
Stefan Monnier
30be2360f8 Remove SYSV support.
(eval, display): New vars.
(longopts): Add --eval and --display.
(decode_options): Add -e and -d processing.
(print_help_and_exit): Update the usage string.
(main): Add support for --eval and --display.
2002-09-27 18:21:44 +00:00
Stefan Monnier
3cf8c6aa01 (quote_file_name): Quote \n.
(main): Print a final \n when needed.
2002-09-18 01:44:54 +00:00
Pavel Janík
2f8fe2f420 Include <config.h>. 2001-12-29 22:25:06 +00:00
Pavel Janík
e69233c2de Include "config.h", not <../src/config.h>.
(main): Parenthesize assignment when used as truth value to
prevent gcc warnings.
2001-12-19 07:21:17 +00:00
Gerd Moellmann
cb1cdedd97 (main): Cast isdigit() argument to unsigned char.
From Hallvard B Furuseth <h.b.furuseth@usit.uio.no>.
2001-10-09 10:18:30 +00:00
Gerd Moellmann
8b8f50f810 (print_help_and_exit): Fix help message for
+LINE:COLUMN option.

(main): Add support for +LINE:COLUMN command line
argument.
2001-07-17 10:57:25 +00:00
Dave Love
23431241d4 (fail): Don't return a value.
(main): Cast uid values for sprintf.
2001-04-05 18:46:47 +00:00
Gerd Moellmann
de073ce36f (fail, main): Don't use implicit int return type. 2001-04-03 13:37:23 +00:00
Eli Zaretskii
571512dece (main): Remove unused local variable statbfr.
(main) <homedir>: Make its declaration conditional on
SERVER_HOME_DIR, to avoid compiler warnings.
2001-01-02 13:52:48 +00:00
Gerd Moellmann
9f637eea61 (socket_status): New function.
(main): if $LOGNAME or $USER exist and differ from our euid, look
for a socket based on the UID associated with the name.
2000-01-28 15:02:20 +00:00
Gerd Moellmann
97e3214d1d Add option -a EDITOR and environment variable
ALTERNATE_EDITOR.  Exec this editor if we fail to contact Emacs.
2000-01-12 13:38:54 +00:00
Paul Eggert
4ee9629e2b Add support for large files. Merge glibc 2.1.2.
* b2m.c, emacsclient.c, emacsserver.c, fakemail.c, make-docfile.c,
movemail.c, pop.c:
Do not include <stdlib.h>, as <config.h> does this now.

* b2m.c, emacsserver.c, etags.c, profile.c:
Include <config.h> before any system include files.

* emacsclient.c, emacsserver.c, fakemail.c, movemail.c, pop.c,
test-distrib.c:
(read, write, open, close): Do not undef.

* getopt.c, getopt1.c: Adopt glibc 2.1.2, with the following fix:
(const): Do not define if HAVE_CONFIG_H; that's config.h's job.

* getopt.h: Adopt glibc 2.1.2.
1999-10-19 07:17:20 +00:00
Richard M. Stallman
4852ed0e72 (print_help_and_exit): Mention --version. 1999-08-29 19:30:53 +00:00
Karl Heuer
b4e94f425f (decode_options): Update version output.
(print_help_and_exit): Update bug report address.
1999-08-25 16:19:01 +00:00
Karl Heuer
c5fee54517 (main): Move the dynamic allocation of
system_name outside of the SERVER_HOME_DIR conditional.
1999-08-14 04:08:25 +00:00
Karl Heuer
0343a01795 (main, both versions): Use quote_file_name on cwd. 1999-04-29 20:26:46 +00:00
Richard M. Stallman
5f32a7128b (xmalloc): Fix previous change. 1999-01-25 23:43:20 +00:00
Richard M. Stallman
5497dfdb4b (xmalloc): Declare to return long. 1999-01-25 01:34:34 +00:00
Richard M. Stallman
a2b3f2b55c (main): Eliminate arbitrary limit on length of system_name.
(xmalloc): Define unconditionally.
1999-01-16 21:45:10 +00:00
Richard M. Stallman
5fb29af43c (main): Null-terminate system_name. 1998-10-10 21:20:22 +00:00
Dave Love
79f13bba7d Move inclusion of unistd.h to top, else fails on
Irix6, at least.
1998-04-08 17:31:45 +00:00
Andreas Schwab
7f3bff3e4c Include <stdlib.h> and <unistd.h> if available.
Don't declare geteuid.
(print_help_and_exit): Change return type to void.  Forward
declare it.
1998-04-06 10:13:46 +00:00
Richard M. Stallman
bd25266244 [HAVE_SYSVIPC]: Include errno.h, as in the other case.
(main) [!BSD_SYSTEM]: Fix error message for getcwd failure.
1997-08-27 20:08:59 +00:00
Richard M. Stallman
0c76956f83 [C_ALLOCA] (xmalloc): New function. 1997-07-09 19:20:34 +00:00
Karl Heuer
e397a0172f Replaced all BSD with BSD_SYSTEM. 1996-09-17 02:37:17 +00:00
Richard M. Stallman
749ae7700e (longopts): Change nowait to no-wait.
(print_help_and_exit): Fix option name; upcase metavars.
1996-09-10 02:00:27 +00:00
Richard M. Stallman
f1db6a73ef (quote_file_name): Quote with &, not \.
Quote `-' only at start of file name.  Terminate the value string.
1996-09-02 17:43:32 +00:00
Richard M. Stallman
5212210c8f (quote_file_name): New function.
(main, both versions): Use quote_file_name.
(decode_options): Don't return a value.
(main, both versions): Use optind.
Don't check for -nowait here.
1996-09-02 00:05:56 +00:00
Richard M. Stallman
8f9aaa0a81 (decode_options): New function.
(main, both versions): Call decode_options.
(print_help_and_exit): New function.
(VERSION): New macro
1996-09-01 18:25:21 +00:00
Richard M. Stallman
292d74a338 (both versions): Handle -nowait and --nowait by sending data to the server. 1996-08-31 16:25:21 +00:00
Richard M. Stallman
23a7488dea (main) [HAVE_SOCKETS]: Use two separate stdio
streams, one for sending and one for reading the reply.
1996-07-23 14:18:34 +00:00
Karl Heuer
dc3c30fec0 (main, both definitions): Print a newline for normal termination. 1996-02-21 20:53:01 +00:00
Erik Naggum
3b7ad313e0 Update FSF's address in the preamble. 1996-01-15 09:18:04 +00:00
Richard M. Stallman
26396b1bda (main): Add argv[0] to an error message. 1995-04-18 20:50:19 +00:00