Skip to content

Commit

Permalink
- predicate/function references in hover and decorations
Browse files Browse the repository at this point in the history
- effect and condition local parsing extracted to ModelHierarchy
- v2.15.2
  • Loading branch information
jan-dolejsi committed Dec 3, 2019
1 parent 69bda87 commit d90cd8f
Show file tree
Hide file tree
Showing 24 changed files with 1,312 additions and 66 deletions.
6 changes: 4 additions & 2 deletions client/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
# PDDL support - What's new?

## [Unreleased] Fixes
## [2.15.2] Predicate and function references

- predicate/function references in hover and decorations (image needed)
- async planner service output parsing to support more than JSON
- async planner service ptest support for local configuration.json file
- vis-network upgraded to v6.4.4
Expand Down Expand Up @@ -864,7 +865,8 @@ Note for open source contributors: all notable changes to the "pddl" extension w

Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how to structure this file.

[Unreleased]: https://github.com/jan-dolejsi/vscode-pddl/compare/v2.15.1...HEAD
[Unreleased]: https://github.com/jan-dolejsi/vscode-pddl/compare/v2.15.2...HEAD
[2.15.2]:https://github.com/jan-dolejsi/vscode-pddl/compare/v2.15.1...v2.15.2
[2.15.1]:https://github.com/jan-dolejsi/vscode-pddl/compare/v2.15.0...v2.15.1
[2.15.0]:https://github.com/jan-dolejsi/vscode-pddl/compare/v2.14.4...v2.15.0
[2.14.4]:https://github.com/jan-dolejsi/vscode-pddl/compare/v2.14.2...v2.14.4
Expand Down
2 changes: 1 addition & 1 deletion client/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"description": "Planning Domain Description Language support",
"author": "Jan Dolejsi",
"license": "MIT",
"version": "2.15.1",
"version": "2.15.2",
"publisher": "jan-dolejsi",
"engines": {
"vscode": "^1.40.0",
Expand Down
4 changes: 2 additions & 2 deletions client/publish.cmd
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ call vsce package
:: https://code.visualstudio.com/docs/editor/extension-gallery#_install-from-a-vsix
echo Installing the extension locally...
::major minor patch
call code --install-extension pddl-2.15.1.vsix
call code --install-extension pddl-2.15.2.vsix
echo Test extension before you continue
pause
call vsce publish --packagePath pddl-2.15.1.vsix
call vsce publish --packagePath pddl-2.15.2.vsix
13 changes: 4 additions & 9 deletions client/src/completion/ContinuousEffectCompletionItemProvider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,11 @@
import { CompletionItem, CompletionContext, MarkdownString, CompletionItemKind, Range, CompletionTriggerKind } from 'vscode';
import { PDDL } from '../../../common/src/parser';
import { DomainInfo } from '../../../common/src/DomainInfo';
import { PddlTokenType } from '../../../common/src/PddlTokenizer';
import { ModelHierarchy } from '../../../common/src/ModelHierarchy';
import { PddlSyntaxNode } from '../../../common/src/PddlSyntaxNode';
import { AbstractCompletionItemProvider, Suggestion } from './AbstractCompletionItemProvider';
import { Delegate } from './Delegate';
import { toSelection, requires } from './DomainCompletionItemProvider';
import { DurativeActionEffectCompletionItemProvider } from './DurativeActionEffectCompletionItemProvider';

export class ContinuousEffectCompletionItemProvider extends AbstractCompletionItemProvider {

Expand Down Expand Up @@ -49,13 +48,9 @@ export class ContinuousEffectCompletionItemProvider extends AbstractCompletionIt
}

static inside(currentNode: PddlSyntaxNode) {
return DurativeActionEffectCompletionItemProvider.insideEffect(currentNode)
&& (ContinuousEffectCompletionItemProvider.insideProcess(currentNode)
|| DurativeActionEffectCompletionItemProvider.insideDurativeActionUnqualifiedEffect(currentNode));
}

private static insideProcess(currentNode: PddlSyntaxNode) {
return currentNode.findAncestor(PddlTokenType.OpenBracketOperator, /\(\s*:process/i) !== undefined;
return ModelHierarchy.isInsideEffect(currentNode)
&& (ModelHierarchy.isInsideProcess(currentNode)
|| ModelHierarchy.isInsideDurativeActionUnqualifiedEffect(currentNode));
}

provide(domainInfo: DomainInfo, context: CompletionContext, range: Range | null): (CompletionItem | null)[] {
Expand Down
18 changes: 4 additions & 14 deletions client/src/completion/DiscreteEffectCompletionItemProvider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,11 @@
import { CompletionItem, CompletionContext, MarkdownString, CompletionItemKind, Range, CompletionTriggerKind } from 'vscode';
import { PDDL } from '../../../common/src/parser';
import { DomainInfo } from '../../../common/src/DomainInfo';
import { PddlTokenType } from '../../../common/src/PddlTokenizer';
import { PddlSyntaxNode } from '../../../common/src/PddlSyntaxNode';
import { ModelHierarchy } from '../../../common/src/ModelHierarchy';
import { AbstractCompletionItemProvider, Suggestion } from './AbstractCompletionItemProvider';
import { Delegate } from './Delegate';
import { requires, toSelection } from './DomainCompletionItemProvider';
import { DurativeActionEffectCompletionItemProvider } from './DurativeActionEffectCompletionItemProvider';

export class DiscreteEffectCompletionItemProvider extends AbstractCompletionItemProvider {

Expand Down Expand Up @@ -56,18 +55,9 @@ export class DiscreteEffectCompletionItemProvider extends AbstractCompletionItem
}

static inside(currentNode: PddlSyntaxNode) {
return DurativeActionEffectCompletionItemProvider.insideEffect(currentNode)
&& (DiscreteEffectCompletionItemProvider.insideActionOrEvent(currentNode)
|| DiscreteEffectCompletionItemProvider.insideDurativeActionDiscreteEffect(currentNode));
}

static insideDurativeActionDiscreteEffect(currentNode: PddlSyntaxNode): boolean {
return currentNode.findAncestor(PddlTokenType.OpenBracketOperator, /\(\s*:durative-action/i) !== undefined
&& currentNode.findAncestor(PddlTokenType.OpenBracketOperator, /\(\s*(at start|at end)/i) !== undefined;
}

private static insideActionOrEvent(currentNode: PddlSyntaxNode) {
return currentNode.findAncestor(PddlTokenType.OpenBracketOperator, /\(\s*:(action|event)/i) !== undefined;
return ModelHierarchy.isInsideEffect(currentNode)
&& (ModelHierarchy.isInsideActionOrEvent(currentNode)
|| ModelHierarchy.isInsideDurativeActionDiscreteEffect(currentNode));
}

provide(domainInfo: DomainInfo, context: CompletionContext, range: Range | null): (CompletionItem | null)[] {
Expand Down
3 changes: 2 additions & 1 deletion client/src/completion/DomainCompletionItemProvider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import { ContinuousEffectCompletionItemProvider } from './ContinuousEffectComple
import { DurativeActionEffectCompletionItemProvider } from './DurativeActionEffectCompletionItemProvider';
import { DurativeActionConditionCompletionItemProvider } from './DurativeActionConditionCompletionItemProvider';
import { Util } from '../../../common/src/util';
import { ModelHierarchy } from '../../../common/src/ModelHierarchy';

export class DomainCompletionItemProvider extends AbstractCompletionItemProvider {

Expand Down Expand Up @@ -119,7 +120,7 @@ export class DomainCompletionItemProvider extends AbstractCompletionItemProvider
.map((suggestion, index) => this.createDurativeActionCompletionItem(currentNode, suggestion, range, context, index))
.filter(item => !!item).map(item => item!); // filter out nulls
}
else if (DurativeActionEffectCompletionItemProvider.insideEffect(currentNode)) {
else if (ModelHierarchy.isInsideEffect(currentNode)) {
let completions: (CompletionItem | null)[] = [];
let range = context.triggerCharacter === '(' ? nodeToRange(document, currentNode) : null;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import { CompletionItem, CompletionContext, MarkdownString, Range, CompletionTriggerKind, CompletionItemKind } from 'vscode';
import { PDDL } from '../../../common/src/parser';
import { DomainInfo } from '../../../common/src/DomainInfo';
import { PddlTokenType } from '../../../common/src/PddlTokenizer';
import { ModelHierarchy } from '../../../common/src/ModelHierarchy';
import { PddlSyntaxNode } from '../../../common/src/PddlSyntaxNode';
import { AbstractCompletionItemProvider, Suggestion } from './AbstractCompletionItemProvider';
import { requires } from './DomainCompletionItemProvider';
Expand Down Expand Up @@ -38,18 +38,9 @@ export class DurativeActionConditionCompletionItemProvider extends AbstractCompl
CompletionItemKind.Property);
}

static inside(currentNode: PddlSyntaxNode) {
return DurativeActionConditionCompletionItemProvider.insideCondition(currentNode)
&& DurativeActionConditionCompletionItemProvider.insideDurativeActionUnqualifiedCondition(currentNode);
}

static insideCondition(currentNode: PddlSyntaxNode) {
return currentNode.findAncestor(PddlTokenType.Keyword, /^\s*:condition$/i) !== undefined;
}

static insideDurativeActionUnqualifiedCondition(currentNode: PddlSyntaxNode): boolean {
return currentNode.findAncestor(PddlTokenType.OpenBracketOperator, /^\(\s*:durative-action/i) !== undefined
&& currentNode.findAncestor(PddlTokenType.OpenBracketOperator, /^\(\s*(at start|at end|over all)/i) === undefined;
static inside(currentNode: PddlSyntaxNode): boolean {
return ModelHierarchy.isInsideCondition(currentNode)
&& ModelHierarchy.isInsideDurativeActionUnqualifiedCondition(currentNode);
}

provide(_domainInfo: DomainInfo, context: CompletionContext, range: Range | null): (CompletionItem | null)[] {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
import { CompletionItem, CompletionContext, MarkdownString, Range, CompletionTriggerKind, CompletionItemKind } from 'vscode';
import { PDDL } from '../../../common/src/parser';
import { DomainInfo } from '../../../common/src/DomainInfo';
import { PddlTokenType } from '../../../common/src/PddlTokenizer';
import { PddlSyntaxNode } from '../../../common/src/PddlSyntaxNode';
import { ModelHierarchy } from '../../../common/src/ModelHierarchy';
import { AbstractCompletionItemProvider, Suggestion } from './AbstractCompletionItemProvider';
import { requires } from './DomainCompletionItemProvider';

Expand All @@ -33,17 +33,8 @@ export class DurativeActionEffectCompletionItemProvider extends AbstractCompleti
}

static inside(currentNode: PddlSyntaxNode) {
return DurativeActionEffectCompletionItemProvider.insideEffect(currentNode)
&& DurativeActionEffectCompletionItemProvider.insideDurativeActionUnqualifiedEffect(currentNode);
}

static insideEffect(currentNode: PddlSyntaxNode) {
return currentNode.findAncestor(PddlTokenType.Keyword, /^\s*:effect$/i) !== undefined;
}

static insideDurativeActionUnqualifiedEffect(currentNode: PddlSyntaxNode): boolean {
return currentNode.findAncestor(PddlTokenType.OpenBracketOperator, /\(\s*:durative-action/i) !== undefined
&& currentNode.findAncestor(PddlTokenType.OpenBracketOperator, /\(\s*(at start|at end)/i) === undefined;
return ModelHierarchy.isInsideEffect(currentNode)
&& ModelHierarchy.isInsideDurativeActionUnqualifiedEffect(currentNode);
}

provide(_domainInfo: DomainInfo, context: CompletionContext, range: Range | null): (CompletionItem | null)[] {
Expand Down
5 changes: 5 additions & 0 deletions client/src/extension.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ import { ProblemInitView } from './modelView/ProblemInitView';
import { ProblemObjectsView } from './modelView/ProblemObjectsView';
import { DomainTypesView } from './modelView/DomainTypesView';
import { ProblemConstraintsView } from './modelView/ProblemConstraintsView';
import { ModelHierarchyProvider } from './symbols/ModelHierarchyProvider';

const PDDL_CONFIGURE_PARSER = 'pddl.configureParser';
const PDDL_LOGIN_PARSER_SERVICE = 'pddl.loginParserService';
Expand Down Expand Up @@ -186,6 +187,9 @@ function activateWithTelemetry(_operationId: string, context: ExtensionContext)
registerDocumentFormattingProvider(context, codePddlWorkspace);

let renameProvider = languages.registerRenameProvider(PDDL, new SymbolRenameProvider(codePddlWorkspace));

let modelHierarchyProvider = new ModelHierarchyProvider(context, codePddlWorkspace);
context.subscriptions.push(languages.registerHoverProvider(PDDL, modelHierarchyProvider));

let symbolInfoProvider = new SymbolInfoProvider(codePddlWorkspace);

Expand All @@ -194,6 +198,7 @@ function activateWithTelemetry(_operationId: string, context: ExtensionContext)
let referencesProvider = languages.registerReferenceProvider(PDDL, symbolInfoProvider);
let hoverProvider = languages.registerHoverProvider(PDDL, symbolInfoProvider);
let diagnosticCollection = languages.createDiagnosticCollection(PDDL);

let diagnostics = new Diagnostics(codePddlWorkspace, diagnosticCollection, pddlConfiguration,
planValidator, happeningsValidator);

Expand Down
Loading

0 comments on commit d90cd8f

Please sign in to comment.