From: Dmitry Gutov Date: Thu, 27 Dec 2012 00:55:13 +0000 (+0400) Subject: * company-elisp: complete features and faces, X-Git-Url: https://code.delx.au/gnu-emacs-elpa/commitdiff_plain/843455d84ba4de1140232b4f540fa50105081e4f * company-elisp: complete features and faces, find docs and definitions of non-function symbols properly --- diff --git a/company-elisp.el b/company-elisp.el index 1e2b17176..1073f28cc 100644 --- a/company-elisp.el +++ b/company-elisp.el @@ -38,7 +38,9 @@ Functions are offered for completion only after ' and \(." (defun company-elisp-predicate (symbol) (or (boundp symbol) - (fboundp symbol))) + (fboundp symbol) + (facep symbol) + (featurep symbol))) (defvar company-elisp-parse-limit 30) (defvar company-elisp-parse-depth 100) @@ -116,13 +118,22 @@ Functions are offered for completion only after ' and \(." (meta (company-elisp-doc arg)) (doc-buffer (let ((symbol (intern arg))) (save-window-excursion - (when (or (ignore-errors (describe-function symbol)) - (ignore-errors (describe-variable symbol))) + (ignore-errors + (cond + ((fboundp symbol) (describe-function symbol)) + ((boundp symbol) (describe-variable symbol)) + ((featurep symbol) (describe-package symbol)) + ((facep symbol) (describe-face symbol)) + (t (signal 'user-error nil))) (help-buffer))))) (location (let ((sym (intern arg))) - (or (ignore-errors (find-definition-noselect sym nil)) - (ignore-errors (find-definition-noselect sym 'defvar)) - (ignore-errors (find-definition-noselect sym t))))))) + (cond + ((fboundp sym) (find-definition-noselect sym nil)) + ((boundp sym) (find-definition-noselect sym 'defvar)) + ((featurep sym) (cons (find-file-noselect (find-library-name + (symbol-name sym))) + 0)) + ((facep sym) (find-definition-noselect sym 'defface))))))) (provide 'company-elisp) ;;; company-elisp.el ends here