 ;; * *   - svn-status-mark-changed
 ;; * .   - svn-status-mark-by-file-ext
 ;; * %   - svn-status-mark-filename-regexp
+;; * s   - svn-status-store-usermarks
+;; * l   - svn-status-load-usermarks
 ;; .     - svn-status-goto-root-or-return
 ;; f     - svn-status-find-file
 ;; o     - svn-status-find-file-other-window

     ["Mark/Unmark modified/added/deleted" svn-status-mark-changed t]
     ["Mark/Unmark filename by extension" svn-status-mark-by-file-ext t]
     ["Mark/Unmark filename by regexp" svn-status-mark-filename-regexp t]
     )
    ["Hide Unknown" svn-status-toggle-hide-unknown
     :style toggle :selected svn-status-hide-unknown]

  (interactive)
  (svn-status-apply-usermark-checked '(lambda (info) t) nil))

(defun svn-status-store-usermarks (arg)
  "Store the current usermarks in `svn-status-usermark-storage'.
When called with a prefix argument it is possible to store different sets of marks."
  (interactive "P")
  (let ((file-list (svn-status-get-file-list-names t)))
    (svn-puthash arg file-list svn-status-usermark-storage)
    (message "psvn stored %d user marks" (length file-list))))

(defun svn-status-load-usermarks (arg)
  "Load previously stored user marks from `svn-status-usermark-storage'.
When called with a prefix argument it is possible to store/load different sets of marks."
  (interactive "P")
  (let ((file-list (gethash arg svn-status-usermark-storage)))
    (svn-status-apply-usermark-checked
     '(lambda (info) (member (svn-status-line-info->filename-nondirectory info) file-list)) t)))

(defvar svn-status-regexp-history nil
  "History list of regular expressions used in svn status commands.")

