 See `svn-status--line-info->directory-p' for what counts as a directory."
   :group 'psvn-faces)
 
+;not based on anything, may be horribly ugly!
+(defface svn-status-symlink-face
+  '((((class color) (background light)) (:foreground "cornflower blue"))
+    (((class color) (background dark)) (:foreground "cyan")))
+  "Face for symlinks in *svn-status* buffers.
+
+This is the face given to the actual link (i.e., the versioned item),
+the target of the link gets either `svn-status-filename-face' or
+`svn-status-directory-face'."
+  :group 'psvn-faces)
+
 ;based on font-lock-warning-face
 (defface svn-status-locked-face
   '((t

                        (make-string (* 2 (svn-status-count-/
                                           (svn-status-line-info->filename line-info)))
                                     32))
                      (svn-status-choose-face-to-add
                       (svn-status-line-info->directory-p line-info)
                       (svn-status-line-info->filename-nondirectory line-info)
                       'svn-status-directory-face
                       'svn-status-filename-face)
                      ;; if it's a symlkink, add '-> target'
                      (let ((target (svn-status-line-info->symlink-p line-info)))
                        (when target
                          (concat " -> "
                                  ;; add face to target: could maybe
                                  ;; use different faces for
                                  ;; unversioned targets?
                                  (svn-status-choose-face-to-add
                                   (file-directory-p target)
                                   (file-relative-name
                                    target
                                    (svn-status-line-info->directory-containing-line-info
                                     line-info t)); name relative to dir of line-info, not '.'
                                   'svn-status-directory-face
                                   'svn-status-filename-face)
                                  )))
                      ))
        (elide-hint (if (svn-status-line-info->show-user-elide-continuation line-info) " ..." "")))
    (svn-puthash (svn-status-line-info->filename line-info)

          ;; [ie the directory in (match-string 1)]
          ;; we should parse it, and merge the info with what we have already know
          ;; but for now just ignore the line completely
          ; (forward-line)
          ;;  Actually, this seems to not always be the case
          ;;  I have an example where we are in an svn:external which
          ;;  is itself inside a svn:external, this need not be true:
          ;;  the next line is not 'X dir' but just 'dir', so we
          ;;  actually need to parse that line, or the results will
          ;;  not contain dir!
          ;; so we should merge lines 'X dir' with ' dir', but for now
          ;; we just leave both in the results
          nil)
         (t
          (setq svn-marks (buffer-substring (point) (+ (point) svn-marks-length))
                svn-file-mark (elt svn-marks 0)         ; 1st column - M,A,C,D,G,? etc
