X-Git-Url: https://code.delx.au/gnu-emacs-elpa/blobdiff_plain/a5702681cf9fe0a14be67e1d4d3b4ea3807fa9b0..250ca1c395c6f05b733abce69a2d928b6cd31618:/company-files.el diff --git a/company-files.el b/company-files.el index baaeaca4b..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 "")) @@ -87,7 +94,7 @@ ;;;###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))