           (setq projects (cdr projects)))
         (setq apm-project-local-vars-is-set isset))))
 
+(defun apm--get-project-files ()
+  (let ((project (apm--find-project default-directory)))
+    (when project
+      (with-temp-buffer
+          (setq default-directory (concat (apm-project-path project) "/"))
+          (let ((project-find-args (apm-project-find-args project)))
+            (split-string (shell-command-to-string (concat "find . -not -path '*/.*/*' -not -name '.*' -type f"
+                                                           (if project-find-args project-find-args "")))))))))
+
+(defun apm-find-file-in-project (arg)
+  (interactive "P")
+  (let ((project (apm--find-project default-directory)))
+    (if (and project (not arg))
+        (with-temp-buffer
+          (setq default-directory (concat (apm-project-path project) "/"))
+          (find-file (completing-read "Find file: " (apm--get-project-files))))
+      (call-interactively 'find-file))))
+
 (defun apm--apply-global-vars ()
   (let ((project (apm--find-project default-directory)))
     (if project

;; SOFTWARE.

;;; Change Log:
;; 2.2.5 - Remove ugly code
;; 2.2.4 - Improve code
;; 2.2.3 - Remove irony autoload .clang_complete

(define-key apm-mode-map (kbd "C-c c") 'apm-compile)
(define-key apm-mode-map (kbd "C-c q") 'apm-compile-close)
(define-key apm-mode-map (kbd "C-c C-f") 'apm-find-project)
(define-key apm-mode-map (kbd "C-x C-f") 'apm-find-file-in-project)

;;;###autoload
(define-globalized-minor-mode global-apm-minor-mode
