diff options
-rw-r--r-- | lisp/terminal.el | 7 | ||||
-rw-r--r-- | src/frame.h | 13 | ||||
-rw-r--r-- | src/termhooks.h | 10 |
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. */ |