{ "$schema": "https://json-schema.org/draft-07/schema", "properties": { "$schema": { "default": "", "description": "Path to JSON schema, which can be used for config autocompletion, use phpactor config:initialize to update" }, "behat.config_path": { "default": "%project_root%/behat.yml", "description": "Path to the main behat.yml (including the filename behat.yml)" }, "behat.symfony.di_xml_path": { "description": "If using Symfony, set this path to the XML container dump to find contexts which are defined as services" }, "class_to_file.brute_force_conversion": { "default": true, "description": "If composer not found, fallback to scanning all files (very time consuming depending on project size)" }, "class_to_file.project_root": { "default": "%project_root%", "description": "Root path of the project (e.g. where composer.json is)" }, "code_transform.class_new.variants": { "default": [], "description": "Variants which should be suggested when class-create is invoked" }, "code_transform.import_globals": { "default": false, "description": "Import functions even if they are in the global namespace" }, "code_transform.indentation": { "default": " ", "description": "Indentation chars to use in code generation and transformation" }, "code_transform.refactor.generate_accessor.prefix": { "default": "", "description": "Prefix to use for generated accessors" }, "code_transform.refactor.generate_accessor.upper_case_first": { "default": false, "description": "If the first letter of a generated accessor should be made uppercase" }, "code_transform.refactor.generate_mutator.fluent": { "default": false, "description": "If the mutator should be fluent" }, "code_transform.refactor.generate_mutator.prefix": { "default": "set", "description": "Prefix to use for generated mutators" }, "code_transform.refactor.generate_mutator.upper_case_first": { "default": true, "description": "If the first letter of a generated mutator should be made uppercase" }, "code_transform.refactor.object_fill.hint": { "default": true, "description": "Object fill refactoring: show hint as a comment" }, "code_transform.refactor.object_fill.named_parameters": { "default": true, "description": "Object fill refactoring: use named parameters" }, "code_transform.template_paths": { "default": [ "%config%/templates", "%project_config%/templates" ], "description": "Paths in which to look for code templates" }, "command": { "description": "Internal use only - name of the command which was executed" }, "completion.dedupe": { "default": true, "description": "If results should be de-duplicated" }, "completion.dedupe_match_fqn": { "default": true, "description": "If ``completion.dedupe``, consider the class FQN in addition to the completion suggestion" }, "completion.label_formatter": { "default": "helpful", "description": "Definition of how to format entries in the completion list", "enum": [ "fqn", "helpful" ] }, "completion.limit": { "description": "Sets a limit on the number of completion suggestions for any request" }, "completion_worse.completor.attribute.enabled": { "default": true, "description": "Enable or disable the ``attribute`` completor.\n\nCompletion for attribute class names." }, "completion_worse.completor.class.limit": { "default": 100, "description": "Suggestion limit for the filesystem based SCF class_completor" }, "completion_worse.completor.class_like.enabled": { "default": true, "description": "Enable or disable the ``class_like`` completor.\n\nCompletion for class like contexts." }, "completion_worse.completor.class_member.enabled": { "default": true, "description": "Enable or disable the ``class_member`` completor.\n\nCompletion for class members." }, "completion_worse.completor.constant.enabled": { "default": false, "description": null }, "completion_worse.completor.constructor.enabled": { "default": true, "description": "Enable or disable the ``constructor`` completor.\n\nCompletion for constructors." }, "completion_worse.completor.declared_class.enabled": { "default": true, "description": "Enable or disable the ``declared_class`` completor.\n\nCompletion for classes defined in the Phpactor runtime." }, "completion_worse.completor.declared_constant.enabled": { "default": true, "description": "Enable or disable the ``declared_constant`` completor.\n\nCompletion for constants defined in the Phpactor runtime." }, "completion_worse.completor.declared_function.enabled": { "default": true, "description": "Enable or disable the ``declared_function`` completor.\n\nCompletion for functions defined in the Phpactor runtime." }, "completion_worse.completor.docblock.enabled": { "default": true, "description": "Enable or disable the ``docblock`` completor.\n\nDocblock completion." }, "completion_worse.completor.doctrine_annotation.enabled": { "default": true, "description": "Enable or disable the ``doctrine_annotation`` completor.\n\nCompletion for annotations provided by the Doctrine annotation library." }, "completion_worse.completor.expression_name_search.enabled": { "default": true, "description": "Enable or disable the ``expression_name_search`` completor.\n\nCompletion for class names, constants and functions at expression positions that are located in the index." }, "completion_worse.completor.imported_names.enabled": { "default": true, "description": "Enable or disable the ``imported_names`` completor.\n\nCompletion for names imported into the current namespace." }, "completion_worse.completor.keyword.enabled": { "default": true, "description": "Enable or disable the ``keyword`` completor.\n\nCompletion for keywords (not very accurate)." }, "completion_worse.completor.local_variable.enabled": { "default": true, "description": "Enable or disable the ``local_variable`` completor.\n\nCompletion for local variables." }, "completion_worse.completor.named_parameter.enabled": { "default": true, "description": "Enable or disable the ``named_parameter`` completor.\n\nCompletion for named parameters." }, "completion_worse.completor.scf_class.enabled": { "default": true, "description": "Enable or disable the ``scf_class`` completor.\n\nBrute force completion for class names (not recommended)." }, "completion_worse.completor.subscript.enabled": { "default": true, "description": "Enable or disable the ``subscript`` completor.\n\nCompletion for subscript (array access from array shapes)." }, "completion_worse.completor.symfony.enabled": { "default": true, "description": "Enable/disable the Symfony completor - depends on Symfony extension being enabled" }, "completion_worse.completor.type.enabled": { "default": true, "description": "Enable or disable the ``type`` completor.\n\nCompletion for scalar types." }, "completion_worse.completor.use.enabled": { "default": true, "description": "Enable or disable the ``use`` completor.\n\nCompletion for use imports." }, "completion_worse.completor.worse_parameter.enabled": { "default": true, "description": "Enable or disable the ``worse_parameter`` completor.\n\nCompletion for method or function parameters." }, "completion_worse.debug": { "default": false, "description": "Include debug info in completion results" }, "completion_worse.experimantal": { "default": false, "description": "Enable experimental functionality" }, "completion_worse.name_completion_priority": { "default": "proximity", "description": "Strategy to use when ordering completion results for classes and functions:\n\n- `proximity`: Classes and functions will be ordered by their proximity to the text document being edited.\n- `none`: No ordering will be applied." }, "completion_worse.snippets": { "default": true, "description": "Enable or disable completion snippets" }, "composer.autoload_deregister": { "default": true, "description": "Immediately de-register the autoloader once it has been included (prevent conflicts with Phpactor's autoloader). Some platforms may require this to be disabled" }, "composer.autoloader_path": { "default": "%project_root%/vendor/autoload.php", "description": "Path to project's autoloader, can be an array" }, "composer.class_maps_only": { "default": true, "description": "Register the composer class maps only, do not register the autoloader - RECOMMENDED" }, "composer.enable": { "default": true, "description": "Include of the projects autoloader to facilitate class location. Note that when including an autoloader code _may_ be executed. This option may be disabled when using the indexer" }, "console.decorated": { "description": "Whether to decorate messages (null for auto-guessing)", "enum": [ true, false, null ] }, "console.verbosity": { "default": 32, "description": "Verbosity level", "enum": [ 16, 32, 64, 128, 256 ] }, "console_dumper_default": { "default": "indented", "description": "Name of the \"dumper\" (renderer) to use for some CLI commands" }, "core.min_memory_limit": { "default": 1610612736, "description": "Ensure that PHP has a memory_limit of at least this amount in bytes" }, "core.project_config_candidates": { "default": [], "description": "(internal) list of potential project-level configuration files" }, "core.trust": { "default": { "path": null, "trust": [] }, "description": "(internal) map of trusted project directories" }, "core.trusted": { "default": false, "description": "(internal) if the configuration is trusted" }, "file_path_resolver.app_name": { "default": "phpactor", "description": null }, "file_path_resolver.application_root": { "description": null }, "file_path_resolver.enable_cache": { "default": true, "description": null }, "file_path_resolver.enable_logging": { "default": true, "description": null }, "file_path_resolver.project_root": { "default": "/opt/phpactor", "description": null }, "indexer.buffer_time": { "default": 500, "description": "For real-time indexers only: the time, in milliseconds, to buffer the results", "type": [ "integer" ] }, "indexer.enabled_watchers": { "default": [ "find", "inotify", "php", "watchman" ], "description": "List of allowed watchers. The first watcher that supports the current system will be used", "type": [ "object" ] }, "indexer.exclude_patterns": { "default": [ "/vendor/**/tests/**/*", "/vendor/**/Tests/**/*", "/vendor/composer/**/*", "/vendor/rector/rector/stubs-rector" ], "description": "Glob patterns to exclude while indexing", "type": [ "object" ] }, "indexer.follow_symlinks": { "default": false, "description": "To allow indexer to follow symlinks", "type": [ "boolean" ] }, "indexer.implementation_finder.deep": { "default": true, "description": "Recurse over class implementations to resolve all class implementations (not just the classes directly implementing the subject)", "type": [ "boolean" ] }, "indexer.include_patterns": { "default": [ "/**/*.phar", "/**/*.php" ], "description": "Glob patterns to include while indexing", "type": [ "object" ] }, "indexer.index_path": { "default": "%cache%/index/%project_id%", "description": "Path where the index should be saved", "type": [ "string" ] }, "indexer.max_filesize_to_index": { "default": 1000000, "description": "Files larger than this will not be indexed. (Size in bytes)", "type": [ "integer" ] }, "indexer.poll_time": { "default": 5000, "description": "For polling indexers only: the time, in milliseconds, between polls (e.g. filesystem scans)", "type": [ "integer" ] }, "indexer.project_root": { "default": "%project_root%", "description": "The root path to use for scanning the index", "type": [ "string" ] }, "indexer.reference_finder.deep": { "default": true, "description": "Recurse over class implementations to resolve all references", "type": [ "boolean" ] }, "indexer.search_include_patterns": { "default": [], "description": "When searching the index exclude records whose fully qualified names match any of these regex patterns (use to exclude suggestions from search results). Namespace separators must be escaped as `\\\\\\\\` for example `^Foo\\\\\\\\` to include all namespaces whose first segment is `Foo`", "type": [ "object" ] }, "indexer.stub_paths": { "default": [], "description": "Paths to external folders to index. They will be indexed only once, if you want to take any changes into account you will have to reindex your project manually.", "type": [ "object" ] }, "indexer.supported_extensions": { "default": [ "phar", "php" ], "description": "File extensions (e.g. `php`) for files that should be indexed", "type": [ "object" ] }, "language_server.catch_errors": { "default": true, "description": null }, "language_server.diagnostic_exclude_paths": { "default": [], "description": "List of paths to exclude from diagnostics, e.g. `vendor/**/*`" }, "language_server.diagnostic_ignore_codes": { "default": [], "description": "Ignore diagnostics that have the codes listed here, e.g. [\"fix_namespace_class_name\"]. The codes match those shown in the LSP client." }, "language_server.diagnostic_outsource": { "default": true, "description": "If applicable diagnostics should be \"outsourced\" to a different process" }, "language_server.diagnostic_outsource_timeout": { "default": 5, "description": "Kill the diagnostics process if it outlives this timeout" }, "language_server.diagnostic_providers": { "description": "Specify which diagnostic providers should be active (default to all)" }, "language_server.diagnostic_sleep_time": { "default": 1000, "description": "Amount of time to wait before analyzing the code again for diagnostics" }, "language_server.diagnostics_on_open": { "default": true, "description": "Perform diagnostics when opening a text document" }, "language_server.diagnostics_on_save": { "default": true, "description": "Perform diagnostics when the text document is saved" }, "language_server.diagnostics_on_update": { "default": true, "description": "Perform diagnostics when the text document is updated" }, "language_server.enable_trust_check": { "default": true, "description": "Check to see if project path is trusted before loading configurations from it" }, "language_server.enable_workspace": { "default": true, "description": "If workspace management / text synchronization should be enabled (this isn't required for some language server implementations, e.g. static analyzers)" }, "language_server.file_event_globs": { "default": [ "**/*.php" ], "description": null }, "language_server.file_events": { "default": true, "description": "Register to receive file events" }, "language_server.method_alias_map": { "default": [], "description": "Allow method names to be re-mapped. Useful for maintaining backwards compatibility" }, "language_server.phpactor_bin": { "default": "/opt/phpactor/lib/Extension/LanguageServer/../../../bin/phpactor", "description": "Internal use only - name path to Phpactor binary" }, "language_server.profile": { "default": false, "description": "Logs timing information for incoming LSP requests" }, "language_server.self_destruct_timeout": { "default": 2500, "description": "Wait this amount of time (in milliseconds) after a shutdown request before self-destructing" }, "language_server.session_parameters": { "default": [], "description": "Phpactor parameters (config) that apply only to the language server session" }, "language_server.shutdown_grace_period": { "default": 200, "description": "Amount of time (in milliseconds) to wait before responding to a shutdown notification" }, "language_server.trace": { "default": false, "description": "Log incoming and outgoing messages (needs log formatter to be set to ``json``)" }, "language_server_code_transform.import_globals": { "default": false, "description": "Show hints for non-imported global classes and functions" }, "language_server_code_transform.import_name.report_non_existing_names": { "default": true, "description": "Show an error if a diagnostic name cannot be resolved - can produce false positives" }, "language_server_completion.trim_leading_dollar": { "default": false, "description": "If the leading dollar should be trimmed for variable completion suggestions" }, "language_server_configuration.auto_config": { "default": true, "description": "Prompt to enable extensions which apply to your project on language server start", "type": [ "boolean" ] }, "language_server_highlight.enabled": { "default": true, "description": "Enable or disable the highlighter (can be expensive on large documents)" }, "language_server_indexer.optimiser_timeout": { "default": 3600, "description": "Optimise the index every N seconds", "type": [ "integer" ] }, "language_server_indexer.reindex_timeout": { "default": 300, "description": "Unconditionally reindex modified files every N seconds" }, "language_server_indexer.workspace_symbol_search_limit": { "default": 250, "description": null }, "language_server_php_cs_fixer.bin": { "default": "%project_root%/vendor/bin/php-cs-fixer", "description": "Path to the php-cs-fixer executable" }, "language_server_php_cs_fixer.config": { "description": "Set custom PHP CS config path. Ex., %project_root%/.php-cs-fixer.php" }, "language_server_php_cs_fixer.env": { "default": { "XDEBUG_MODE": "off" }, "description": "Environment for PHP CS Fixer" }, "language_server_php_cs_fixer.show_diagnostics": { "default": true, "description": "Whether PHP CS Fixer diagnostics are shown" }, "language_server_php_cs_fixer.version": { "description": "Arbitrary version (if not provided, phpactor tries to detect it - only to run it on unsupported PHP versions)" }, "language_server_phpstan.bin": { "default": "%project_root%/vendor/bin/phpstan", "description": "Path to the PHPStan executable" }, "language_server_phpstan.config": { "description": "Override the PHPStan configuration file" }, "language_server_phpstan.editor_mode": { "default": false, "description": "DEPRECATED. Editor mode of Phpstan is used automatically when it's supported." }, "language_server_phpstan.level": { "description": "Override the PHPStan level" }, "language_server_phpstan.mem_limit": { "description": "Override the PHPStan memory limit" }, "language_server_phpstan.severity": { "default": 1, "description": "Severity at which PHPStan diagnostics should be reported. Ranges from 1 (error) to 4 (hint)." }, "language_server_phpstan.tmp_file_disabled": { "default": false, "description": "Disable the use of temporary files when. This prevents as-you-type diagnostics, but ensures paths in phpstan config are respected. See https://github.com/phpactor/phpactor/issues/2763" }, "language_server_psalm.bin": { "default": "%project_root%/vendor/bin/psalm", "description": "Path to psalm if different from vendor/bin/psalm", "type": [ "string" ] }, "language_server_psalm.config": { "default": "", "description": "Path to psalm config. Like %project_root%/psalm.xml", "type": [ "string" ] }, "language_server_psalm.error_level": { "description": "Override level at which Psalm should report errors (lower => more errors)" }, "language_server_psalm.show_info": { "default": true, "description": "If infos from psalm should be displayed", "type": [ "boolean" ] }, "language_server_psalm.threads": { "default": 1, "description": "Set the number of threads Psalm should use. Warning: NULL will use as many as possible and may crash your computer", "type": [ "integer" ] }, "language_server_psalm.timeout": { "default": 15, "description": "Kill the psalm process after this number of seconds", "type": [ "integer" ] }, "language_server_psalm.use_cache": { "default": true, "description": "If the Psalm cache should be used (see the `--no-cache` option)", "type": [ "boolean" ] }, "language_server_reference_finder.soft_timeout": { "default": 10, "description": "Interupt and ask for confirmation to continue after this timeout (in seconds)" }, "language_server_reference_reference_finder.reference_timeout": { "default": 60, "description": "Stop searching for references after this time (in seconds) has expired" }, "language_server_worse_reflection.diagnostics.enable": { "default": true, "description": "Enable diagnostics" }, "language_server_worse_reflection.inlay_hints.enable": { "default": false, "description": "Enable inlay hints (experimental)" }, "language_server_worse_reflection.inlay_hints.params": { "default": true, "description": "Show inlay hints for parameters" }, "language_server_worse_reflection.inlay_hints.types": { "default": false, "description": "Show inlay type hints for variables" }, "language_server_worse_reflection.workspace_index.update_interval": { "default": 100, "description": "Minimum interval to update the workspace index as documents are updated (in milliseconds)" }, "logger.name": { "default": "logger", "description": null, "type": [ "string" ] }, "logging.enabled": { "default": false, "description": null, "type": [ "boolean" ] }, "logging.fingers_crossed": { "default": false, "description": null, "type": [ "boolean" ] }, "logging.formatter": { "description": null }, "logging.level": { "default": "warning", "description": null, "enum": [ "alert", "critical", "debug", "emergency", "error", "info", "notice", "warning" ], "type": [ "string" ] }, "logging.path": { "default": "application.log", "description": null, "type": [ "string" ] }, "navigator.autocreate": { "default": [], "description": null }, "navigator.destinations": { "default": [], "description": null }, "object_renderer.template_paths.markdown": { "default": [ "%config%/templates/markdown", "%project_config%/templates/markdown" ], "description": "Paths in which to look for templates for hover information." }, "php.version": { "description": "Consider this value to be the project\\'s version of PHP (e.g. `7.4`). If omitted\nit will check `composer.json` (by the configured platform then the PHP requirement) before\nfalling back to the PHP version of the current process." }, "php_code_sniffer.args": { "default": [], "description": "Additional arguments to pass to the PHPCS process" }, "php_code_sniffer.bin": { "default": "%project_root%/vendor/bin/phpcs", "description": "Path to the phpcs executable" }, "php_code_sniffer.cwd": { "description": "Working directory for PHPCS" }, "php_code_sniffer.env": { "default": { "XDEBUG_MODE": "off" }, "description": "Environment for PHP_CodeSniffer (e.g. to set XDEBUG_MODE)" }, "php_code_sniffer.show_diagnostics": { "default": true, "description": "Whether PHP_CodeSniffer diagnostics are shown" }, "public_services_only": { "default": false, "description": "Only consider public services when providing analysis for the service locator" }, "rpc.replay_path": { "default": "%cache%/replay.json", "description": "Path where the replays should be stored" }, "rpc.store_replay": { "default": false, "description": "Should replays be stored?" }, "source_code_filesystem.project_root": { "default": "%project_root%", "description": null }, "symfony.xml_path": { "default": "%project_root%/var/cache/dev/App_KernelDevDebugContainer.xml", "description": "Path to the Symfony container XML dump file" }, "worse_reflection.additive_stubs": { "default": [], "description": "Additive stubs files relative to the project root. These stubs augment existing defininitions." }, "worse_reflection.cache_dir": { "default": "%cache%/worse-reflection", "description": "Cache directory for stubs" }, "worse_reflection.cache_lifetime": { "default": 1, "description": "If caching is enabled, limit the amount of time a cache entry can stay alive" }, "worse_reflection.diagnostics.undefined_variable.suggestion_levenshtein_disatance": { "default": 4, "description": "Levenshtein distance to use when suggesting corrections for variable names", "type": [ "integer" ] }, "worse_reflection.enable_cache": { "default": true, "description": "If reflection caching should be enabled" }, "worse_reflection.enable_context_location": { "default": true, "description": "If source code is passed to a ``Reflector`` then temporarily make it available as a\nsource location. Note this should NOT be enabled if the source code can be\nlocated in another (e.g. when running a Language Server)" }, "worse_reflection.stub_dir": { "default": "%application_root%/vendor/jetbrains/phpstorm-stubs", "description": "Location of the core PHP stubs - these will be scanned and cached on the first request" }, "xdebug_disable": { "default": true, "description": "If XDebug should be automatically disabled" } }, "title": "Phpactor Configuration Schema", "type": "object" }