| @@ -2180,7 +2180,7 @@ initializing." | |||||
| (path (plist-get id :worktree))) | (path (plist-get id :worktree))) | ||||
| (cl-assert path nil "No worktree info at point") | (cl-assert path nil "No worktree info at point") | ||||
| (cl-assert (file-directory-p path) t "Directory not found") | (cl-assert (file-directory-p path) t "Directory not found") | ||||
| (let ((new (read-file-name (format "New name for worktree %s: " | |||||
| (let ((new (read-file-name (format "New name for worktree \"%s\": " | |||||
| path)))) | path)))) | ||||
| (with-temp-buffer | (with-temp-buffer | ||||
| (git-worktree--call-process "worktree" | (git-worktree--call-process "worktree" | ||||
| @@ -2189,6 +2189,20 @@ initializing." | |||||
| (expand-file-name new))) | (expand-file-name new))) | ||||
| (revert-buffer)))) | (revert-buffer)))) | ||||
| (defun git-worktree-mode-add () | |||||
| "Add new git worktree." | |||||
| (interactive) | |||||
| (let* ((path (read-file-name "Path of new worktree: ")) | |||||
| (commitish (read-string (format "Commitish to checkout to \"%s\" (Empty to omit): " | |||||
| path))) | |||||
| (args (append '("worktree" "add") | |||||
| (if (string= "" commitish) | |||||
| (list (expand-file-name path)) | |||||
| (list (expand-file-name path) commitish))))) | |||||
| (with-temp-buffer | |||||
| (apply 'git-worktree--call-process args)) | |||||
| (revert-buffer))) | |||||
| (defvar git-worktree-mode-map | (defvar git-worktree-mode-map | ||||
| (let ((map (make-sparse-keymap))) | (let ((map (make-sparse-keymap))) | ||||
| (suppress-keymap map) | (suppress-keymap map) | ||||
| @@ -2196,7 +2210,7 @@ initializing." | |||||
| (define-key map (kbd "C-m") 'git-worktree-mode-go) | (define-key map (kbd "C-m") 'git-worktree-mode-go) | ||||
| (define-key map "R" 'git-worktree-mode-move) | (define-key map "R" 'git-worktree-mode-move) | ||||
| (define-key map "D" 'git-worktree-mode-remove) | (define-key map "D" 'git-worktree-mode-remove) | ||||
| (define-key map (kbd "C-g") 'git-worktree-mode-close) | |||||
| ;; (define-key map (kbd "C-g") 'git-worktree-mode-close) | |||||
| (define-key map "/" 'isearch-forward) | (define-key map "/" 'isearch-forward) | ||||
| map)) | map)) | ||||