emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] 09/30: company-files.el: Change regexp prefix


From: Dmitry Gutov
Subject: [elpa] 09/30: company-files.el: Change regexp prefix
Date: Tue, 14 Oct 2014 22:22:46 +0000

dgutov pushed a commit to branch master
in repository elpa.

commit 06fed5f754de74fbae24eb6445d104650a0b4c14
Author: James Browder <address@hidden>
Date:   Sun Sep 21 17:52:53 2014 -0500

    company-files.el: Change regexp prefix
    
    * Fix Windows drive letters recognition.
    * Complete relative paths, starting with ./ or ../.
---
 company-files.el |   16 ++++++++++------
 1 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/company-files.el b/company-files.el
index 3dc4d86..c8fba51 100644
--- a/company-files.el
+++ b/company-files.el
@@ -35,9 +35,10 @@
       (file-name-all-completions prefix dir))))
 
 (defvar company-files-regexps
-  (let ((begin (if (eq system-type 'windows-nt)
-                   "[a-z][A-Z]\\"
-                 "~?/")))
+  (let* ((begin (if (eq system-type 'windows-nt)
+                    "[a-zA-Z]:/"
+                  "/"))
+         (begin (concat "\\(?:\\.\\{1,2\\}/\\|~/\\|" begin "\\)")))
     (list (concat "\"\\(" begin "[^\"\n]*\\)")
           (concat "\'\\(" begin "[^\'\n]*\\)")
           (concat "\\(?:[ \t]\\|^\\)\\(" begin "[^ \t\n]*\\)"))))
@@ -58,9 +59,10 @@
 
 (defun company-files-complete (prefix)
   (let* ((dir (file-name-directory prefix))
+         (dir-exp (expand-file-name dir))
          (file (file-name-nondirectory prefix))
          candidates directories)
-    (unless (equal dir (car company-files-completion-cache))
+    (unless (equal dir-exp (car company-files-completion-cache))
       (dolist (file (company-files-directory-files dir file))
         (setq file (concat dir file))
         (push file candidates)
@@ -72,13 +74,15 @@
           (push (concat directory
                         (unless (eq (aref directory (1- (length directory))) 
?/) "/")
                         child) candidates)))
-      (setq company-files-completion-cache (cons dir (nreverse candidates))))
+      (setq company-files-completion-cache (cons dir-exp (nreverse 
candidates))))
     (all-completions prefix
                      (cdr company-files-completion-cache))))
 
 ;;;###autoload
 (defun company-files (command &optional arg &rest ignored)
-  "`company-mode' completion back-end existing file names."
+  "`company-mode' completion back-end existing file names.
+Completions are triggered when the text inside quotes starts with any of 
+the following: ./, ../, ~/, or root drive"
   (interactive (list 'interactive))
   (cl-case command
     (interactive (company-begin-backend 'company-files))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]