| @@ -1,6 +1,6 @@ | |||||
| ;;; emacs.el --- 10sr emacs initialization | ;;; emacs.el --- 10sr emacs initialization | ||||
| ;; Time-stamp: <2018-10-17 15:16:49 JST 10sr> | |||||
| ;; Time-stamp: <2018-10-17 15:31:39 JST 10sr> | |||||
| ;;; Code: | ;;; Code: | ||||
| @@ -2696,32 +2696,32 @@ PARENT should be a full SHA-1 object name." | |||||
| PARENT should be a full SHA-1 object name." | PARENT should be a full SHA-1 object name." | ||||
| (gethash parent git-walktree-known-child-revisions)) | (gethash parent git-walktree-known-child-revisions)) | ||||
| ;; Delete this function | |||||
| (defun git-walktree--parent-revision-1 (revision) | |||||
| "Open parent revision REVISION. | |||||
| This function does the following things: | |||||
| - Check if current path exists in REVISION. If not, go up until path was found. | |||||
| - Create buffer for REVISION and path found. | |||||
| - Add revision sha1 of source buffer to created buffer's | |||||
| `git-wwalktree-known-child-revisions'. | |||||
| - Switch to new buffer." | |||||
| (let* ((child-revision (git-walktree--git-plumbing "rev-parse" | |||||
| git-walktree-current-commitish)) | |||||
| (path git-walktree-current-path) | |||||
| (obj (git-walktree--resolve-object revision path))) | |||||
| (cl-assert path) | |||||
| (while (not obj) | |||||
| (setq path | |||||
| (git-walktree--parent-directory path)) | |||||
| (setq obj | |||||
| (git-walktree--resolve-object revision path))) | |||||
| (with-current-buffer (switch-to-buffer (git-walktree--open-noselect revision | |||||
| path | |||||
| obj)) | |||||
| (git-walktree--put-child revision | |||||
| child-revision)))) | |||||
| ;; ;; Delete this function | |||||
| ;; (defun git-walktree--parent-revision-1 (revision) | |||||
| ;; "Open parent revision REVISION. | |||||
| ;; This function does the following things: | |||||
| ;; - Check if current path exists in REVISION. If not, go up until path was found. | |||||
| ;; - Create buffer for REVISION and path found. | |||||
| ;; - Add revision sha1 of source buffer to created buffer's | |||||
| ;; `git-wwalktree-known-child-revisions'. | |||||
| ;; - Switch to new buffer." | |||||
| ;; (let* ((child-revision (git-walktree--git-plumbing "rev-parse" | |||||
| ;; git-walktree-current-commitish)) | |||||
| ;; (path git-walktree-current-path) | |||||
| ;; (obj (git-walktree--resolve-object revision path))) | |||||
| ;; (cl-assert path) | |||||
| ;; (while (not obj) | |||||
| ;; (setq path | |||||
| ;; (git-walktree--parent-directory path)) | |||||
| ;; (setq obj | |||||
| ;; (git-walktree--resolve-object revision path))) | |||||
| ;; (with-current-buffer (switch-to-buffer (git-walktree--open-noselect revision | |||||
| ;; path | |||||
| ;; obj)) | |||||
| ;; (git-walktree--put-child revision | |||||
| ;; child-revision)))) | |||||
| (defun git-walktree--completing-read-commitish (prompt-format collection) | (defun git-walktree--completing-read-commitish (prompt-format collection) | ||||
| "Emit PROMPT-FORMAT and ask user to which commitish of COLLECTION to use. | "Emit PROMPT-FORMAT and ask user to which commitish of COLLECTION to use. | ||||
| @@ -2742,16 +2742,34 @@ When collection has just one element, return without asking." | |||||
| "Open parent revision of current path. | "Open parent revision of current path. | ||||
| If current path was not found in the parent revision try to go up path." | If current path was not found in the parent revision try to go up path." | ||||
| (interactive) | (interactive) | ||||
| (if git-walktree-current-commitish | |||||
| (let ((parents (git-walktree--parent-commitid git-walktree-current-commitish))) | |||||
| ;; TODO: Use if | |||||
| (cl-case (length parents) | |||||
| (0 | |||||
| (message "This revision has no parent revision")) | |||||
| (t | |||||
| (let ((parent (git-walktree--completing-read-commitish "This revision has multiple parents. Which to open? (%s) " | |||||
| parents))) | |||||
| (git-walktree--parent-revision-1 parent))))))) | |||||
| (cl-assert git-walktree-current-commitish) | |||||
| (let* ((commitid (git-walktree--git-plumbing "rev-parse" | |||||
| git-walktree-current-commitish)) | |||||
| (parents (git-walktree--parent-commitid commitid))) | |||||
| (if (< (length parents) | |||||
| 1) | |||||
| (message "This revision has no parent revision") | |||||
| (let* ((parent (git-walktree--completing-read-commitish "This revision has multiple parents. Which to open? (%s) " | |||||
| parents)) | |||||
| (path git-walktree-current-path) | |||||
| (obj (git-walktree--resolve-object parent path))) | |||||
| (cl-assert path) | |||||
| (while (not obj) | |||||
| (setq path | |||||
| (git-walktree--parent-directory path)) | |||||
| (setq obj | |||||
| (git-walktree--resolve-object parent path))) | |||||
| (switch-to-buffer (git-walktree--open-noselect parent | |||||
| path | |||||
| obj)) | |||||
| (git-walktree--put-child parent | |||||
| commitid))))) | |||||
| ;; (cl-case (length parents) | |||||
| ;; (0 | |||||
| ;; (t | |||||
| ;; (let ((parent (git-walktree--completing-read-commitish "This revision has multiple parents. Which to open? (%s) " | |||||
| ;; parents))) | |||||
| ;; (git-walktree--parent-revision-1 parent))))))) | |||||
| ;; TODO: this name is good? | ;; TODO: this name is good? | ||||
| ;; What is revision? | ;; What is revision? | ||||