magit-mode-get-buffer: support getting locked buffers
Jonas Bernoulli
8 years ago
554 | 554 | (defvar-local magit-buffer-locked-p nil) |
555 | 555 | (put 'magit-buffer-locked-p 'permanent-local t) |
556 | 556 | |
557 | (defun magit-mode-get-buffer (mode &optional create frame) | |
557 | (defun magit-mode-get-buffer (mode &optional create frame value) | |
558 | 558 | (-if-let (topdir (magit-toplevel)) |
559 | 559 | (or (--first (with-current-buffer it |
560 | 560 | (and (eq major-mode mode) |
561 | 561 | (equal magit--default-directory topdir) |
562 | (not magit-buffer-locked-p))) | |
562 | (if value | |
563 | (and magit-buffer-locked-p | |
564 | (equal (magit-buffer-lock-value) value)) | |
565 | (not magit-buffer-locked-p)))) | |
563 | 566 | (if frame |
564 | 567 | (-map #'window-buffer |
565 | 568 | (window-list (unless (eq frame t) frame))) |
566 | 569 | (buffer-list))) |
567 | 570 | (and create |
568 | 571 | (let ((default-directory topdir)) |
569 | (magit-generate-new-buffer mode)))) | |
572 | (magit-generate-new-buffer mode value)))) | |
570 | 573 | (user-error "Not inside a Git repository"))) |
571 | 574 | |
572 | 575 | (defun magit-generate-new-buffer (mode &optional value) |