Phpactor Versions Save

Mainly a PHP Language Server with more features than you can shake a stick at

2022.12.12

1 year ago

Breaking changes:

  • Minimum version of PHP changed to 8.0. Phpactor will no longer run on PHP 7.4.

Features:

  • [lsp] Generate mutator @florian-merle

Improvements:

  • [wr] Fix inference of array subscript expressions #1961

Bug fixes:

  • [lsp] Prevent race condition that makes old changes get analyzed after new changes #1974
  • [cmp] Constant visibility not taken into account for completion #1979 @przepompownia
  • [rn] Fix crash on rename interface #1982 @nataneb32
  • [wr] Fix crash on enum with custom methods #1966
  • [ls] Log errors even if they are for a request @lumnn
  • [ls] Do not include results key in JSON response when error @lumnn
  • [lsp] Do not send workDoneProgress notifications to clients that do not support it #1951
  • [lsp] Fix highlighting on PHP 8.1 #1960
  • [wr] Do not crash when encountering an array union operator #1971 @wouterj
  • [wr] Fixing handling of HEREDOC in StringResolver #1977 @mamazu

2022.11.12

1 year ago

Features:

Bug fixes:

  • Fix member template params when declared in interface #1914
  • Do not prompt to generate constructor when object is given no arguments #1911

Improvements:

  • Add properties after constants #1917 @mamazu
  • Remove dependency on webmozart/path-util @mamazu
  • "invokable" type refactoring
  • Do not register services for disabled extensions

Documentation:

  • Added Emacs LSP client guides @zonuexe

2022.10.11

1 year ago

Bug fixes:

  • [lsp] Import all unresolved names command no longer dupliates names #1835
  • [tp] Update tolerant parser library fixing issue with parsing match keyword #1873
  • [rpc] Fix regression with :PhpactorClassNew opening in Untitled buffer #1881
  • [ctf] Fix token issue with simple class-to-file converter #920
  • [wr] Built-in enum members are reflected #1902
  • [wr] Fix iterable generic not being resolved properly #1875

Improvements:

  • [wr] Better modelling of enums
  • [wr] Add additional phpactor-specific stubs (e.g. for Enums)
  • [lsp] Enum hover improvement
  • [lsp] Improve formating signature help parameters #1894
  • [lsp] Highlighting more 10x faster #1891
  • [cmp/lsp] inline type information for completion items
  • [cmp] complete __construct on parent:: #1272
  • [wr] Refactored generic handling

Features:

  • [wr] Support for class-string<T> generic
  • [ct] Decorate interface #1879 @mamazu
  • [lsp] Document formatting via. php-cs-fixer #1897
  • [gtd] For member declarations, goto parent member definition if it exists #1886

2022.09.11

1 year ago

This changelog is non-exhaustive also see blog post

Bug fixes:

  • [wr] Inconsistent type resolution - removed node level cache #1673
  • [in] Fix exception when indexed file has no path #1643
  • [wr] Do not complete constants on class instance #1614
  • [wr] Include virtual properties in class members #1623
  • [wr] Fix false positive for virutal method not existing #1603
  • [wr] Ignore exceptions (permission denied f.e.) when traversing files #1569
  • [wr] Fix resolutin of virtual method
  • [ct] Fix missing properties refactor does not import class #1534
  • [ct] Fix false diagnostic for missing method #1500
  • [dl] Fix docblock definition location at class level docblocks
  • [idx] Do not try and use non-tokens for property names #1317
  • [cb] Fix rendering of array values in generated code
  • [wr] Fix arrow function completion #1303
  • [dl] Fixed off-by-one error with plain text goto definition
  • [fw] Ensure inotify is stopped before shutting down
  • [wr] properly deconstruct array in foreach
  • [lsp] import unresolved classes refactoring: Ensure only unique names are shown when asking user to select an import candidate
  • [lsp] ensure fully qualified filename is used for generate method refactoring #1313
  • [wr] detect branch determination with throw expression
  • [cr] add missing properties: correctly infer type from call expressions
  • [filesystem] Fix "too many files open" issue #1376
  • [class-mover] Fix long standing bug with aliased imports being duplicated on class move and other strange issues.
  • [lsp] Fix call to properties() on non-class in generate accessors provider.
  • [lsp] Fix unresolvable classes not being listed in code actions
  • [cb] Do not apply HTML escaping when rendering code templates
  • [wr] Promoted property docblock types not picked up #1334
  • [completion] Limit results from the search index (improve search performance significantly)

Improvements:

  • [cmp] Show partial namespace to disambiguate class name suggestions
  • [wr] Markdown formatted member completion documentation
  • [ls] publish diagnostics on open and update
  • [ct] Add missing properties for array assignments #1640
  • [cmp] Provide variables from parent frame for anonymous use #1602
  • [ref] Increase reference finder timeout to 1 minute by default #1579
  • [cmp] Improved contextual completion
  • [rn] Fixed numerous issues
  • [rename] Fixed numerous issues
  • [compl] Allow named param completion on functions
  • [wr] Infer return type for generators
  • [lsp] Show Phpactor version info in initialize result @lalanikarim
  • [ls] Fixed class completion performance
  • [ct] Add option to disable importing global functions
  • [cmp] (Better) support for completing imported names #1490
  • [wr] reset,array_shift and array_pop stubs
  • [wr] improved ternary support
  • [log] Include a channel prefxi in log messages
  • [wr] require ext-pnctl (language server would crash otherwise)
  • [wr] handle static properly #967
  • [ls] include list of diagnostic providers in status report
  • [ct] add retutn type to generated method if it would immediately return
  • [wr] support array [] addition operator
  • [wr] support in_array type assertion
  • [wr] support for casts
  • [wr] if statement branches
  • [wr] inline type inference
  • [wr] infer param types from function docblock
  • [wr] support for Closure as a type #1413
  • [wr] expressions are evaluated as types
  • [wr] literal types and internal refactorings
  • [ls] Show error message in client if service stops unexpectedly with an error
  • [code-transform] Faithfully reproduce documented types in generated code
  • [docblock] New docblock parser to facilitate parsing complex types
  • [hover] Improve "offset" hover (mostly related to showing variable info)
  • [templates] Include templates for creating new interfaces, traits and enums
  • [wr] Resolve type from array access
  • [cb] Preserve ? operator as distinct from a union type
  • [wr] Support for class-string type (not for type inference however)
  • [completion + location] Better support for union types
  • [cs] Updated CS and converted property docblock types to actual types

Features:

  • [-] Better constant suppoer - indexing, goto def, find references, hover, etc.
  • [cmp] Support absolute name completions
  • [ls] Lazily resolve documentation for completion items
  • [ct] Generate constructor refactoring
  • [ct] Fill object refactoring
  • [ct] Remove unused imports diagnositcs and code transformation #1758
  • [wr] Added native WR single-pass diagnostics #1700
  • [cmd] Index clean command #1691 @mamazu
  • [cmp] (re?)support completion on parent:: #1643
  • [cb] Render types based on PHP version #1655
  • [wr] Support @property-read
  • [wr] Support for mixins #990
  • [rf] Support for constants, properties and promoted properties
  • [compl] Docblock completion
  • [wr] Support for intersection types
  • [rf] Union type support for goto definition
  • [ct] Add missing PHP return types
  • [wr] Support for inference for array_map, and arrow and anonymous functions
  • [ct] Add missing @return type docblocks code transformation
  • [cmp] Explicitly enable/disable completors and disable keyword completor by default.
  • [wr] Support iterator_to_array
  • [wr] Handle constant glob to union types (@return Foo::BAR_*).
  • [lsp] show class category in offset hover info
  • [lsp] jump to types in a union type
  • [wr] Type combination
  • [wr] Support for type assertions via. is_*, instanceof etc
  • [wr] Array shape type support (types and completion)
  • [wr] Support for variadics
  • [lsp] Send rename file request to client when renaming a PSR class @przepompownia
  • [wr] Initial support for generics #1382
  • [lsp] Added generate accessors code action
  • [lsp] Added extract constant code action
  • [extension] Removed the extension manager.
  • [extension] PHPStan and Psalm extensions are now included by default.
  • [lsp] Code action to complete constructor with public properties
  • [php] Bump min. PHP version to 7.4
  • [php] Fix PHP 8.1 deprecations
  • [config] JSON schema support
  • [cli] phpactor config:init command to create or update config (to include JSON schema location)
  • [completion] Enum support (requires 8.1 PHP runtime)
  • [reference-finder] Enum support (requires 8.1 PHP runtime)
  • [php8.1] Disable deprecation warnings unless PHPACTOR_DEPRECATIONS provided.

0.18.0

2 years ago

Features:

  • [language-server] Import all names refactoring - @dantleech
  • [language-server] Extract expression - @BladeMF
  • [language-server] Extract method generation - @BladeMF
  • [language-server] Initial support for method generation - @BladeMF
  • [langauge-server] Support for renaming files (LSP 3.16) - @dantleech
  • [language-server] Ability to use client file events where available - @dantleech
  • [completion] Experimental support snippets for built-in functions - @weeman1337
  • [completion] Experimental support snippets for class constructos - @weeman1337
  • [completion] Added experimental flag
  • [completion] Added flag to enable / disable snippets entirely
  • [language-server] Ensure workspace is indexed before finding references - @dantleech
  • [language-server] Support for renaming class names (short only) - @dantleech
  • [language-server] Rename class members and variables - @BladeMF, @dantleech
  • [language-server] Basic support for workspace symbols.
  • [language-server] Added basic PHP linting by default.

Improvements:

  • [completion] Improve diagnostic message for #1245 - @dantleech
  • [language-server] Allow hover template paths to be customized - @BladeMF
  • [language-server] Show warning in client if extra config keys present - @dantleech
  • [code-transform] Improved performance for unresolvable class name finder - @dantleech
  • [code-transform] Improved information in name-not-found exception - @weeman1337
  • [language-server] Do not show "class not found" diagnostics by default - @dantleech
  • [worse-reflection, etc] Update to latest tolerant parser lib to support PHP 8.1 syntax

Bug fixes:

  • [worse-reflection] Fix handling of non-decimal integers - @Slamdunk
  • [worse-reflection] Fix variable detection in closures - @BladeMF
  • [completion] Fix snippet method completion #1172 - @BladeMF
  • [worse-reflection] Fix PHP8.0 deprecation warnings - @gregoire
  • [completion] Tests fail due to jetbrain stubs changes - @weeman1337
  • [worse-reference-finder] Do not know how to create class from type "NULL" #1246 - @dantleech
  • [worse-reflection] Property context class not propagated

0.17.1

3 years ago

Features:

  • [completion] Support Attribute Completion

Bug fixes:

  • [language-server] Diagnostics do not tolerate NULL document version on save #1220
  • [worse-reflection] Unhandled exception thrown when variable name is "NULL"
  • [language-server] Unhandled exception when function not found on hover

0.17.0

3 years ago

2021-02-06 (0.17.0)

Features:

  • [completion] Support for PHP named parameters - @dantleech

  • [completion] Basic Doctrine annotation completion support - @elythyr

  • [completion] References are sorted alphabetically - @elythyr

  • [completion] Show warning character if method or class is deprecated

  • [completion] Sort class names and fucntions according to proximity to current file by default - @dantleech

  • [composer] Class map only mode by default (do not register autoloader at all, do not include files)

  • [file-watcher] Experimental support for watchman

  • [indexer] CLI command for index search (mainly for debugging)

  • [indexer] PhpStorm stubs are now indexed

  • [indexer] Show memory usage and limit in progress notification.

  • [language-server] Import class/function code action and diagnostics

  • [language-server] Transform code actions and diagnostics (complete constructor, implement contracts, fix class name and add missing properties)

  • [completion] Keyword completion - @BladeMF

  • [language-server] Create class code actions - @dantleech

  • [phpactor] Update extensions after install composer hook - @dantleech

Improvements:

  • [worse-reflection] Support for list foreach
  • [worse-reflection] Various issues around NULL and exception handling
  • [worse-reflection] Improved frame resolution performance by 99.5x - @dantleech
  • [worse-reflection] Fixed mixed up start/end positions in symbol resolver - @BladeMF
  • [language-server] Update classes on workspace update - @BladeMF
  • [language-server] New LSP protocol and general refactoring - @dantleech
  • [language-server] Support document symbols (f.e. showing code outline for document)
  • [language-server] Support symbol highlighting
  • [language-server] Support for indexing constants
  • [code-tranform] Generated accessors automatically ucfirst the property name when prefix is used. - @einenlum
  • [worse-reflection] Improved inference for property types - @elythyr
  • [worse-reflection] Include virtual members from traits - @scisssssssors
  • [code-tranform] fix invalid missing property diagnostic (#1126) - @elythyr
  • [code-transform] Improve performance for missing properries - @dantleech

Bug fixes:

  • [code-transform] Catch unhandled exceptions - @dantleech
  • [text-document] valid php class names not detected for word-at-offset
  • [code-tranform] Return types not considered for unresolved names - @dantleech
  • [completion] Avoid reflection on NULL
  • [scf] Fix support for moving and removing folders - @Lumnn
  • [indexer] Fix indexing of static properties - @BladeMF
  • [completion] Fix signature help in nested symbols - @BladeMF
  • [worse-reflection] Static properties not resolved - @BladeMF
  • [lanaguge-server] Correctly highlight use statements against qualified names - @dantleech
  • [language-server] Fix occasional class-not-found error on code transform (due to incorrectly formatted path)
  • [worse-reflection] Do not consider "iterable" as an FQN - @elythyr
  • [code-transform] Fix trailing line on class import - @elythyr
  • [code-transform] Fix importing class names in docblocks - @elythyr

0.16.2

3 years ago

Improvements:

  • [worse-reflection] Support for virtual methods in interfaces - @dantleech
  • [code-transform] Fix regression with importing from root namespace
  • [dev] Support for Composer 2.

0.16.0

4 years ago

See blog post

2020-06-09 (0.16.0)

Features:

  • [vim-plugin] Ability to set custom project root strategy (#1027) - @przepompownia
  • [indexer-extension] Workspace reference finder (classes,functions,members) - @dantleech
  • [worse-reflection] Support "final" keyword - @dantleech
  • [language-server-hover] Show "final" keyword on class hover - @dantleech
  • [language-server-hover] Show inherited method documentation - @dantleech
  • [language-server-code-transform] Add command to import class - @dantleech
  • [language-server-completion] Automatically import class on completion confirm - @dantleech
  • [code-transform] Consider current class as a potential conflict for imports - @dantleech
  • [completion] Indexed class name and function completion - @dantleech
  • [indexer-extension] Support "deep references" (search over all implementaions) - @dantleech
  • [composer] Enable disbaling of autoloader inclusion via. composer.enable - @dantleech
  • [lanaguage-server-completion] Auto-import functions - @dantleech

Improvements:

  • [code-builder] Removed functionality to "update" parameters: was very buggy. Now only new parameters will be added when updating methods via. generate method.
  • [language-server-bridge] Service to convert Phpactor Locations to LSP locations - @dantleech
  • [code-transform] Class import updates context name on alias - @dantleech
  • [documentation] Generate the configuration reference - @dantleech
  • [completion-worse] Allow completors to be disabled via completion_worse.disabled_completors - @dantleech
  • [indexer-extension] Validate search results (remove from search index if invalid).
  • [language-server] Exit session immediately if NULL given as CWD (instead of crashing).
  • [container] Adds command for introspecting the container (container:dump) - @dantleech
  • [indexer-extension] Increase priority of indexer source-locators (they should come before the composer locators) - @dantleech
  • [language-server] Show explicit meassage when indexer dies

Bug fixes;

0.15.0

4 years ago

2020-05-03 0.15.0

Features:

  • [reference-finder] Goto type: goto the type of the symbol under the cursor #892 - @dantleech
  • [worse-reflection] Enable cache lifetime (important for long running processes) (#929) - @dantleech
  • [language-server] Included in the core - @dantleech
  • [indexer] Indexer included in the core - @dantleech
  • [rpc] Add docblock prose to hover
  • [vim-plugin] Add support :checkhealth and provide :PhpactorStatus in terminal window (#974) - @elythyr

Improvements:

  • [text-document] Include < and > when getting "class" name undercursor (allow implorting Foobar from an @var array<Foobar> doc
  • [completion] Option to deduplicate suggetions (#905) - @dantleech
  • [completion] Option to limit completion options - @dantleech
  • [completion] Allow completors to return true when they finish (allow final consumer to know if list is complete) - @elythyr
  • [vim-plugin] Improved command registration (#965) - @elythyr
  • [completion] Improved signature help (https://github.com/phpactor/completion/pull/31) - @elythyr
  • [completion] Completors can return if they are complete (https://github.com/phpactor/completion/pull/30) - @elythyr

Bug fixes:

  • [code-transform] Generate accessor doesn't work on selected property (regression)
  • [vim-plugin] Configuration was not global (#964) - @elythyr
  • [class-mover] $ was removed when renaming static variables (#925) - @dantleech
  • [class-to-file] Remove duplicate candidates (fixes issue with class completion duplicate suggestions)

Documentation:

  • [doc] Fix examples in refactoring documentation - @Great-Antique
  • [doc] Fix example mappings and add missing commands - @yeagassy