]> code.delx.au - gnu-emacs-elpa/commitdiff
Add `company-diag'
authorDmitry Gutov <dgutov@yandex.ru>
Fri, 20 Feb 2015 22:32:33 +0000 (00:32 +0200)
committerDmitry Gutov <dgutov@yandex.ru>
Fri, 20 Feb 2015 22:32:33 +0000 (00:32 +0200)
NEWS.md
company.el

diff --git a/NEWS.md b/NEWS.md
index c7a1afe53d45a634998f3727dd5da3df6eeb4d4a..c8dd158eb534112d80d2e1d5737470b169f864c8 100644 (file)
--- a/NEWS.md
+++ b/NEWS.md
@@ -1,5 +1,9 @@
 # History of user-visible changes
 
+## Next
+
+* New command `company-diag`. Use it in bug reports.
+
 ## 2015-02-02 (0.8.10)
 
 * New variable `company-lighter-base`.
index 99c7eb5ec457910bef91a3697c49ef04520b0e92..5461fa6b88c3c1836052e85bc10a1dce2c862f83 100644 (file)
@@ -2131,6 +2131,39 @@ If SHOW-VERSION is non-nil, show the version in the echo area."
         (message "Company version: %s" (lm-version))
       (lm-version))))
 
+(defun company-diag ()
+  (interactive)
+  "Pop a buffer with information about completions at point."
+  (let* ((bb company-backends)
+         backend
+         (prefix (cl-loop for b in bb
+                          thereis (let ((company-backend b))
+                                    (setq backend b)
+                                    (company-call-backend 'prefix))))
+         cc)
+    (when (stringp prefix)
+      (setq cc (let ((company-backend backend))
+                 (company-call-backend 'candidates prefix))))
+    (pop-to-buffer (get-buffer-create "*company-diag*"))
+    (setq buffer-read-only nil)
+    (erase-buffer)
+    (insert "company-backends: " (pp-to-string bb))
+    (insert "\n")
+    (insert "Used backend: " (pp-to-string backend))
+    (insert "\n")
+    (insert "Prefix: " (pp-to-string prefix))
+    (insert "\n")
+    (insert (message  "Completions:"))
+    (unless cc (insert " none"))
+    (save-excursion
+      (let ((company-backend backend))
+        (dolist (c cc)
+          (insert "\n  " (prin1-to-string c))
+          (let ((ann (company-call-backend 'annotation)))
+            (when ann
+              (insert " " (prin1-to-string ann))))))
+      (special-mode))))
+
 ;;; pseudo-tooltip ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 (defvar-local company-pseudo-tooltip-overlay nil)