Browse Source

Update

master
10sr 6 years ago
parent
commit
de8e752ee5
Signed by: 10sr GPG Key ID: 7BEC428194130EB2
1 changed files with 34 additions and 1 deletions
  1. +34
    -1
      emacs.el

+ 34
- 1
emacs.el View File

@@ -1,6 +1,6 @@
;;; emacs.el --- 10sr emacs initialization

;; Time-stamp: <2018-10-11 14:21:14 JST 10sr>
;; Time-stamp: <2018-10-11 18:29:21 JST 10sr>

;;; Code:

@@ -2270,6 +2270,8 @@ use for the buffer. It defaults to \"*recetf-show*\"."
(insert "\n"))
(git-revision--call-process nil
"ls-tree"
"-r"
"--abbrev"
treeish)
(git-revision-mode))
buf))
@@ -2320,10 +2322,41 @@ Returns first line of output without newline."
(goto-char (point-min))
(point-at-eol))))))

(defun git-revision--extract-object-info (str)
"Extract object info from STR.

STR should be a string like following:

100644 blob 6fd4d58202d0b46547c6fe43de0f8c878456f966 .editorconfig

Returns property list like (:mode MODE :type TYPE :object OBJECT :file FILE)."
(let (result mode type object file)
(save-match-data
(with-temp-buffer
(insert str)
(goto-char (point-min))
(and (re-search-forward "\\`\\([0-9]\\{6\\}\\) \\(\\w+\\) \\([0-9a-f]+\\)\t\\(.*\\)\\'"
nil
t)
(list :mode (match-string 1)
:type (match-string 2)
:object (match-string 3)
:file (match-string 4)))))))
;; (plist-get (git-revision--extract-object-info "100644 blob 6fd4d58202d0b46547c6fe43de0f8c878456f966 .editorconfig") :mode)
;; (git-revision--extract-object-info "100644 blob 6fd4d58202d0b46547c6fe43de0f8c878456f966")

(defun git-revision-mode-open-this ()
"Open current object."
(interactive)
(let ((info (git-revision--extract-object-info (buffer-substring-no-properties (point-at-bol)
(point-at-eol)))))
(message "%S" info)))

(defvar git-revision-mode-map
(let ((map (make-sparse-keymap)))
(define-key map "n" 'next-line)
(define-key map "p" 'previous-line)
(define-key map (kbd "C-m") 'git-revision-mode-open-this)
map))

(define-derived-mode git-revision-mode special-mode "git-revision"


Loading…
Cancel
Save