     (maybe-set-var 'file-list-cache #'expand-file-name)
     (maybe-set-var 'open-files-cache #'expand-file-name)))
 
-(defun project-load ()
+(defun project-load (&optional name)
   "Load a project's settings."
   (interactive)
   (catch 'project-load
     (let ((oldname mk-proj-name)
-          (name (if (mk-proj-use-ido)
-                    (ido-completing-read "Project Name (ido): " (mk-proj-names))
-                  (completing-read "Project Name: " (mk-proj-names)))))
+          (name (or name
+                    (if (mk-proj-use-ido)
+                        (ido-completing-read "Project Name (ido): "
+                                             (mk-proj-names))
+                      (completing-read "Project Name: " (mk-proj-names))))))
       (unless (string= oldname name)
         (project-unload))
       (let ((proj-config (mk-proj-find-config name)))

                               (mk-proj-buffers))
               regex))

(provide 'mk-project)

;;; mk-project.el ends here

          mk-proj-ack-args " "
          regex))

(defun project-ack (&optional phrase from-current-dir)
  "Run ack from project's basedir, using the `ack-args' configuration.
With C-u prefix, start ack from the current directory."
  (interactive)
  (mk-proj-assert-proj)
  (let* ((wap (word-at-point))
         (regex (or phrase
                    (if wap (read-string (concat "Ack project for (default \"" wap "\"): ") nil nil wap)
                  (read-string "Ack project for: "))))
         (whole-cmd (mk-proj-ack-cmd regex))
         (confirmed-cmd (read-string "Ack command: " whole-cmd nil whole-cmd))
         (default-directory (file-name-as-directory
                             (if (or from-current-dir (mk-proj-has-univ-arg))
                                 default-directory
                               mk-proj-basedir))))
    (compilation-start confirmed-cmd 'ack-mode)))
