diff --git a/modules/lang/php/autoload.el b/modules/lang/php/autoload.el index 53ce77a57..b5a6f9fb4 100644 --- a/modules/lang/php/autoload.el +++ b/modules/lang/php/autoload.el @@ -13,3 +13,12 @@ ignore the cache." (require 'json) (json-read-file package-file)))) (puthash project-root data +php-composer-conf)))))) + +;;;###autoload +(defun +php|init-ac-php-core-eldoc () + "Initialize eldoc support for `php-mode' with `ac-php-core'. Fails gracefully +if phpctags isn't installed." + (require 'company-php) + (if (file-exists-p ac-php-ctags-executable) + (ac-php-core-eldoc-setup) + (message "phpctags is missing; eldoc support is disabled"))) diff --git a/modules/lang/php/config.el b/modules/lang/php/config.el index ea01efcb4..22d5788c9 100644 --- a/modules/lang/php/config.el +++ b/modules/lang/php/config.el @@ -74,10 +74,17 @@ (def-package! company-php :when (featurep! :completion company) :commands (ac-php-remake-tags ac-php-remake-tags-all) - :hook (php-mode . ac-php-core-eldoc-setup) :init (add-to-list '+php--company-backends 'company-ac-php-backend nil #'eq) - :config (setq ac-php-tags-path (concat doom-cache-dir "ac-php/"))) + (add-hook 'php-mode-hook #'+php|init-ac-php-core-eldoc) + :config + (setq ac-php-tags-path (concat doom-cache-dir "ac-php/")) + ;; prioritize phpctags in PATH + (when (file-in-directory-p ac-php-ctags-executable ac-php-root-directory) + (setq ac-php-ctags-executable + (or (executable-find "phpctags") + (if (file-exists-p ac-php-ctags-executable) + ac-php-ctags-executable))))) ;;