diff options
| author | Richard M. Stallman | 1995-11-21 20:12:52 +0000 |
|---|---|---|
| committer | Richard M. Stallman | 1995-11-21 20:12:52 +0000 |
| commit | d07f802a2c5eb9d21356e1a70b76de78704dbd00 (patch) | |
| tree | 2388acad23e0971b6d2ca18d31f75e2e0c3d26f0 /src | |
| parent | e983fdb2728b0f3488396bbe05b0c40ca568e9ff (diff) | |
| download | emacs-d07f802a2c5eb9d21356e1a70b76de78704dbd00.tar.gz emacs-d07f802a2c5eb9d21356e1a70b76de78704dbd00.zip | |
(Fdisplay_buffer): Always deiconify the window's frame.
(display_buffer_1): New subroutine.
Diffstat (limited to 'src')
| -rw-r--r-- | src/window.c | 35 |
1 files changed, 23 insertions, 12 deletions
diff --git a/src/window.c b/src/window.c index fc3f7af59a5..035b6a78c23 100644 --- a/src/window.c +++ b/src/window.c | |||
| @@ -1911,6 +1911,21 @@ before each command.") | |||
| 1911 | return window; | 1911 | return window; |
| 1912 | } | 1912 | } |
| 1913 | 1913 | ||
| 1914 | /* Deiconify the frame containing the window WINDOW, then return WINDOW. */ | ||
| 1915 | |||
| 1916 | static Lisp_Object | ||
| 1917 | display_buffer_1 (window) | ||
| 1918 | Lisp_Object window; | ||
| 1919 | { | ||
| 1920 | #ifdef MULTI_FRAME | ||
| 1921 | FRAME_PTR f = XFRAME (WINDOW_FRAME (XWINDOW (window))); | ||
| 1922 | FRAME_SAMPLE_VISIBILITY (f); | ||
| 1923 | if (FRAME_ICONIFIED_P (f)) | ||
| 1924 | Fmake_frame_visible (WINDOW_FRAME (XWINDOW (window))); | ||
| 1925 | #endif | ||
| 1926 | return window; | ||
| 1927 | } | ||
| 1928 | |||
| 1914 | DEFUN ("display-buffer", Fdisplay_buffer, Sdisplay_buffer, 1, 2, | 1929 | DEFUN ("display-buffer", Fdisplay_buffer, Sdisplay_buffer, 1, 2, |
| 1915 | "bDisplay buffer: \nP", | 1930 | "bDisplay buffer: \nP", |
| 1916 | "Make BUFFER appear in some window but don't select it.\n\ | 1931 | "Make BUFFER appear in some window but don't select it.\n\ |
| @@ -1933,7 +1948,7 @@ Returns the window displaying BUFFER.") | |||
| 1933 | 1948 | ||
| 1934 | if (NILP (not_this_window) | 1949 | if (NILP (not_this_window) |
| 1935 | && XBUFFER (XWINDOW (selected_window)->buffer) == XBUFFER (buffer)) | 1950 | && XBUFFER (XWINDOW (selected_window)->buffer) == XBUFFER (buffer)) |
| 1936 | return selected_window; | 1951 | return display_buffer_1 (selected_window); |
| 1937 | 1952 | ||
| 1938 | /* See if the user has specified this buffer should appear | 1953 | /* See if the user has specified this buffer should appear |
| 1939 | in the selected window. */ | 1954 | in the selected window. */ |
| @@ -1943,14 +1958,14 @@ Returns the window displaying BUFFER.") | |||
| 1943 | if (!NILP (tem)) | 1958 | if (!NILP (tem)) |
| 1944 | { | 1959 | { |
| 1945 | Fswitch_to_buffer (buffer, Qnil); | 1960 | Fswitch_to_buffer (buffer, Qnil); |
| 1946 | return selected_window; | 1961 | return display_buffer_1 (selected_window); |
| 1947 | } | 1962 | } |
| 1948 | 1963 | ||
| 1949 | tem = Fassoc (XBUFFER (buffer)->name, Vsame_window_buffer_names); | 1964 | tem = Fassoc (XBUFFER (buffer)->name, Vsame_window_buffer_names); |
| 1950 | if (!NILP (tem)) | 1965 | if (!NILP (tem)) |
| 1951 | { | 1966 | { |
| 1952 | Fswitch_to_buffer (buffer, Qnil); | 1967 | Fswitch_to_buffer (buffer, Qnil); |
| 1953 | return selected_window; | 1968 | return display_buffer_1 (selected_window); |
| 1954 | } | 1969 | } |
| 1955 | 1970 | ||
| 1956 | for (tem = Vsame_window_regexps; CONSP (tem); tem = XCONS (tem)->cdr) | 1971 | for (tem = Vsame_window_regexps; CONSP (tem); tem = XCONS (tem)->cdr) |
| @@ -1960,7 +1975,7 @@ Returns the window displaying BUFFER.") | |||
| 1960 | && fast_string_match (car, XBUFFER (buffer)->name) >= 0) | 1975 | && fast_string_match (car, XBUFFER (buffer)->name) >= 0) |
| 1961 | { | 1976 | { |
| 1962 | Fswitch_to_buffer (buffer, Qnil); | 1977 | Fswitch_to_buffer (buffer, Qnil); |
| 1963 | return selected_window; | 1978 | return display_buffer_1 (selected_window); |
| 1964 | } | 1979 | } |
| 1965 | else if (CONSP (car) | 1980 | else if (CONSP (car) |
| 1966 | && STRINGP (XCONS (car)->car) | 1981 | && STRINGP (XCONS (car)->car) |
| @@ -1968,7 +1983,7 @@ Returns the window displaying BUFFER.") | |||
| 1968 | XBUFFER (buffer)->name) >= 0) | 1983 | XBUFFER (buffer)->name) >= 0) |
| 1969 | { | 1984 | { |
| 1970 | Fswitch_to_buffer (buffer, Qnil); | 1985 | Fswitch_to_buffer (buffer, Qnil); |
| 1971 | return selected_window; | 1986 | return display_buffer_1 (selected_window); |
| 1972 | } | 1987 | } |
| 1973 | } | 1988 | } |
| 1974 | } | 1989 | } |
| @@ -1986,11 +2001,7 @@ Returns the window displaying BUFFER.") | |||
| 1986 | if (!NILP (window) | 2001 | if (!NILP (window) |
| 1987 | && (NILP (not_this_window) || !EQ (window, selected_window))) | 2002 | && (NILP (not_this_window) || !EQ (window, selected_window))) |
| 1988 | { | 2003 | { |
| 1989 | #ifdef MULTI_FRAME | 2004 | return display_buffer_1 (window); |
| 1990 | if (FRAME_ICONIFIED_P (XFRAME (WINDOW_FRAME (XWINDOW (window))))) | ||
| 1991 | Fmake_frame_visible (WINDOW_FRAME (XWINDOW (window))); | ||
| 1992 | #endif | ||
| 1993 | return window; | ||
| 1994 | } | 2005 | } |
| 1995 | 2006 | ||
| 1996 | /* Certain buffer names get special handling. */ | 2007 | /* Certain buffer names get special handling. */ |
| @@ -2027,7 +2038,7 @@ Returns the window displaying BUFFER.") | |||
| 2027 | { | 2038 | { |
| 2028 | window = Fframe_selected_window (call0 (Vpop_up_frame_function)); | 2039 | window = Fframe_selected_window (call0 (Vpop_up_frame_function)); |
| 2029 | Fset_window_buffer (window, buffer); | 2040 | Fset_window_buffer (window, buffer); |
| 2030 | return window; | 2041 | return display_buffer_1 (window); |
| 2031 | } | 2042 | } |
| 2032 | #endif /* MULTI_FRAME */ | 2043 | #endif /* MULTI_FRAME */ |
| 2033 | 2044 | ||
| @@ -2139,7 +2150,7 @@ Returns the window displaying BUFFER.") | |||
| 2139 | window = Fget_lru_window (Qnil); | 2150 | window = Fget_lru_window (Qnil); |
| 2140 | 2151 | ||
| 2141 | Fset_window_buffer (window, buffer); | 2152 | Fset_window_buffer (window, buffer); |
| 2142 | return window; | 2153 | return display_buffer_1 (window); |
| 2143 | } | 2154 | } |
| 2144 | 2155 | ||
| 2145 | void | 2156 | void |