+<<<<<<< ChangeLog
+2008-05-16 Eric S. Raymond <esr@snark.thyrsus.com>
+
+ * vc.el (vc-default-status-printer)
+ (vc-default-prettify-state-info): Enhance the state prettyprinter
+ to deall better with unknown states and indirect through it when
+ painting vc-dir buffers.
+
2008-05-16 John Paul Wallington <jpw@pobox.com>
* vc-dispatcher.el (top-level): Don't require cl when compiling.
(defun vc-default-status-printer (backend fileentry)
"Pretty print FILEENTRY."
;; If you change the layout here, change vc-dir-move-to-goal-column.
- (let ((state
- (if (vc-dir-fileinfo->directory fileentry)
- 'DIRECTORY
- (vc-dir-fileinfo->state fileentry))))
+ (let* ((isdir (vc-dir-fileinfo->directory fileentry))
+ (state (if isdir 'DIRECTORY (vc-dir-fileinfo->state fileentry)))
+ (filename (vc-dir-fileinfo->name fileentry))
+ (prettified (if isdir state (vc-call-backend backend 'prettify-state-info filename))))
(insert
(propertize
(format "%c" (if (vc-dir-fileinfo->marked fileentry) ?* ? ))
'face 'font-lock-type-face)
" "
(propertize
- (format "%-20s" state)
+ (format "%-20s" prettified)
'face (cond ((eq state 'up-to-date) 'font-lock-builtin-face)
((memq state '(missing conflict)) 'font-lock-warning-face)
(t 'font-lock-variable-name-face))
'mouse-face 'highlight)
" "
(propertize
- (format "%s" (vc-dir-fileinfo->name fileentry))
+ (format "%s" filename)
'face 'font-lock-function-name-face
'mouse-face 'highlight))))
(let* ((state (vc-state file))
(statestring
(cond
- ((stringp state) (concat "(" state ")"))
+ ((stringp state) (concat "(locked:" state ")"))
((eq state 'edited) "(modified)")
((eq state 'needs-merge) "(merge)")
((eq state 'needs-update) "(update)")
((eq state 'added) "(added)")
((eq state 'removed) "(removed)")
((eq state 'ignored) "(ignored)")
- ((eq state 'unregistered) "?")
+ ((eq state 'unregistered) "(unregistered)")
((eq state 'unlocked-changes) "(stale)")
- ((not state) "(unknown)")))
+ (t (concat "(unknown:" state ")"))))
(buffer
(get-file-buffer file))
(modflag