|
77 | 77 | ;; Utility functions |
78 | 78 | (defun phpactor-find-executable () |
79 | 79 | "Return Phpactor command or path to executable." |
80 | | - (or phpactor-executable |
81 | | - (executable-find phpactor-command-name))) |
| 80 | + (or (when phpactor-executable |
| 81 | + (php-project--eval-bootstrap-scripts phpactor-executable)) |
| 82 | + (executable-find phpactor-command-name) |
| 83 | + (let ((vendor-executable (f-join (phpactor-get-working-dir) "vendor/bin/phpactor"))) |
| 84 | + (when (file-exists-p vendor-executable) |
| 85 | + vendor-executable)))) |
82 | 86 |
|
83 | 87 | (defun phpactor-get-working-dir () |
84 | 88 | "Return working directory of Phpactor." |
85 | 89 | (directory-file-name |
86 | 90 | (expand-file-name |
87 | 91 | (or phpactor-working-dir (php-project-get-root-dir))))) |
88 | 92 |
|
| 93 | +(defun phpactor--expand-local-file-name (name) |
| 94 | + "Expand file name by `NAME'." |
| 95 | + ;; TODO: Support TRAMP |
| 96 | + (expand-file-name name)) |
| 97 | + |
89 | 98 | (defun phpactor--make-command-string (sub-command &rest args) |
90 | 99 | "Return command string by `SUB-COMMAND' and `ARGS'." |
91 | 100 | (declare (indent 1)) |
|
199 | 208 | (cl-case key |
200 | 209 | (:source (buffer-substring-no-properties |
201 | 210 | (point-min) (point-max))) |
202 | | - (:path buffer-file-name) |
| 211 | + (:path (phpactor--expand-local-file-name buffer-file-name)) |
| 212 | + (:source_path (phpactor--expand-local-file-name buffer-file-name)) |
203 | 213 | (:offset (1- (point))) |
204 | | - (:current_path buffer-file-name) |
| 214 | + (:current_path (phpactor--expand-local-file-name buffer-file-name)) |
205 | 215 | (t (error "`%s' is unknown argument" key)))) |
206 | 216 |
|
207 | 217 | (defun phpactor--command-argments (&rest arg-keys) |
|
300 | 310 | (defun phpactor-copy-class () |
301 | 311 | "Execute Phpactor RPC copy_class command." |
302 | 312 | (interactive) |
303 | | - (let ((arguments (list :source_path (expand-file-name buffer-file-name)))) |
| 313 | + (let ((arguments (phpactor--command-argments :source_path))) |
304 | 314 | (apply #'phpactor-action-dispatch (phpactor--rpc "copy_class" arguments)))) |
305 | 315 |
|
306 | 316 | ;;;###autoload |
307 | 317 | (defun phpactor-move-class () |
308 | 318 | "Execute Phpactor RPC move_class command." |
309 | 319 | (interactive) |
310 | | - (let ((arguments (list :source_path (expand-file-name buffer-file-name)))) |
| 320 | + (let ((arguments (phpactor--command-argments :source_path))) |
311 | 321 | (apply #'phpactor-action-dispatch (phpactor--rpc "move_class" arguments)))) |
312 | 322 |
|
313 | 323 | ;;;###autoload |
|
335 | 345 | (defun phpactor-navigate () |
336 | 346 | "Execute Phpactor RPC navigate command." |
337 | 347 | (interactive) |
338 | | - (let ((arguments (list :source_path (file-relative-name buffer-file-name |
339 | | - (phpactor-get-working-dir))))) |
| 348 | + (let ((arguments (phpactor--command-argments :source_path))) |
340 | 349 | (apply #'phpactor-action-dispatch (phpactor--rpc "navigate" arguments)))) |
341 | 350 |
|
342 | 351 | ;;;###autoload |
|
0 commit comments