All notable changes of the PHP Mode 1.19.1 release series are documented in this file using the Keep a CHANGELOG principles.
- Support PHP 8.4 property-hooks (#797)
- Improve
php-syntax-propertize-extend-region
efficiency (#789, thanks @phil-s!) - Update
php-phpdoc-type-names
to support PHPStan 2.0.4 (#795)
- Fix Emacs 30 byte-compile errors (#792)
- Use
when-let*
instead ofwhen-let
to enhance Emacs 30 compatibility (#796)
- Drop support for Emacs 26 (#788)
- Add
php-base-mode
which is the base of php related modes (#772)php-base-mode
is designed as a common parent mode forphp-mode
and.php-ts-mode
- Make
php-mode
inherit fromphp-base-mode
instead 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-this
php-$this-sigil
→php-this-sigil
- Add
php-function-call-standard
face inheritfont-lock-function-call-face
on Emacs 29.1 and above (#782, thanks @bricka!) - Add
-tranditional
suffix to thephp-*-call
faces.php-function-call
→php-function-call-traditional
php-method-call
→php-method-call-traditional
php-static-method-call
→php-static-method-call-traditional
- Add variables for the
php-function-call
,php-method-call
, andphp-static-method-call
faces, defaulting to the-traditional
face. - 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-hook
custom variable andphp-mode-neutralize-cc-mode-effect
function (#775)php-mode
no 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-class
to 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-reinstall
command (#747, #748)
- Drop Emacs 25 support (#729, [736])
- Net feature:
php-format
(#731)- Add
php-format-project
andphp-format-this-buffer-file
commands - Add
php-format-auto-mode
minor mode
- Add
- Experimental feature:
php-ide
(#709)- Add
php-ide-phpactor
as simple IDE feature without LSP clients - Add
php-ide-mode
minor mode for binding IDE-like features
- Add
- No longer highlights
'link
in PHPDoc (#724)- Please use
goto-address-prog-mode
minor mode
- Please use
- New feature:
php-complete
- Add
php-complete-complete-function
to autocomplete function names (#708)
- Add
- New feature:
php-flymake
- Add
php-flymake
as 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-function
custom variable and default activated it (#718) - Add
php-mode-debug-reinstall
command 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-tag
inheritsfont-lock-doc-markup-face
if defined in Emacs 28 (#711)- Make
php-mode-version
function include a Git tag and revision (#713)- Like
"1.23.4-56-xxxxxx"
for example.
- Like
- Change
php-phpdoc-type-keywords
tophp-phpdoc-type-names
to avoid confusion (#717) - Make
php-flymake-php-init
append toflymake-allowed-file-name-masks
only in legacy Flymake (#718)
- Make obsolete
php-mode-version-number
contstant 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-hook
customize variable (#718)
- Remove
php-mode-disable-c-auto-align-backslashes
as 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]
readonly
property (#680)
- [8.0]
- Add
php-imenu-generic-expression-default
for default value orphp-imenu-generic-expression
- Add
php-imenu-generic-expression-legacy
for compatibility - Add
php-imenu-generic-expression-simple
for simple display
- Add
- Add
php-project-project-find-function
compatible withproject-find-functions
(#693)
- Optimized propertize process (#669)
- Reimoplement
php-syntax-propertize-function
usingsyntax-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
,Constants
andProperties
- Removed
Anonymous Functions
- Renamed
Named Functions
toFunctions
- Renamed
All Methods
toMethods
- Removed
Public Methods
,Protected Methods
andProvate Methods
- Unified
Classes
,Traits
,Interfaces
intoClasses
- Added
- Modified regexp patterns (#681)
- Suppress compile-time warnings (#683, #690, #697)
- Fix
php-run-builtin-web-server
to 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-align
from tetsujin/emacs-php-align (#615, melpa/melpa#6759)
- Remove
php-mode-extra-constants
variable 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-file
andphp-project-apply-local-variables
(#591) - Add
php-find-system-php-ini-file
andphp-ini
command (#593)
- Remove
php-mode-modified
variable (#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-style
custom 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-class
face (#545) - Add new
php-run-builtin-web-server
command for invokephp -S
buitin server (#548) - Add new
php-copyit-fqsen
command 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.el
no longer includesphp-mode-test
- Modify syntax-entry
$
to"_"
from"'"
(#565) - Make
php-set-style
display only styles that inherited "php" (#573)
- Fix default major mode for
*.phpt
file asphp-default-major-mode
(#542) - prevent recursion in
php-syntax-propertize-extend-region
([$556], thanks Herbert Jones) - Fix call
run-hooks
inset-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-maybe
has 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-mode
and.php
files are associated withauto-mode-alist
instead 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-assign
php-magical-constant
php-errorcontrol-op
- Some funtions have been split into features such as
php.el
,php-face.el
andphp-mode-debug.el
.
- Syntax highlighting has been adjusted
php-ext
and 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
fn
keyword supported by PHP 7.2 arrow function (#506)
- Function
php-beginning-of-defun
should 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
php
customize 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-hook
custom variable.- Setting this variable to
nil
will restore the behavior ofc-mode-hook
up to the previous version.
- Setting this variable to
php-mode
initialization no longer executes hooks forc-mode
.- If you want to return to the same behavior as the conventional PHP-Mode, set
nil
tophp-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-repl
php-project-unit-test
php-project-deploy
php-project-build
php-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-face
php-speedbar-config
→'php-mode-speedbar-config
php-template-compatibility
→php-mode-template-compatibility
php-lineup-cascaded-calls
→php-mode-lineup-cascaded-calls
php-extra-constants
→php-mode-extra-constants
php-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-project
package - Add
php-debug
command for reporting a bug
- Fix
c-anchored-cpp-prefix
in 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-root
variable accept a string (#458)