[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 4ace48f394e: * lisp/progmodes/project.el (project--other-place-pr
From: |
Juri Linkov |
Subject: |
master 4ace48f394e: * lisp/progmodes/project.el (project--other-place-prefix): New function. |
Date: |
Thu, 19 Oct 2023 14:52:44 -0400 (EDT) |
branch: master
commit 4ace48f394e6c825393f9a0d58024af18a7d675b
Author: Juri Linkov <juri@linkov.net>
Commit: Juri Linkov <juri@linkov.net>
* lisp/progmodes/project.el (project--other-place-prefix): New function.
(project-other-window-command, project-other-frame-command)
(project-other-tab-command): Use it in Emacs versions not less than 30
where other-*-prefix commands are available.
This fixes the cases such as 'C-u C-x 5 p p f TAB' from bug#65558.
---
lisp/progmodes/project.el | 29 +++++++++++++++++++++++------
1 file changed, 23 insertions(+), 6 deletions(-)
diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el
index b9ecb770e60..4a47b4e94a1 100644
--- a/lisp/progmodes/project.el
+++ b/lisp/progmodes/project.el
@@ -880,6 +880,17 @@ DIRS must contain directory names."
(call-interactively cmd)
(user-error "%s is undefined" (key-description key)))))
+(defun project--other-place-prefix (place &optional extra-keymap)
+ (cl-assert (member place '(window frame tab)))
+ (prefix-command-preserve-state)
+ (let ((inhibit-message t)) (funcall (intern (format "other-%s-prefix"
place))))
+ (message "Display next project command buffer in a new %s..." place)
+ ;; Should return exitfun from set-transient-map
+ (set-transient-map (if extra-keymap
+ (make-composed-keymap project-prefix-map
+ extra-keymap)
+ project-prefix-map)))
+
;;;###autoload
(defun project-other-window-command ()
"Run project command, displaying resultant buffer in another window.
@@ -889,9 +900,11 @@ The following commands are available:
\\{project-prefix-map}
\\{project-other-window-map}"
(interactive)
- (project--other-place-command '((display-buffer-pop-up-window)
- (inhibit-same-window . t))
- project-other-window-map))
+ (if (< emacs-major-version 30)
+ (project--other-place-command '((display-buffer-pop-up-window)
+ (inhibit-same-window . t))
+ project-other-window-map)
+ (project--other-place-prefix 'window project-other-window-map)))
;;;###autoload (define-key ctl-x-4-map "p" #'project-other-window-command)
@@ -904,8 +917,10 @@ The following commands are available:
\\{project-prefix-map}
\\{project-other-frame-map}"
(interactive)
- (project--other-place-command '((display-buffer-pop-up-frame))
- project-other-frame-map))
+ (if (< emacs-major-version 30)
+ (project--other-place-command '((display-buffer-pop-up-frame))
+ project-other-frame-map)
+ (project--other-place-prefix 'frame project-other-frame-map)))
;;;###autoload (define-key ctl-x-5-map "p" #'project-other-frame-command)
@@ -917,7 +932,9 @@ The following commands are available:
\\{project-prefix-map}"
(interactive)
- (project--other-place-command '((display-buffer-in-new-tab))))
+ (if (< emacs-major-version 30)
+ (project--other-place-command '((display-buffer-in-new-tab)))
+ (project--other-place-prefix 'tab)))
;;;###autoload
(when (bound-and-true-p tab-prefix-map)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master 4ace48f394e: * lisp/progmodes/project.el (project--other-place-prefix): New function.,
Juri Linkov <=