mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-16 17:24:23 +00:00
New command make-frame-on-current-monitor to use in windmove (bug#39875)
* lisp/frame.el (make-frame-on-current-monitor): New command. * lisp/windmove.el (windmove-display-in-direction): Use make-frame-on-current-monitor for 'new-frame'. (windmove-display-new-frame): New command. (windmove-display-default-keybindings): Bind windmove-display-new-frame to 'f' key. * lisp/window.el (display-buffer-in-direction): Fix quotes in docstring.
This commit is contained in:
parent
b5474ba160
commit
32261ed15b
3 changed files with 29 additions and 5 deletions
|
|
@ -713,6 +713,18 @@ The optional argument PARAMETERS specifies additional frame parameters."
|
|||
(x-display-list))))
|
||||
(make-frame (cons (cons 'display display) parameters)))
|
||||
|
||||
(defun make-frame-on-current-monitor (&optional parameters)
|
||||
"Make a frame on the currently selected monitor.
|
||||
Like `make-frame-on-monitor' and with the same PARAMETERS as in `make-frame'."
|
||||
(interactive)
|
||||
(let* ((monitor-workarea
|
||||
(cdr (assq 'workarea (frame-monitor-attributes))))
|
||||
(geometry-parameters
|
||||
(when monitor-workarea
|
||||
`((top . ,(nth 1 monitor-workarea))
|
||||
(left . ,(nth 0 monitor-workarea))))))
|
||||
(make-frame (append geometry-parameters parameters))))
|
||||
|
||||
(defun make-frame-on-monitor (monitor &optional display parameters)
|
||||
"Make a frame on monitor MONITOR.
|
||||
The optional argument DISPLAY can be a display name, and the optional
|
||||
|
|
|
|||
|
|
@ -474,6 +474,11 @@ When `switch-to-buffer-obey-display-actions' is non-nil,
|
|||
(tab-bar-new-tab))
|
||||
(setq type 'tab)
|
||||
(selected-window))
|
||||
((eq dir 'new-frame)
|
||||
(window--maybe-raise-frame
|
||||
(make-frame-on-current-monitor pop-up-frame-alist))
|
||||
(setq type 'frame)
|
||||
(selected-window))
|
||||
((eq dir 'same-window)
|
||||
(selected-window))
|
||||
(t (window-in-direction
|
||||
|
|
@ -541,6 +546,12 @@ See the logic of the prefix ARG in `windmove-display-in-direction'."
|
|||
(interactive "P")
|
||||
(windmove-display-in-direction 'same-window arg))
|
||||
|
||||
;;;###autoload
|
||||
(defun windmove-display-new-frame (&optional arg)
|
||||
"Display the next buffer in a new frame."
|
||||
(interactive "P")
|
||||
(windmove-display-in-direction 'new-frame arg))
|
||||
|
||||
;;;###autoload
|
||||
(defun windmove-display-new-tab (&optional arg)
|
||||
"Display the next buffer in a new tab."
|
||||
|
|
@ -562,6 +573,7 @@ Default value of MODIFIERS is `shift-meta'."
|
|||
(global-set-key (vector (append modifiers '(up))) 'windmove-display-up)
|
||||
(global-set-key (vector (append modifiers '(down))) 'windmove-display-down)
|
||||
(global-set-key (vector (append modifiers '(?0))) 'windmove-display-same-window)
|
||||
(global-set-key (vector (append modifiers '(?f))) 'windmove-display-new-frame)
|
||||
(global-set-key (vector (append modifiers '(?t))) 'windmove-display-new-tab))
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -7891,15 +7891,15 @@ Info node `(elisp) Buffer Display Action Alists' for details of
|
|||
such alists.
|
||||
|
||||
ALIST has to contain a `direction' entry whose value should be
|
||||
one of `left', `above' (or `up'), `right' and `below' (or
|
||||
'down'). Other values are usually interpreted as `below'.
|
||||
one of `left', `above' (or `up'), `right' and `below' (or `down').
|
||||
Other values are usually interpreted as `below'.
|
||||
|
||||
If ALIST also contains a `window' entry, its value specifies a
|
||||
reference window. That value can be a special symbol like
|
||||
'main' (which stands for the selected frame's main window) or
|
||||
'root' (standings for the selected frame's root window) or an
|
||||
`main' (which stands for the selected frame's main window) or
|
||||
`root' (standings for the selected frame's root window) or an
|
||||
arbitrary valid window. Any other value (or omitting the
|
||||
'window' entry) means to use the selected window as reference
|
||||
`window' entry) means to use the selected window as reference
|
||||
window.
|
||||
|
||||
This function tries to reuse or split a window such that the
|
||||
|
|
|
|||
Loading…
Reference in a new issue