+2008-07-31 Dan Nicolaescu <dann@ics.uci.edu>
+
+ * configure.in (MULTI_KBOARD): Remove.
+
2008-07-30 Dan Nicolaescu <dann@ics.uci.edu>
* configure.in (DO_BLOCK_INPUT): Remove, unused.
MAX_PRINT_CHARS
MIN_PTY_KERNEL_VERSION -- only used on Mac
MODE_LINE_BINARY_TEXT
-MULTI_KBOARD
MUST_UNDEF__STDC__
NARROWPROTO
NEED_BSDTTY
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-#include <sys/types.h> /* for off_t */
- #include <stdio.h>
+#include <stdio.h>
int
main ()
{
-int (*fp) (FILE *, off_t, int) = fseeko;
- return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
+return fseeko (stdin, 0, 0) && (fseeko) (stdin, 0, 0);
;
return 0;
}
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
#define _LARGEFILE_SOURCE 1
-#include <sys/types.h> /* for off_t */
- #include <stdio.h>
+#include <stdio.h>
int
main ()
{
-int (*fp) (FILE *, off_t, int) = fseeko;
- return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
+return fseeko (stdin, 0, 0) && (fseeko) (stdin, 0, 0);
;
return 0;
}
/* If we're using X11/Carbon/GNUstep, define some consequences. */
#if defined(HAVE_X_WINDOWS) || defined(HAVE_NS)
#define HAVE_WINDOW_SYSTEM
-#define MULTI_KBOARD
#define HAVE_MOUSE
#endif
-/* Multi-tty support relies on MULTI_KBOARD. It seems safe to turn it
- on unconditionally. */
-#ifndef MULTI_KBOARD
-#define MULTI_KBOARD
-#endif
-
/* Sadly for now, GNUstep dump does not work. */
#ifdef NS_IMPL_GNUSTEP
#define CANNOT_DUMP
+2008-07-31 Dan Nicolaescu <dann@ics.uci.edu>
+
+ * config.nt (MULTI_KBOARD): Remove.
+
2008-07-23 Jason Rumney <jasonr@gnu.org>
* configure.bat: New option --profile.
/* If we're using any sort of window system, define some consequences. */
#ifdef HAVE_X_WINDOWS
#define HAVE_WINDOW_SYSTEM
-#define MULTI_KBOARD
#define HAVE_MOUSE
#endif
+2008-07-31 Dan Nicolaescu <dann@ics.uci.edu>
+
+ * s/ms-w32.h (MULTI_KBOARD): Remove.
+ * xterm.c:
+ * xselect.c:
+ * xfns.c:
+ * window.c:
+ * w32term.c:
+ * w32fns.c:
+ * terminal.c:
+ * termhooks.h:
+ * term.c:
+ * sysdep.c:
+ * keyboard.h:
+ * keyboard.c:
+ * frame.h:
+ * frame.c:
+ * frame.c: Remove references to MULTI_KBOARD, it is now the
+ default.
+ * config.in: Regenerate.
+
2008-07-30 Jason Rumney <jasonr@gnu.org>
* w32font.h (struct w32font_info): Use unicode version of textmetrics.
/* If we're using X11/Carbon/GNUstep, define some consequences. */
#if defined(HAVE_X_WINDOWS) || defined(HAVE_NS)
#define HAVE_WINDOW_SYSTEM
-#define MULTI_KBOARD
#define HAVE_MOUSE
#endif
-/* Multi-tty support relies on MULTI_KBOARD. It seems safe to turn it
- on unconditionally. */
-#ifndef MULTI_KBOARD
-#define MULTI_KBOARD
-#endif
-
/* Sadly for now, GNUstep dump does not work. */
#ifdef NS_IMPL_GNUSTEP
#define CANNOT_DUMP
if (!NILP (mini_window))
CHECK_LIVE_WINDOW (mini_window);
-#ifdef MULTI_KBOARD
if (!NILP (mini_window)
&& FRAME_KBOARD (XFRAME (XWINDOW (mini_window)->frame)) != kb)
error ("Frame and minibuffer must be on the same terminal");
-#endif
/* Make a frame containing just a root window. */
f = make_frame (0);
kb = NULL;
Fdelete_terminal (tmp, NILP (force) ? Qt : force);
}
-#ifdef MULTI_KBOARD
else
kb = terminal->kboard;
-#endif
}
/* If we've deleted the last_nonminibuf_frame, then try to find
unsigned long foreground_pixel;
};
-#ifdef MULTI_KBOARD
#define FRAME_KBOARD(f) ((f)->terminal->kboard)
-#else
-#define FRAME_KBOARD(f) (&the_only_kboard)
-#endif
/* Return a pointer to the image cache of frame F. */
#define FRAME_IMAGE_CACHE(F) ((F)->terminal->image_cache)
#define KBD_BUFFER_SIZE 4096
-#ifdef MULTI_KBOARD
KBOARD *initial_kboard;
KBOARD *current_kboard;
KBOARD *all_kboards;
int single_kboard;
-#else
-KBOARD the_only_kboard;
-#endif
/* Non-nil disable property on a command means
do not execute it; call disabled-command-function's value instead. */
static void restore_getcjmp P_ ((jmp_buf));
static Lisp_Object apply_modifiers P_ ((int, Lisp_Object));
static void clear_event P_ ((struct input_event *));
-#ifdef MULTI_KBOARD
static Lisp_Object restore_kboard_configuration P_ ((Lisp_Object));
-#endif
static SIGTYPE interrupt_signal P_ ((int signalnum));
static void handle_interrupt P_ ((void));
static void timer_start_idle P_ ((void));
static void
any_kboard_state ()
{
-#ifdef MULTI_KBOARD
#if 0 /* Theory: if there's anything in Vunread_command_events,
it will right away be read by read_key_sequence,
and then if we do switch KBOARDS, it will go into the side
Vunread_command_events = Qnil;
#endif
single_kboard = 0;
-#endif
}
/* Switch to the single-kboard state, making current_kboard
void
single_kboard_state ()
{
-#ifdef MULTI_KBOARD
single_kboard = 1;
-#endif
}
#endif
not_single_kboard_state (kboard)
KBOARD *kboard;
{
-#ifdef MULTI_KBOARD
if (kboard == current_kboard)
single_kboard = 0;
-#endif
}
/* Maintain a stack of kboards, so other parts of Emacs
push_kboard (k)
struct kboard *k;
{
-#ifdef MULTI_KBOARD
struct kboard_stack *p
= (struct kboard_stack *) xmalloc (sizeof (struct kboard_stack));
kboard_stack = p;
current_kboard = k;
-#endif
}
void
pop_kboard ()
{
-#ifdef MULTI_KBOARD
struct terminal *t;
struct kboard_stack *p = kboard_stack;
int found = 0;
}
kboard_stack = p->next;
xfree (p);
-#endif
}
/* Switch to single_kboard mode, making current_kboard the only KBOARD
temporarily_switch_to_single_kboard (f)
struct frame *f;
{
-#ifdef MULTI_KBOARD
int was_locked = single_kboard;
if (was_locked)
{
single_kboard = 1;
record_unwind_protect (restore_kboard_configuration,
(was_locked ? Qt : Qnil));
-#endif
}
#if 0 /* This function is not needed anymore. */
}
#endif
-#ifdef MULTI_KBOARD
static Lisp_Object
restore_kboard_configuration (was_locked)
Lisp_Object was_locked;
}
return Qnil;
}
-#endif
\f
/* Handle errors that are not handled at inner levels
Vinhibit_quit = Qnil;
#if 0 /* This shouldn't be necessary anymore. --lorentey */
-#ifdef MULTI_KBOARD
if (command_loop_level == 0 && minibuf_level == 0)
any_kboard_state ();
-#endif
#endif
return make_number (0);
int prev_modiff = 0;
struct buffer *prev_buffer = NULL;
#if 0 /* This shouldn't be necessary anymore. --lorentey */
-#ifdef MULTI_KBOARD
int was_locked = single_kboard;
-#endif
#endif
int already_adjusted = 0;
&& NILP (current_kboard->Vprefix_arg))
finalize_kbd_macro_chars ();
#if 0 /* This shouldn't be necessary anymore. --lorentey */
-#ifdef MULTI_KBOARD
if (!was_locked)
any_kboard_state ();
-#endif
#endif
}
}
if (!NILP (Vinhibit_quit))
Vquit_flag = Qnil;
-#ifdef MULTI_KBOARD
{
KBOARD *kb = FRAME_KBOARD (XFRAME (selected_frame));
if (kb != current_kboard)
return make_number (-2); /* wrong_kboard_jmpbuf */
}
}
-#endif
goto non_reread;
}
}
}
-#ifdef MULTI_KBOARD
/* If current_kboard's side queue is empty check the other kboards.
If one of them has data that we have not yet seen here,
switch to it and process the data waiting for it.
return make_number (-2); /* wrong_kboard_jmpbuf */
}
}
-#endif
wrong_kboard:
c = kbd_buffer_get_event (&kb, used_mouse_menu, end_time);
restore_getcjmp (save_jump);
-#ifdef MULTI_KBOARD
if (! NILP (c) && (kb != current_kboard))
{
Lisp_Object link = kb->kbd_queue;
UNGCPRO;
return make_number (-2);
}
-#endif
}
/* Terminate Emacs in batch mode if at eof. */
/* Set this for debugging, to have a way to get out */
int stop_character;
-#ifdef MULTI_KBOARD
static KBOARD *
event_to_kboard (event)
struct input_event *event;
else
return FRAME_KBOARD (XFRAME (frame));
}
-#endif
Lisp_Object Vthrow_on_input;
if (c == quit_char)
{
-#ifdef MULTI_KBOARD
KBOARD *kb = FRAME_KBOARD (XFRAME (event->frame_or_window));
struct input_event *sp;
}
return;
}
-#endif
if (hold_quit)
{
last_event_timestamp = event->timestamp;
-#ifdef MULTI_KBOARD
*kbp = event_to_kboard (event);
if (*kbp == 0)
*kbp = current_kboard; /* Better than returning null ptr? */
-#else
- *kbp = &the_only_kboard;
-#endif
obj = Qnil;
else
{
{
-#ifdef MULTI_KBOARD
KBOARD *interrupted_kboard = current_kboard;
struct frame *interrupted_frame = SELECTED_FRAME ();
-#endif
key = read_char (NILP (prompt), nmaps,
(Lisp_Object *) submaps, last_nonmenu_event,
&used_mouse_menu, NULL);
-#ifdef MULTI_KBOARD
if (INTEGERP (key) && XINT (key) == -2) /* wrong_kboard_jmpbuf */
{
int found = 0;
orig_keymap = get_local_map (PT, current_buffer, Qkeymap);
goto replay_sequence;
}
-#endif
}
/* read_char returns t when it shows a menu and the user rejects it.
xfree (kb->kbd_macro_buffer);
}
-#ifdef MULTI_KBOARD
-
/* Free KB and memory referenced from it. */
void
xfree (kb);
}
-#endif /* MULTI_KBOARD */
-
void
init_keyboard ()
{
internal_last_event_frame = Qnil;
Vlast_event_frame = internal_last_event_frame;
-#ifdef MULTI_KBOARD
current_kboard = initial_kboard;
-#endif
/* Re-initialize the keyboard again. */
wipe_kboard (current_kboard);
init_kboard (current_kboard);
and tool-bar buttons. */);
Venable_disabled_menus_and_buttons = Qnil;
-#ifdef MULTI_KBOARD
/* Create the initial keyboard. */
initial_kboard = (KBOARD *) xmalloc (sizeof (KBOARD));
init_kboard (initial_kboard);
/* Vwindow_system is left at t for now. */
initial_kboard->next_kboard = all_kboards;
all_kboards = initial_kboard;
-#endif
}
void
char echo_after_prompt;
};
-#ifdef MULTI_KBOARD
/* Temporarily used before a frame has been opened. */
extern KBOARD *initial_kboard;
/* Nonzero in the single-kboard state, 0 in the any-kboard state. */
extern int single_kboard;
-#else
-extern KBOARD the_only_kboard;
-#define current_kboard (&the_only_kboard)
-#define all_kboards (&the_only_kboard)
-#define single_kboard 1
-#endif
\f
/* Total number of times read_char has returned. */
extern int num_input_events;
#define HAVE_MOUSE 1
#define HAVE_H_ERRNO 1
-#define MULTI_KBOARD 1
-
#ifdef HAVE_NTGUI
#define HAVE_WINDOW_SYSTEM 1
#define HAVE_MENUS 1
#endif
-#ifdef HPUX
-#ifndef HAVE_PERROR
+#if defined(HPUX) && !defined(HAVE_PERROR)
/* HPUX curses library references perror, but as far as we know
it won't be called. Anyway this definition will do for now. */
perror ()
{
}
-
-#endif /* not HAVE_PERROR */
-#endif /* HPUX */
+#endif /* HPUX and not HAVE_PERROR */
#ifndef HAVE_DUP2
tty->TF_teleray = tgetflag ("xt");
#endif /* !WINDOWSNT */
-#ifdef MULTI_KBOARD
terminal->kboard = (KBOARD *) xmalloc (sizeof (KBOARD));
init_kboard (terminal->kboard);
terminal->kboard->Vwindow_system = Qnil;
current_kboard = terminal->kboard;
#ifndef WINDOWSNT
term_get_fkeys (address, terminal->kboard);
-#endif
-#endif
-#ifndef WINDOWSNT
/* Get frame size from system, or else from termcap. */
{
int height, width;
times. */
char *name;
-#ifdef MULTI_KBOARD
/* The terminal's keyboard object. */
struct kboard *kboard;
-#endif
#ifdef HAVE_WINDOW_SYSTEM
/* Cache of images. */
xfree (terminal->terminal_coding);
terminal->terminal_coding = NULL;
-#ifdef MULTI_KBOARD
if (terminal->kboard && --terminal->kboard->reference_count == 0)
{
delete_kboard (terminal->kboard);
terminal->kboard = NULL;
}
-#endif
}
Lisp_Object Qrun_hook_with_args;
initial_terminal = create_terminal ();
initial_terminal->type = output_initial;
initial_terminal->name = xstrdup ("initial_terminal");
-#ifdef MULTI_KBOARD
initial_terminal->kboard = initial_kboard;
-#endif
initial_terminal->delete_terminal_hook = &delete_initial_terminal;
/* All other hooks are NULL. */
if (EQ (display, Qunbound))
display = Qnil;
dpyinfo = check_x_display_info (display);
-#ifdef MULTI_KBOARD
kb = dpyinfo->terminal->kboard;
-#else
- kb = &the_only_kboard;
-#endif
if (!dpyinfo->terminal->name)
error ("Terminal is not live, can't create new frames on it");
this frame has a specified name. */
Vx_resource_name = Vinvocation_name;
-#ifdef MULTI_KBOARD
kb = dpyinfo->terminal->kboard;
-#else
- kb = &the_only_kboard;
-#endif
/* Get the name of the frame to use for resource lookup. */
name = x_get_arg (dpyinfo, parms, Qname, "name", "Name", RES_TYPE_STRING);
image_cache_refcount = FRAME_IMAGE_CACHE (f)->refcount;
dpyinfo_refcount = dpyinfo->reference_count;
#endif /* GLYPH_DEBUG */
-#ifdef MULTI_KBOARD
FRAME_KBOARD (f) = kb;
-#endif
f->output_data.w32->parent_desc = FRAME_W32_DISPLAY_INFO (f)->root_window;
f->output_data.w32->explicit_parent = 0;
terminal->memory_below_frame = 0; /* We don't remember what scrolls
off the bottom. */
-#ifdef MULTI_KBOARD
/* We don't yet support separate terminals on W32, so don't try to share
keyboards between virtual terminals that are on the same physical
terminal like X does. */
if (current_kboard == initial_kboard)
current_kboard = terminal->kboard;
terminal->kboard->reference_count++;
-#endif
return terminal;
}
replace_buffer_in_all_windows (buffer)
Lisp_Object buffer;
{
-#ifdef MULTI_KBOARD
Lisp_Object tail, frame;
/* A single call to window_loop won't do the job
So loop manually over frames, and handle each one. */
FOR_EACH_FRAME (tail, frame)
window_loop (UNSHOW_BUFFER, buffer, 1, frame);
-#else
- window_loop (UNSHOW_BUFFER, buffer, 1, Qt);
-#endif
}
\f
/* Set the height of WINDOW and all its inferiors. */
if (EQ (display, Qunbound))
display = Qnil;
dpyinfo = check_x_display_info (display);
-#ifdef MULTI_KBOARD
kb = dpyinfo->terminal->kboard;
-#else
- kb = &the_only_kboard;
-#endif
if (!dpyinfo->terminal->name)
error ("Terminal is not live, can't create new frames on it");
TRACE0 ("x_handle_selection_clear");
-#ifdef MULTI_KBOARD
/* If the new selection owner is also Emacs,
don't clear the new selection. */
BLOCK_INPUT;
}
}
UNBLOCK_INPUT;
-#endif
selection_symbol = x_atom_to_symbol (display, selection);
static int x_session_initialized;
#endif
-#ifdef MULTI_KBOARD
/* Test whether two display-name strings agree up to the dot that separates
the screen number from the server number. */
static int
&& (*name1 == '.' || *name1 == '\0')
&& (*name2 == '.' || *name2 == '\0'));
}
-#endif
/* Count number of set bits in mask and number of bits to shift to
get to the first bit. With MASK 0x7e0, *BITS is set to 6, and *OFFSET
terminal = x_create_terminal (dpyinfo);
-#ifdef MULTI_KBOARD
{
struct x_display_info *share;
Lisp_Object tail;
}
terminal->kboard->reference_count++;
}
-#endif
/* Put this display on the chain. */
dpyinfo->next = x_display_list;