   (svn-status-create-arg-file svn-status-temp-arg-file "" (svn-status-get-file-list (not arg)) "")
   (svn-run t t 'add "add" "--non-recursive" "--targets" svn-status-temp-arg-file))
 
+(defun svn-status-lock (arg)
+  "Run `svn lock' on all selected files.
+See `svn-status-marked-files' for what counts as selected."
+  (interactive "P")
+  (message "locking: %S" (svn-status-get-file-list-names t))
+  (svn-status-create-arg-file svn-status-temp-arg-file "" (svn-status-get-file-list t) "")
+  (svn-run t t 'lock "lock" "--targets" svn-status-temp-arg-file))
+
+(defun svn-status-unlock (arg)
+  "Run `svn unlock' on all selected files.
+See `svn-status-marked-files' for what counts as selected."
+  (interactive "P")
+  (message "unlocking: %S" (svn-status-get-file-list-names t))
+  (svn-status-create-arg-file svn-status-temp-arg-file "" (svn-status-get-file-list t) "")
+  (svn-run t t 'unlock "unlock" "--targets" svn-status-temp-arg-file))
+
 (defun svn-status-make-directory (dir)
   "Run `svn mkdir DIR'."
   ;; TODO: Allow entering a URI interactively.

                                            last-change-rev
                                            author
                                            svn-update-mark
                                            svn-locked-mark
                                            svn-with-history-mark
                                            svn-switched-mark)
                                      svn-status-info))
          (setq revision-width (max revision-width
                                    (length (number-to-string local-rev))

          (revision-width svn-status-default-revision-width)
          (author-width svn-status-default-author-width)
          (svn-marks-length (if (and svn-status-verbose svn-status-remote)
                                8 6))
          (dir-set '(".")))
      (set-buffer "*svn-process*")
      (setq svn-status-info nil)
