mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-15 10:30:25 -08:00
(vc-git-after-dir-status, vc-git-dir-status): New funcs.
This commit is contained in:
parent
917844623b
commit
758dc0cc60
2 changed files with 51 additions and 0 deletions
|
|
@ -1,3 +1,7 @@
|
|||
2008-02-18 Thien-Thi Nguyen <ttn@gnuvola.org>
|
||||
|
||||
* vc-git.el (vc-git-after-dir-status, vc-git-dir-status): New funcs.
|
||||
|
||||
2008-02-18 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* image-mode.el (image-get-display-property): New fun.
|
||||
|
|
|
|||
|
|
@ -207,6 +207,53 @@
|
|||
;; fall back to the default VC representation
|
||||
(vc-default-dired-state-info 'Git file))))
|
||||
|
||||
;;; vc-dir-status support (EXPERIMENTAL)
|
||||
;;; If vc-directory (which is not half bad under Git, w/ some tweaking)
|
||||
;;; is to go away, vc-dir-status must at least support the same operations.
|
||||
;;; At the moment, vc-dir-status design is still fluid (a kind way to say
|
||||
;;; half-baked, undocumented, and spottily-supported), so the following
|
||||
;;; should be considered likewise ripe for sudden unannounced change.
|
||||
;;; YHBW, HAND. --ttn
|
||||
|
||||
(defun vc-git-after-dir-status (callback buffer)
|
||||
(sort-regexp-fields t "^. \\(.+\\)$" "\\1" (point-min) (point-max))
|
||||
(let ((map '((?H . cached)
|
||||
(?M . unmerged)
|
||||
(?R . removed)
|
||||
(?C . edited)
|
||||
(?K . removed) ; ??? "to be killed"
|
||||
(?? . unregistered)))
|
||||
status filename result)
|
||||
(goto-char (point-min))
|
||||
(while (> (point-max) (point))
|
||||
(setq status (string-to-char (buffer-substring (point) (1+ (point))))
|
||||
status (cdr (assq status map))
|
||||
filename (buffer-substring (+ 2 (point)) (line-end-position)))
|
||||
;; TODO: Add dynamic selection of which status(es) to display, and
|
||||
;; bubble that up to vc-dir-status. For now, we consider `cached'
|
||||
;; to be uninteresting, to mimic vc-directory (somewhat).
|
||||
(unless (eq 'cached status)
|
||||
(push (cons filename status) result))
|
||||
(forward-line 1))
|
||||
(funcall callback result buffer)))
|
||||
|
||||
(defun vc-git-dir-status (dir update-function status-buffer)
|
||||
"Return a list of conses (file . state) for DIR."
|
||||
(with-current-buffer
|
||||
(get-buffer-create
|
||||
(expand-file-name " *VC-Git* tmp status" dir))
|
||||
(erase-buffer)
|
||||
(vc-git-command (current-buffer) 'async dir "ls-files" "-t"
|
||||
"-c" ; cached
|
||||
"-d" ; deleted
|
||||
"-k" ; killed
|
||||
"-m" ; modified
|
||||
"-o" ; others
|
||||
"--directory"
|
||||
"--exclude-per-directory=.gitignore")
|
||||
(vc-exec-after
|
||||
`(vc-git-after-dir-status (quote ,update-function) ,status-buffer))))
|
||||
|
||||
;;; STATE-CHANGING FUNCTIONS
|
||||
|
||||
(defun vc-git-create-repo ()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue