   ;; First retrieve the property names, and then the value of each.
   ;; We can't use proplist -v because is output is ambiguous when values
   ;; consist of multiple lines.
-  (unless (svn-run-predicate 'ls (list file))
+  (if (string-equal (svn-run-for-stdout 'info (list file)) "")
     (error "%s is not under version control" file))
   (let (propnames)
     (with-current-buffer (svn-run-hidden 'proplist (list file))

	     (memq (svn-file-status pos) '(?\  ?D)))
	   (svn-can-undo-deletion-p (cdr actions)))))

(defun svn-remove-file ()
  "Remove the selected files."
  (interactive)
  (let ((actions (svn-actions))
        (inhibit-read-only t))
    (when (or (svn-can-undo-deletion-p actions)
	      (y-or-n-p (format "Really remove %d %s? "
				(length actions)
				(if (> (length actions) 1)
				    "files"
				  "file"))))
      (let ((svn-files ()))
        (mapc (lambda (fp)
		(let ((file (car fp))
		      (pos (cadr fp)))
		  (if (/= (svn-file-status pos) ?\?)
		      (setq svn-files (cons file svn-files))
		    (delete-file file)
		    (svn-remove-line pos))))
	      ;; traverse the list backwards, to keep buffer positions of
	      ;; remaining files valid

      (insert str)
      (goto-char svn-output-marker)
      (while (cond ((looking-at
                     "\\([ ACDGIMRX?!~][ CM][ L][ +][ S][ KOTB]\\)[ C]? \\([^ ].*\\)\n")
                    (let ((status (match-string 1))
                          (filename (match-string 2)))
                      (delete-region (match-beginning 0)
