]> code.delx.au - gnu-emacs-elpa/commitdiff
* company-elisp: complete features and faces,
authorDmitry Gutov <dgutov@yandex.ru>
Thu, 27 Dec 2012 00:55:13 +0000 (04:55 +0400)
committerDmitry Gutov <dgutov@yandex.ru>
Thu, 27 Dec 2012 00:55:13 +0000 (04:55 +0400)
  find docs and definitions of non-function symbols properly

company-elisp.el

index 1e2b17176fe9090185f2227e3169243d5bd0d9f6..1073f28cca7916fa99335ed5e48b4d23244e95e5 100644 (file)
@@ -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