Skip to content

Commit 9f4d1cf

Browse files
committed
added VarCompleter, changed completer plugin api
1 parent c86d9d6 commit 9f4d1cf

5 files changed

Lines changed: 52 additions & 24 deletions

File tree

bin/server.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,8 @@
6262

6363
$http->on('request', $handler);
6464

65-
$socket->listen($port, $host);
65+
$socket->listen($port);
6666

67-
echo "Started http server on {$host}:{$port}\n";
67+
echo "Started http server on 127.0.0.1:{$port}\n";
6868

6969
$loop->run();

src/Command/KillCommand.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
class KillCommand implements CommandInterface
66
{
7-
public function execute()
7+
public function run()
88
{
99
die();
1010
}

src/Complete/CompleteEngine.php

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
use Parser\Processor\IndexProcessor;
1717
use Parser\Processor\ScopeProcessor;
1818
use Parser\Processor\ProcessorInterface;
19-
use Symfony\Component\EventDispatcher\EventDispatcher;
2019
use Psr\Log\LoggerInterface;
2120

2221
class CompleteEngine {
@@ -27,9 +26,8 @@ public function __construct(
2726
CompleterFactory $completer,
2827
IndexProcessor $indexProcessor,
2928
ScopeProcessor $scopeProcessor,
30-
LoggerInterface $logger,
31-
EventDispatcher $dispatcher
32-
){
29+
LoggerInterface $logger
30+
) {
3331
$this->parser = $parser;
3432
$this->generator = $generator;
3533
$this->contextResolver = $contextResolver;
@@ -38,7 +36,6 @@ public function __construct(
3836
$this->scopeProcessor = $scopeProcessor;
3937
$this->logger = $logger;
4038
$this->cachePool = [];
41-
$this->dispatcher = $dispatcher;
4239
}
4340
public function createCompletion(
4441
Project $project,
@@ -83,15 +80,7 @@ public function createCompletion(
8380
}
8481
protected function findEntries(Project $project, Scope $scope, $badLine, $column, $lines){
8582
$context = $this->contextResolver->getContext($badLine, $project->getIndex(), $scope);
86-
$completer = $this->completerFactory->getCompleter($context);
87-
if (!$completer) {
88-
$event = new CustomCompleterEvent($project, $context);
89-
$this->dispatcher->dispatch(self::CUSTOM_COMPLETER, $event);
90-
$completer = $event->completer;
91-
if ($completer) {
92-
$this->logger->debug(sprintf("Using custom completer %s", get_class($completer)));
93-
}
94-
}
83+
$completer = $this->completerFactory->getCompleter($context, $project);
9584
if ($completer) {
9685
return $completer->getEntries($project, $context);
9786
}
@@ -181,8 +170,4 @@ private function isValidCache($file, $content){
181170
private $cachePool;
182171
/** @var LoggerInterface */
183172
private $logger;
184-
/** @var EventDispatcher */
185-
private $dispatcher;
186-
187-
const CUSTOM_COMPLETER = 'completer.custom';
188173
}

src/Complete/Completer/CompleterFactory.php

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,33 @@
55
use Entity\Completion\Context;
66
use Entity\Completion\Scope;
77
use Entity\Project;
8+
use Symfony\Component\EventDispatcher\EventDispatcher;
9+
use Complete\CustomCompleterEvent;
10+
11+
class CompleterFactory
12+
{
13+
const CUSTOM_COMPLETER = 'completer.custom';
814

9-
class CompleterFactory {
1015
public function __construct(
1116
ClassNameCompleter $classNameCompleter,
1217
InterfaceNameCompleter $interfaceNameCompleter,
1318
NamespaceCompleter $namespaceCompleter,
1419
ObjectCompleter $objectCompleter,
1520
StaticCompleter $staticCompleter,
16-
UseCompleter $useCompleter
21+
UseCompleter $useCompleter,
22+
VarCompleter $varCompleter,
23+
EventDispatcher $dispatcher
1724
) {
1825
$this->classNameCompleter = $classNameCompleter;
1926
$this->interfaceNameCompleter = $interfaceNameCompleter;
2027
$this->namespaceCompleter = $namespaceCompleter;
2128
$this->objectCompleter = $objectCompleter;
2229
$this->staticCompleter = $staticCompleter;
2330
$this->useCompleter = $useCompleter;
31+
$this->varCompleter = $varCompleter;
32+
$this->dispatcher = $dispatcher;
2433
}
25-
public function getCompleter(Context $context)
34+
public function getCompleter(Context $context, Project $project)
2635
{
2736
if ($context->isNamespace()) {
2837
return $this->namespaceCompleter;
@@ -36,6 +45,14 @@ public function getCompleter(Context $context)
3645
return $this->objectCompleter;
3746
} elseif ($context->isClassStatic()) {
3847
return $this->staticCompleter;
48+
} elseif ($context->isVar()) {
49+
return $this->varCompleter;
50+
}
51+
$event = new CustomCompleterEvent($project, $context);
52+
$this->dispatcher->dispatch(self::CUSTOM_COMPLETER, $event);
53+
$completer = $event->completer;
54+
if ($completer) {
55+
return $completer;
3956
}
4057
return null;
4158
}
@@ -46,4 +63,6 @@ public function getCompleter(Context $context)
4663
private $objectCompleter;
4764
private $staticCompleter;
4865
private $useCompleter;
66+
private $varCompleter;
67+
private $dispatcher;
4968
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
3+
namespace Complete\Completer;
4+
5+
use Entity\Completion\Context;
6+
use Entity\Completion\Scope;
7+
use Entity\Project;
8+
use Entity\Node\Variable;
9+
use Entity\Completion\Entry;
10+
11+
class VarCompleter implements CompleterInterface
12+
{
13+
public function getEntries(Project $project, Context $context)
14+
{
15+
return array_map([$this, 'createEntry'], $context->getScope()->getVars());
16+
}
17+
18+
protected function createEntry(Variable $var)
19+
{
20+
return new Entry(
21+
$var->getName()
22+
);
23+
}
24+
}

0 commit comments

Comments
 (0)