| @@ -1,6 +1,6 @@ | |||
| ;;; emacs.el --- 10sr emacs initialization | |||
| ;; Time-stamp: <2018-10-11 11:59:55 JST 10sr> | |||
| ;; Time-stamp: <2018-10-11 13:23:44 JST 10sr> | |||
| ;;; Code: | |||
| @@ -2246,21 +2246,45 @@ use for the buffer. It defaults to \"*recetf-show*\"." | |||
| :prefix "git-revision-" | |||
| :group 'tools) | |||
| (defun git-revision-open-tree (treeish) | |||
| "Open git tree buffer of TREEISH.") | |||
| (defun git-revision--open-tree (tree) | |||
| "Open git tree buffer of TREE.") | |||
| (defun git-revision-open (commit) | |||
| "Open git tree buffer of COMMIT.") | |||
| (defun git-revision-open (commitish) | |||
| "Open git tree buffer of COMMITISH." | |||
| (interactive (list (magit-read-branch-or-commit "Revision: "))) | |||
| (git-revision--open-tree (git-revision--resolve-treeish commitish))) | |||
| (defcustom git-revision-git-executable "git" | |||
| "Git executable." | |||
| :type 'string | |||
| :group 'git-revision) | |||
| (defun git-revision--resolve-treeish (commit) | |||
| "Get treeish id from COMMIT." | |||
| (cl-assert commit) | |||
| (cl-assert (not (string= "" commit))) | |||
| (defun git-revision--git-plumbing (&rest args) | |||
| "Run git plubming command with ARGS. | |||
| Returns first line of output without newline." | |||
| (with-temp-buffer | |||
| (let ((status (apply 'call-process | |||
| git-revision-git-executable | |||
| nil | |||
| t | |||
| nil | |||
| args))) | |||
| (unless (eq 0 | |||
| status) | |||
| (error "Faild to run git %S\n%s" | |||
| args | |||
| (buffer-substring-no-properties (point-min) | |||
| (point-max)))) | |||
| (buffer-substring-no-properties (point-min) | |||
| (progn | |||
| (goto-char (point-min)) | |||
| (point-at-eol)))))) | |||
| (defun git-revision--resolve-treeish (commitish) | |||
| "Get treeish id from COMMITISH." | |||
| (cl-assert commitish) | |||
| (cl-assert (not (string= "" commitish))) | |||
| (with-temp-buffer | |||
| (let ((status (call-process git-revision-git-executable | |||
| nil | |||
| @@ -2268,15 +2292,15 @@ use for the buffer. It defaults to \"*recetf-show*\"." | |||
| nil | |||
| "cat-file" | |||
| "-p" | |||
| commit))) | |||
| commitish))) | |||
| (unless (eq 0 | |||
| status) | |||
| (error "Failed to run cat-file for %s" commit)) | |||
| (error "Failed to run cat-file for %s" commitish)) | |||
| (goto-char (point-min)) | |||
| (save-match-data | |||
| (re-search-forward "^tree \\([0-9a-f]+\\)$") | |||
| (or (match-string 1) | |||
| (error "Failed to find treeish for %s" commit)))))) | |||
| (error "Failed to find treeish for %s" commitish)))))) | |||
| (git-revision--resolve-treeish "HEAD") | |||