summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lisp/terminal.el7
-rw-r--r--src/frame.h13
-rw-r--r--src/termhooks.h10
3 files changed, 20 insertions, 10 deletions
diff --git a/lisp/terminal.el b/lisp/terminal.el
index 47bfddba555..de4b22d3b88 100644
--- a/lisp/terminal.el
+++ b/lisp/terminal.el
@@ -975,9 +975,10 @@ move to start of new line, clear to end of line."
(progn (goto-char (point-max))
(recenter -1)))))))
-(defvar te-stty-string "stty -nl new dec echo"
- "Command string (to be interpreted by \"sh\") which sets the modes
-of the virtual terminal to be appropriate for interactive use.")
+(defvar te-stty-string "stty -nl dec echo"
+ "Shell command to set terminal modes for terminal emulator.")
+;; This used to have `new' in it, but that loses outside BSD
+;; and it's apparently not needed in BSD.
(defvar explicit-shell-file-name nil
"*If non-nil, is file name to use for explicitly requested inferior shell.")
diff --git a/src/frame.h b/src/frame.h
index d8853312b81..ca0c0f8f8ae 100644
--- a/src/frame.h
+++ b/src/frame.h
@@ -70,6 +70,12 @@ struct screen
/* Name of this screen: a Lisp string. */
Lisp_Object name;
+ /* The screen which should recieve keystrokes that occur in this
+ screen. This is usually the screen itself, but if the screen is
+ minibufferless, this points to the minibuffer screen when it is
+ active. */
+ Lisp_Object focus_screen;
+
/* This screen's root window. Every screen has one.
If the screen has only a minibuffer window, this is it.
Otherwise, if the screen has a minibuffer window, this is its sibling. */
@@ -174,12 +180,14 @@ typedef struct screen *SCREEN_PTR;
#define SCREEN_DELETEN_COST(s) (s)->delete_n_lines_cost
#define SCREEN_MESSAGE_BUF(s) (s)->message_buf
#define SCREEN_SCROLL_BOTTOM_VPOS(s) (s)->scroll_bottom_vpos
+#define SCREEN_FOCUS_SCREEN(s) (s)->focus_screen
#define CHECK_SCREEN(x, i) \
{ if (XTYPE ((x)) != Lisp_Screen) x = wrong_type_argument (Qscreenp, (x)); }
extern Lisp_Object Qscreenp;
extern struct screen *selected_screen;
+extern struct screen *last_nonminibuf_screen;
extern struct screen *make_terminal_screen ();
extern struct screen *make_screen ();
@@ -198,6 +206,7 @@ extern Lisp_Object Vterminal_screen;
#define SCREEN_PTR int
extern int selected_screen;
+#define last_nonminibuf_screen selected_screen
#define XSCREEN(s) selected_screen
#define WINDOW_SCREEN(w) selected_screen
@@ -228,7 +237,9 @@ extern int selected_screen;
#define SCREEN_INSERTN_COST(screen) insert_n_lines_cost
#define SCREEN_DELETEN_COST(screen) delete_n_lines_cost
#define SCREEN_MESSAGE_BUF(s) message_buf
-#define SCREEN_SCROLL_BOTTOM_VPOS scroll_bottom_vpos;
+#define SCREEN_SCROLL_BOTTOM_VPOS(s) scroll_bottom_vpos
+
+#define CHECK_SCREEN(x, i) { ; }
extern int screen_width, screen_height;
extern int cursX, cursY;
diff --git a/src/termhooks.h b/src/termhooks.h
index bb6f29ce471..d414149ca95 100644
--- a/src/termhooks.h
+++ b/src/termhooks.h
@@ -63,12 +63,10 @@ extern int (*read_socket_hook) ();
button releases. */
extern int (*mouse_tracking_enable_hook) ( /* int ENABLE */ );
-/* When reading from a minibuffer in a different screen, Emacs wants
- to shift the highlight from the selected screen to the minibuffer's
- screen; under X, this means it lies about where the focus is.
- This hook tells the window system code to re-decide where to put
- the highlight. */
-extern void (*screen_rehighlight_hook) ( /* SCREEN_PTR s */ );
+/* When a screen's focus redirection is changed, this hook tells the
+ window system code to re-decide where to put the highlight. Under
+ X, this means that the system lies about where the focus is. */
+extern void (*screen_rehighlight_hook) ( /* void */ );
/* If nonzero, send all terminal output characters to this stream also. */