diff options
| author | Dmitry Gutov | 2023-04-22 02:27:22 +0300 |
|---|---|---|
| committer | Dmitry Gutov | 2023-04-22 02:27:34 +0300 |
| commit | 4f3dae2b0d5fc43e5e2effa6d36544b6de2a43d8 (patch) | |
| tree | 20601e6f857ecb67aa4af60d8784219369bfd971 | |
| parent | 42def8422fdeb86054155a7d484db1f56ddf8e87 (diff) | |
| download | emacs-4f3dae2b0d5fc43e5e2effa6d36544b6de2a43d8.tar.gz emacs-4f3dae2b0d5fc43e5e2effa6d36544b6de2a43d8.zip | |
project--read-project-buffer: Fixup default-directory if needed
* lisp/progmodes/project.el (project--read-project-buffer):
Make sure that when the read buffer is new, its default-directory
belongs to the project (bug#62974).
| -rw-r--r-- | lisp/progmodes/project.el | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el index 04c67710d71..7c51778d5d4 100644 --- a/lisp/progmodes/project.el +++ b/lisp/progmodes/project.el | |||
| @@ -1327,13 +1327,23 @@ general form of conditions." | |||
| 1327 | (and (memq (cdr buffer) buffers) | 1327 | (and (memq (cdr buffer) buffers) |
| 1328 | (not | 1328 | (not |
| 1329 | (project--buffer-check | 1329 | (project--buffer-check |
| 1330 | (cdr buffer) project-ignore-buffer-conditions)))))) | 1330 | (cdr buffer) project-ignore-buffer-conditions))))) |
| 1331 | (read-buffer | 1331 | (buffer (read-buffer |
| 1332 | "Switch to buffer: " | 1332 | "Switch to buffer: " |
| 1333 | (when (funcall predicate (cons other-name other-buffer)) | 1333 | (when (funcall predicate (cons other-name other-buffer)) |
| 1334 | other-name) | 1334 | other-name) |
| 1335 | nil | 1335 | nil |
| 1336 | predicate))) | 1336 | predicate))) |
| 1337 | ;; XXX: This check hardcodes the default buffer-belonging relation | ||
| 1338 | ;; which `project-buffers' is allowed to override. Straighten | ||
| 1339 | ;; this up sometime later. Or not. Since we can add a method | ||
| 1340 | ;; `project-contains-buffer-p', but a separate method to create a | ||
| 1341 | ;; new project buffer seems too much. | ||
| 1342 | (if (or (get-buffer buffer) | ||
| 1343 | (file-in-directory-p default-directory (project-root pr))) | ||
| 1344 | buffer | ||
| 1345 | (let ((default-directory (project-root pr))) | ||
| 1346 | (get-buffer-create buffer))))) | ||
| 1337 | 1347 | ||
| 1338 | ;;;###autoload | 1348 | ;;;###autoload |
| 1339 | (defun project-switch-to-buffer (buffer-or-name) | 1349 | (defun project-switch-to-buffer (buffer-or-name) |