Skip to content

Commit a5d24aa

Browse files
committed
Impl php-ui-phpactor-hover
1 parent cdd23d3 commit a5d24aa

File tree

1 file changed

+30
-12
lines changed

1 file changed

+30
-12
lines changed

Diff for: lisp/php-ui-phpactor.el

+30-12
Original file line numberDiff line numberDiff line change
@@ -29,34 +29,52 @@
2929
(require 'phpactor nil t)
3030
(require 'popup nil t)
3131

32-
(defvar-local php-ui-phpactor-buffer nil
33-
".")
32+
(defvar-local php-ui-phpactor-buffer nil)
33+
(defvar-local php-ui-phpactor-hover-last-pos nil)
34+
(defvar-local php-ui-phpactor-hover-last-msg nil)
3435

35-
(defvar-local php-ui-phpactor-last-hover-pos nil
36-
".")
36+
(declare-function phpactor--command-argments (&rest arg-keys))
37+
(declare-function phpactor--parse-json (buffer))
38+
(declare-function phpactor--rpc-async "phpactor" (action arguments callback))
39+
(declare-function phpactor-goto-definition "phpactor" ())
40+
(declare-function popup-tip "popup" (string))
3741

3842
(defvar php-ui-phpactor-timer nil
39-
".")
43+
"Timer object for execute Phpactor and display hover message.")
4044

4145
(defun php-ui-phpactor-hover ()
42-
""
46+
"Show brief information about the symbol underneath the cursor."
4347
(interactive)
44-
(when (and php-ui-phpactor-buffer (not (eq (point) php-ui-phpactor-last-hover-pos)))
45-
(setq php-ui-phpactor-last-hover-pos (point))
46-
(popup-tip (phpactor-hover))))
48+
(when php-ui-phpactor-buffer
49+
(if (eq (point) php-ui-phpactor-hover-last-pos)
50+
(when php-ui-phpactor-hover-last-msg
51+
(let ((msg php-ui-phpactor-hover-last-msg))
52+
(setq php-ui-phpactor-hover-last-msg nil)
53+
(popup-tip msg)))
54+
(setq php-ui-phpactor-hover-last-pos (point))
55+
(let ((main-buffer (current-buffer)))
56+
(phpactor--rpc-async "hover" (phpactor--command-argments :source :offset)
57+
(lambda (proc)
58+
(let* ((response (phpactor--parse-json (process-buffer proc)))
59+
(msg (plist-get (plist-get response :parameters) :message)))
60+
(with-current-buffer main-buffer
61+
(setq php-ui-phpactor-hover-last-msg msg)))))))))
4762

4863
;;;###autoload
4964
(defun php-ui-phpactor-activate ()
50-
""
65+
"Activate PHP-UI using phpactor.el."
5166
(interactive)
5267
(unless php-ui-phpactor-timer
53-
(setq php-ui-phpactor-timer (run-with-timer 1.0 5 #'php-ui-phpactor-hover)))
68+
(setq php-ui-phpactor-timer (run-with-timer 1.0 1 #'php-ui-phpactor-hover)))
5469
(setq php-ui-phpactor-buffer t))
5570

5671
;;;###autoload
5772
(defun php-ui-phpactor-deactivate ()
58-
""
73+
"Dectivate PHP-UI using phpactor.el."
5974
(interactive)
75+
(when php-ui-phpactor-timer
76+
(cancel-timer php-ui-phpactor-timer)
77+
(setq php-ui-phpactor-timer nil))
6078
(setq php-ui-phpactor-buffer nil))
6179

6280
(provide 'php-ui-phpactor)

0 commit comments

Comments
 (0)