diff options
author | Vincenzo Pupillo <v.pupillo@gmail.com> | 2025-03-14 21:11:22 +0100 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2025-03-29 14:32:31 +0300 |
commit | 99ff59bd66cc07df40b14cb0a8acf22d440581e5 (patch) | |
tree | c5b0e4caf049b7787bad92d18db4d1cd576e4f94 | |
parent | 26873d5028ed8aa0e2fc56c7d6ed3b43ff976d3c (diff) | |
download | emacs-99ff59bd66cc07df40b14cb0a8acf22d440581e5.tar.gz emacs-99ff59bd66cc07df40b14cb0a8acf22d440581e5.tar.bz2 emacs-99ff59bd66cc07df40b14cb0a8acf22d440581e5.zip |
PHP should be in the PATH, either locally or remotely. (bug#76242).
* lisp/progmodes/php-ts-mode.el
(php-ts-mode-php-default-executable): Renamed from
'php-ts-mode-php-executable'.
(php-ts-mode--executable): New function that returns the absolute
filename of the PHP executable, local or remote, based on
'default-directory'.
(php-ts-mode--anchor-prev-sibling): Replaced 'when-let' with
“when-let*.”
(php-ts-mode--indent-defun): Replaced 'when-let' with
'when-let*'.
(php-ts-mode-run-php-webserver): Use the new function
(php-ts-mode-php-default-executable).
(run-php): Use the new function (php-ts-mode-php-default-executable).
-rw-r--r-- | lisp/progmodes/php-ts-mode.el | 47 |
1 files changed, 31 insertions, 16 deletions
diff --git a/lisp/progmodes/php-ts-mode.el b/lisp/progmodes/php-ts-mode.el index 56c15dad36f..b626a19a0de 100644 --- a/lisp/progmodes/php-ts-mode.el +++ b/lisp/progmodes/php-ts-mode.el @@ -134,12 +134,16 @@ Works like `css--fontify-region'." :type 'boolean :safe 'booleanp) -(defcustom php-ts-mode-php-executable (or (executable-find "php") "/usr/bin/php") - "The location of PHP executable." +(defcustom php-ts-mode-php-default-executable (or (executable-find "php") "/usr/bin/php") + "The default PHP executable." :tag "PHP Executable" :version "30.1" :type 'file) +(defvar-local php-ts-mode-alternative-php-program-name nil + "An alternative to the usual `php' program name. +In non-nil, `php-ts-mode--executable' try to find this executable.") + (defcustom php-ts-mode-php-config nil "The location of php.ini file. If nil the default one is used to run the embedded webserver or @@ -270,7 +274,7 @@ Calls REPORT-FN directly." :noquery t :connection-type 'pipe :buffer (generate-new-buffer " *php-ts-mode-flymake*") - :command `(,php-ts-mode-php-executable + :command `(,(php-ts-mode--executable) "-l" "-d" "display_errors=0") :sentinel (lambda (proc _event) @@ -306,6 +310,16 @@ Calls REPORT-FN directly." ;;; Utils +(defun php-ts-mode--executable () + "Return the absolute filename of the php executable. +If the `default-directory' is remote, search on a remote host, otherwise +it searches locally. If `php-ts-mode-alternative-php-program-name' is +non-zero, it searches for this program instead of the usual `php'. +If the search fails, it returns `php-ts-mode-php-default-executable'." + (or (executable-find + (or php-ts-mode-alternative-php-program-name "php") t) + php-ts-mode-php-default-executable)) + (defun php-ts-mode--get-indent-style () "Helper function to set indentation style. MODE can be `psr2', `pear', `drupal', `wordpress', `symfony', `zend'." @@ -595,7 +609,7 @@ doesn't have a child. PARENT is NODE's parent, BOL is the beginning of non-whitespace characters of the current line." - (when-let ((prev-sibling + (when-let* ((prev-sibling (or (treesit-node-prev-sibling node t) (treesit-node-prev-sibling (treesit-node-first-child-for-pos parent bol) t) @@ -1236,7 +1250,7 @@ Return nil if the NODE has no field “name” or if NODE is not a defun node." "Indent the current top-level declaration syntactically. `treesit-defun-type-regexp' defines what constructs to indent." (interactive "*") - (when-let ((orig-point (point-marker)) + (when-let* ((orig-point (point-marker)) (node (treesit-defun-at-point))) (indent-region (treesit-node-start node) (treesit-node-end node)) @@ -1613,7 +1627,7 @@ for PORT, HOSTNAME, DOCUMENT-ROOT and ROUTER-SCRIPT." (message "Run PHP built-in web server with args %s into buffer %s" (string-join args " ") buf-name) - (apply #'make-comint name php-ts-mode-php-executable nil args)) + (apply #'make-comint name (php-ts-mode--executable) nil args)) (funcall (if (called-interactively-p 'interactive) #'display-buffer #'get-buffer) buf-name))) @@ -1677,18 +1691,19 @@ Prompt for CMD if `php-ts-mode-php-executable' is nil. Optional CONFIG, if supplied, is the php.ini file to use." (interactive (when current-prefix-arg (list - (read-string "Run PHP: " php-ts-mode-php-executable) + (read-string "Run PHP: " (php-ts-mode--executable)) (expand-file-name (read-file-name "With config: " php-ts-mode-php-config))))) - (let ((buffer (get-buffer-create php-ts-mode-inferior-php-buffer)) - (cmd (or - cmd - php-ts-mode-php-executable - (read-string "Run PHP: " php-ts-mode-php-executable))) - (config (or - config - (and php-ts-mode-php-config - (expand-file-name php-ts-mode-php-config))))) + (let* ((php-prog (php-ts-mode--executable)) + (buffer (get-buffer-create php-ts-mode-inferior-php-buffer)) + (cmd (or + cmd + php-prog + (read-string "Run PHP: " php-prog))) + (config (or + config + (and php-ts-mode-php-config + (expand-file-name php-ts-mode-php-config))))) (unless (comint-check-proc buffer) (with-current-buffer buffer (inferior-php-ts-mode-startup cmd config) |