All notable changes of the PHP Mode 1.19.1 release series are documented in this file using the Keep a CHANGELOG principles.
- Add
readonlyclass modifier to Imenu (#802) - Add
enumsupport tophp-current-class(#802) - Remove hardcoding of implicit paths in
phpthat are not guaranteed to exist (#803)
- Support PHP 8.4 property-hooks (#797)
- Improve
php-syntax-propertize-extend-regionefficiency (#789, thanks @phil-s!) - Update
php-phpdoc-type-namesto support PHPStan 2.0.4 (#795)
- Fix Emacs 30 byte-compile errors (#792)
- Use
when-let*instead ofwhen-letto enhance Emacs 30 compatibility (#796)
- Drop support for Emacs 26 (#788)
- Add
php-base-modewhich is the base of php related modes (#772)php-base-modeis designed as a common parent mode forphp-modeand.php-ts-mode
- Make
php-modeinherit fromphp-base-modeinstead ofc-mode(#772) - Modify indentation of PEAR Coding Standards (#774, #777)
- No longer overindent it by default, since we don't see any mention in the coding style that it should hang
.. (refs #227 and #229) - If you have any feedback on PEAR style, please let us know in the discussion #776.
- No longer overindent it by default, since we don't see any mention in the coding style that it should hang
- Remove
$from face names for interoperability with treesit (#780, emacs-php/php-ts-mode#68)php-$this→php-thisphp-$this-sigil→php-this-sigil
- Add
php-function-call-standardface inheritfont-lock-function-call-faceon Emacs 29.1 and above (#782, thanks @bricka!) - Add
-tranditionalsuffix to thephp-*-callfaces.php-function-call→php-function-call-traditionalphp-method-call→php-method-call-traditionalphp-static-method-call→php-static-method-call-traditional
- Add variables for the
php-function-call,php-method-call, andphp-static-method-callfaces, defaulting to the-traditionalface. - Changes how php-syntax-propertize-rules are applied for the first time. (#785 and #786)
- This change is expected to make heredoc and attribute coloring more stable and reduce flicker.
- Remove
php-mode-disable-c-mode-hookcustom variable andphp-mode-neutralize-cc-mode-effectfunction (#775)php-modeno longer inheritsc-mode, so this variable won't work.
Note
This version was cancelled due to a release error.
- Add
php-topsy-beginning-of-defun-with-classto display classname with function signature. (#766) - Add missing
__DIR__tophp-magical-constants(#756, thanks @piotrkwiecinski)
- Make developer build task in Makefile now depends on Eask. (#762, thanks @jcs090218)
- This change does not affect package installation users
- Read CONTRIBUTING.md if you prefer to build it yourself from zip or tar ball
- Fixed build failure in Emacs on master branch (#764, #765, #767, thanks @takeokunn)
- Removed Phan-specific features from
php-project(#754) - Removed Cask and Keg metadata files for building (#770)
- Fixed many byte compilation errors on Emacs 29 and 30 by multiple patches contributed by Stefan Monnier (#737, #739 and #740, thanks Stefan!)
- Fixed PEAR method chaining wrong indentation (#745 and #746, thanks @cweiske!)
- Fixed
php-mode-debug-reinstallcommand (#747, #748)
- Drop Emacs 25 support (#729, [736])
- Net feature:
php-format(#731)- Add
php-format-projectandphp-format-this-buffer-filecommands - Add
php-format-auto-modeminor mode
- Add
- Experimental feature:
php-ide(#709)- Add
php-ide-phpactoras simple IDE feature without LSP clients - Add
php-ide-modeminor mode for binding IDE-like features
- Add
- No longer highlights
'linkin PHPDoc (#724)- Please use
goto-address-prog-modeminor mode
- Please use
- New feature:
php-complete- Add
php-complete-complete-functionto autocomplete function names (#708)
- Add
- New feature:
php-flymake- Add
php-flymakeas a flymake backend compatible with Emacs 26 and above (#718)
- Add
- Supports PHPDoc tags and types for static analysis tools (#710, #715, #716, #717, thanks to @takeokunn)
- Please refer to the article below
- PHPStan: PHPDoc Types
- PHPStan: PHPDocs Basics
- Psalm: Atomic Type Reference
- Psalm: Supported Annotations
- Psalm: Template Annotations
- Please refer to the article below
- Add
php-mode-replace-flymake-diag-functioncustom variable and default activated it (#718) - Add
php-mode-debug-reinstallcommand to help users who update Emacs themselves (#721)
- Make continued expressions inside lists (arguments and arrays, etc.) have the same indent width as outside the list (#703)
- (internal) Improved readability of test failures about indentation (#707)
php-doc-annotation-taginheritsfont-lock-doc-markup-faceif defined in Emacs 28 (#711)- Make
php-mode-versionfunction include a Git tag and revision (#713)- Like
"1.23.4-56-xxxxxx"for example.
- Like
- Change
php-phpdoc-type-keywordstophp-phpdoc-type-namesto avoid confusion (#717) - Make
php-flymake-php-initappend toflymake-allowed-file-name-masksonly in legacy Flymake (#718)
- Make obsolete
php-mode-version-numbercontstant variable ([#712])(php-mode-version :as-number t)is provided for use cases comparing as versions, but generally SHOULD NOT be dependent on the PHP Mode version.
- Make obsolete
php-mode-disable-c-mode-hookcustomize variable (#718)
- Remove
php-mode-disable-c-auto-align-backslashesas it doesn't make sense and is always disabled
- Removed invalid definitions that caused errors in some expressions (#704)
- Support new PHP 8.0 and 8.1 syntax highlighting and indentation
- [8.0]
#[Attributes] - [8.1]
readonlyproperty (#680)
- [8.0]
- Add
php-imenu-generic-expression-defaultfor default value orphp-imenu-generic-expression- Add
php-imenu-generic-expression-legacyfor compatibility - Add
php-imenu-generic-expression-simplefor simple display
- Add
- Add
php-project-project-find-functioncompatible withproject-find-functions(#693)
- Optimized propertize process (#669)
- Reimoplement
php-syntax-propertize-functionusingsyntax-propertize-rules - Make propertize PHP 8
#[Attribute]always enabled - Changed grouping of
php-heredoc-start-re
- Reimoplement
- Re-organized
php-imenu-generic-expression- Added
Import,ConstantsandProperties - Removed
Anonymous Functions - Renamed
Named FunctionstoFunctions - Renamed
All MethodstoMethods - Removed
Public Methods,Protected MethodsandProvate Methods - Unified
Classes,Traits,InterfacesintoClasses
- Added
- Modified regexp patterns (#681)
- Suppress compile-time warnings (#683, #690, #697)
- Fix
php-run-builtin-web-serverto expand root path (#699)
- Support new PHP 8.0 and 8.1 syntax hilighting and indentation
- Drop support for Emacs 24 and 25.1 (#654)
- Raises an error when the byte-compiled Cc Mode version does not match that version at runtime.
- You will need to recompile php-mode after the GNU Emacs version changes.
- Remove
(require 'add-log)
- Fix font-lock highlighting
!=(#630)
- Fix Heredoc and Nowdoc highlighting (#651 thanks @antoineB)
- Fix documentation mistake
Initial support for PHP 8 has been added. PHP Mode has some issues for compatibility with Emacs 27.0.
The list of all past contributors has been moved to AUTHORS.md.
This release is positioned as the last minor version of the PHP Mode 1.x series.
- Add
php-project-use-projectile-to-detect-root(#608) - Add PHP file extensions to
auto-mode-alist(#609) - Add
php-mode-disable-c-auto-align-backslashes(#621) - Add PHP 8.0 Attribute syntax as vsemi ([#626])
- Add feature
php-alignfrom tetsujin/emacs-php-align (#615, melpa/melpa#6759)
- Remove
php-mode-extra-constantsvariable and function. (#605)- This mechanism is for synchronizing the added user-defined constants with WebMode, but it hasn't worked since 2014.
A face has been added for coloring PHP syntax. Thank you @minikN!
This release is a minor modified version of the 1.22.x series. PHP Mode 2.0 is planned to be released in January 2020.
- Add
php-project-etags-fileandphp-project-apply-local-variables(#591) - Add
php-find-system-php-ini-fileandphp-inicommand (#593)
- Remove
php-mode-modifiedvariable (#590)
- Fix anonymous class indentation (#598)
This release is a minor modified version of the 1.22.x series. PHP Mode 2.0 is planned to be released in January 2020.
- Fix usas of
rx-form(#580, thank you @cmack) - Fix
php-mode-coding-stylecustom variable (#581) - Fix unexpected indentation of (return typed) closures written in arguments (#585)
This release is positioned as the last minor version of the PHP Mode 1.x series.
PHP Mode 2.0 is planned to be released in January 2020.
- Improve PHP 7 and PHPDoc support
- Add new
php-classface (#545) - Add new
php-run-builtin-web-servercommand for invokephp -Sbuitin server (#548) - Add new
php-copyit-fqsencommand for kill current method FQSEN (#561) - Apply lineup cascaded call (method chain separated by new line) for all styles (#563, #572)
- Loose HTML template detection algorithm (#558)
- Move php-mode-test.el into tests directory (#559)
php-mode-autoloads.elno longer includesphp-mode-test
- Modify syntax-entry
$to"_"from"'"(#565) - Make
php-set-styledisplay only styles that inherited "php" (#573)
- Fix default major mode for
*.phptfile asphp-default-major-mode(#542) - prevent recursion in
php-syntax-propertize-extend-region([$556], thanks Herbert Jones) - Fix call
run-hooksinset-style(#571)
This version contains unobtrusive changes for future compatibility. Also, forward-page / backward-page may improve your operation. Thank you @takeokunn.
- A new command
php-mode-maybehas been added to improve the compatibility of Blade templates and HTML templates with Web Mode. (#532) - A new custom variable php-mode-page-delimiter is added, which is assigned to page-delimiter in PHP-Mode. It allows you to move smoothly to the previous and subsequent definition statements with
forward-page(C-x C-[) andbackward-page(C-x C-]). (#540 by @takeokunn)
php-maybe-modeand.phpfiles are associated withauto-mode-alistinstead ofphp-mode(#532)- Compatibility with poly-php has been improved. This has not yet been officially released.
- PHP Mode does not support phpt files . Consider installing the phpt-mode package. This mode is a wrapper around Polymode based PHP-Mode.
This version includes both PHP syntax support enhancements and performance improvements. See https://github.com/emacs-php/php-mode/projects/1 for all issues for this release. Also, @mallt has helped me improve it with a number of issues. thank you very much.
- Added new Faces to display PHP syntax
php-constant-assignphp-magical-constantphp-errorcontrol-op
- Some funtions have been split into features such as
php.el,php-face.elandphp-mode-debug.el.
- Syntax highlighting has been adjusted
php-extand Skeleton templates have been split into php-skeleton (#534)
It officially supports PHP 7.3 and Emacs 26.2. Many improvements have been received from @sergeyklay, thank you!
- Highlighting added
fnkeyword supported by PHP 7.2 arrow function (#506)
- Function
php-beginning-of-defunshould return non-nil on success (#503) - Fixed an error that occurred in some heredoc/nowdoc (#496)
- Fixed an error that occurred in Emacs 27
- Modify URL of PHP web site
- Fix highlighting of static method calls
A minor change from the previous version, but this version has BC brake about c-mode-hook.
- Add
phpcustomize group.- This group is positioned above
php-mode. - This group was originally planned to be included in v1.20.0.
- This group is positioned above
- Add
php-mode-disable-c-mode-hookcustom variable.- Setting this variable to
nilwill restore the behavior ofc-mode-hookup to the previous version.
- Setting this variable to
php-modeinitialization no longer executes hooks forc-mode.- If you want to return to the same behavior as the conventional PHP-Mode, set
niltophp-mode-disable-c-mode-hook.
- If you want to return to the same behavior as the conventional PHP-Mode, set
Start preparing for major refactoring in major mode.
- Add php-project variables for workflow (#488)
- The following variables are reserved as file/directory local variables.
php-project-replphp-project-unit-testphp-project-deployphp-project-buildphp-project-server-start
- The following variables are reserved as file/directory local variables.
- Improve code highlight
- Modify "customize group" and variable names
- Add php-mode group and some variables belong to new group (#486)
php-default-face→php-mode-default-facephp-speedbar-config→'php-mode-speedbar-configphp-template-compatibility→php-mode-template-compatibilityphp-lineup-cascaded-calls→php-mode-lineup-cascaded-callsphp-extra-constants→php-mode-extra-constantsphp-do-not-use-semantic-imenu→php-mode-do-not-use-semantic-imenu
- Add php-mode group and some variables belong to new group (#486)
- Modify documents and copyright
- Move the URL of Website to https://github.com/emacs-php/php-mode
- Add copyright notation about Friends of Emacs-PHP development
- Add a "Hall of Fame" to the contributors list (#481 by @ejmr and thanks @sergey48k and @sourcerer-io project)
- Some refactors
- Fix style and suppress warning in compile #485
- Add some functions/variables in
php-projectpackage - Add
php-debugcommand for reporting a bug
- Fix
c-anchored-cpp-prefixin Emacs 26 (#453) - Fix (re-implemteed)
php-complete-function(#454) - Fix some problem of
php-set-style(disabled on default) - Fix heredoc/nowdoc syntax problem (#440)
- Delete duplicate font locks with keywords not related to PHP language (#432)
- Make
php-project-rootvariable accept a string (#458)