X-Git-Url: https://code.delx.au/gnu-emacs-elpa/blobdiff_plain/9d39b74346631432f4a76b9ef4f6a06e80f0e168..a95d7f1d6a25c11496f0606eb868343505db921b:/company-files.el diff --git a/company-files.el b/company-files.el index 0e2ab4d29..53730c6e0 100644 --- a/company-files.el +++ b/company-files.el @@ -1,6 +1,6 @@ -;;; company-files.el --- company-mode completion back-end for file paths +;;; company-files.el --- company-mode completion backend for file paths -;; Copyright (C) 2009-2011, 2014 Free Software Foundation, Inc. +;; Copyright (C) 2009-2011, 2014-2015 Free Software Foundation, Inc. ;; Author: Nikolaj Schumacher @@ -50,12 +50,17 @@ (and (cl-dolist (regexp company-files--regexps) (when (setq file (company-grab-line regexp 1)) (cl-return file))) + (company-files--connected-p 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))) +(defun company-files--connected-p (file) + (or (not (file-remote-p file)) + (file-remote-p file nil t))) + (defvar company-files--completion-cache nil) (defun company-files--complete (prefix) @@ -64,13 +69,15 @@ (expand-file-name dir) (nth 5 (file-attributes dir)))) (file (file-name-nondirectory prefix)) + (completion-ignore-case read-file-name-completion-ignore-case) candidates directories) (unless (company-file--keys-match-p key (car company-files--completion-cache)) (dolist (file (company-files--directory-files dir file)) (setq file (concat dir file)) - (push file candidates) - (when (file-directory-p file) - (push file directories))) + (when (company-files--connected-p file) + (push file candidates) + (when (file-directory-p file) + (push file directories)))) (dolist (directory (reverse directories)) ;; Add one level of children. (dolist (child (company-files--directory-files directory "")) @@ -82,12 +89,12 @@ (cdr company-files--completion-cache)))) (defun company-file--keys-match-p (new old) - (and (string-prefix-p (car old) (car new)) - (equal (cdr old) (cdr new)))) + (and (equal (cdr old) (cdr new)) + (string-prefix-p (car old) (car new)))) ;;;###autoload (defun company-files (command &optional arg &rest ignored) - "`company-mode' completion back-end existing file names. + "`company-mode' completion backend existing file names. Completions works for proper absolute and relative files paths. File paths with spaces are only supported inside strings." (interactive (list 'interactive))