]> code.delx.au - gnu-emacs-elpa/blobdiff - company-files.el
Removed superfluous quotes.
[gnu-emacs-elpa] / company-files.el
index f08479c9c610645d79162b6facffe81ddaaf576c..bc764698d7d171a6d62ac9fdff7f46c50ddb6cdb 100644 (file)
@@ -2,7 +2,7 @@
 ;;
 ;; Copyright (C) 2009 Nikolaj Schumacher
 ;;
-;; This file is part of company.
+;; This file is part of company 0.5.
 ;;
 ;; This program is free software; you can redistribute it and/or
 ;; modify it under the terms of the GNU General Public License
         (directory-files dir nil "\\`[^.]\\|\\`.[^.]")
       (file-name-all-completions prefix dir))))
 
+(defvar company-files-regexps
+  (let ((begin (if (eq system-type 'windows-nt)
+                   "[a-z][A-Z]\\"
+                 "~?/")))
+    (list (concat "\"\\(" begin "[^\"\n]*\\)")
+          (concat "\'\\(" begin "[^\'\n]*\\)")
+          (concat "\\(?:[ \t]\\|^\\)\\(" begin "[^ \t\n]*\\)"))))
+
 (defun company-files-grab-existing-name ()
   ;; Grab file names with spaces, only when they include quotes.
-  (let ((file (or (company-grab "\"\\(~?/[^\"\n]*\\)" 1)
-                  (company-grab "\'\\(~?/[^\'\n]*\\)" 1)
-                  (company-grab "[ \t\n]\\(~?/[^ \t\n]*\\)" 1)))
-        dir)
-    (and file
+  (let (file dir)
+    (and (dolist (regexp company-files-regexps)
+           (when (setq file (company-grab-line regexp 1))
+             (return file)))
          (setq dir (file-name-directory file))
+         (not (string-match "//" dir))
          (file-exists-p dir)
          (file-name-all-completions (file-name-nondirectory file) dir)
          file)))
@@ -44,7 +52,6 @@
   (let* ((dir (file-name-directory prefix))
          (file (file-name-nondirectory prefix))
          candidates)
-    (setq company-files-completion-cache nil)
     (unless (equal dir (car company-files-completion-cache))
       (dolist (file (company-files-directory-files dir file))
         (setq file (concat dir file))
       (setq company-files-completion-cache (cons dir (nreverse candidates))))
     (cdr company-files-completion-cache)))
 
+;;;###autoload
 (defun company-files (command &optional arg &rest ignored)
   "a `company-mode' completion back-end existing file names."
+  (interactive (list 'interactive))
   (case command
-    ('prefix (company-files-grab-existing-name))
-    ('candidates (company-files-complete arg))
-    ('location (cons (dired-noselect
-                      (file-name-directory (directory-file-name arg))) 1))
-    ('sorted t)
-    ('no-cache t)))
+    (interactive (company-begin-backend 'company-files))
+    (prefix (company-files-grab-existing-name))
+    (candidates (company-files-complete arg))
+    (location (cons (dired-noselect
+                     (file-name-directory (directory-file-name arg))) 1))
+    (sorted t)
+    (no-cache t)))
 
 (provide 'company-files)
 ;;; company-files.el ends here