King2500 / idea-php-advanced-autocomplete

Plugin for PhpStorm IDE. Adds auto-completion support for various built-in PHP functions, where parameter is a string literal.
https://plugins.jetbrains.com/phpstorm/plugin/7276-php-advanced-autocomplete
MIT License
61 stars 7 forks source link

Allow File Reference injection via meta php #25

Open King2500 opened 4 years ago

King2500 commented 4 years ago

.phpstorm.meta.php:

<?php
namespace PHPSTORM_META {
    xAdvancedInjectFileReference(\My\Stuff\Example::dump(), 1);  // relative to doc root or current file (see below)
    xAdvancedInjectFileReference(\My\Stuff\Example::dump(), 1, '/'); // relative to doc root
    xAdvancedInjectFileReference(\My\Stuff\Example::dump(), 1, '.'); // relative to current file
    xAdvancedInjectFileReference(\My\Stuff\Example::dump(), 1, '/dir'); // relative to /dir/
}

User code:

$x = new Example();
$x->dump('bla', '<ref>path/to/file.ext</ref>');

If inside class always go relative from doc root. If not inside class always go relative from current file.

Plugin's built-in .phpstorm.meta.php:

<?php
namespace PHPSTORM_META {
    function xAdvancedInjectFileReference($functionReference, $argumentIndex, $relativeMode = null) {
        return "xAdvancedInjectFileReference " . $functionReference . " at " . $argumentIndex . ": " . $relativeMode;
    }

    registerArgumentsSet('x_advanced_fileref_relative_modes', '/', '.');
    expectedArguments(\PHPSTORM_META\xAdvancedInjectFileReference(), 2, argumentsSet('x_advanced_fileref_relative_modes');
}
King2500 commented 1 year ago

Open:

xAdvancedInjectFileReference(\My\Stuff\Example::dump(), 1, '/dir'); // relative to /dir/