Skip to content

Commit

Permalink
resolves #527 activate completion when : is at the start of the line
Browse files Browse the repository at this point in the history
  • Loading branch information
ggrossetie committed Mar 1, 2022
1 parent e152562 commit 79c6ec0
Show file tree
Hide file tree
Showing 11 changed files with 796 additions and 761 deletions.
700 changes: 0 additions & 700 deletions snippets/snippets.json

Large diffs are not rendered by default.

6 changes: 4 additions & 2 deletions src/extension.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,9 @@ import { AsciidocEngine } from './asciidocEngine'
import { getAsciidocExtensionContributions } from './asciidocExtensions'
import { ExtensionContentSecurityPolicyArbiter, PreviewSecuritySelector } from './security'
import { githubSlugifier } from './slugify'
import { AttributeCompleter } from './features/attributeCompleter'
import { AsciidocFileIncludeAutoCompletionMonitor } from './util/includeAutoCompletion'
import { AttributeReferenceProvider } from './features/attributeReferenceProvider'
import { BuiltinDocumentAttributeProvider } from './features/builtinDocumentAttributeProvider'

export function activate (context: vscode.ExtensionContext) {
const contributions = getAsciidocExtensionContributions(context)
Expand Down Expand Up @@ -44,7 +45,8 @@ export function activate (context: vscode.ExtensionContext) {
context.subscriptions.push(vscode.languages.registerDocumentSymbolProvider(selector, symbolProvider))
context.subscriptions.push(vscode.languages.registerDocumentLinkProvider(selector, new LinkProvider(engine)))
context.subscriptions.push(vscode.languages.registerWorkspaceSymbolProvider(new AsciidocWorkspaceSymbolProvider(symbolProvider)))
context.subscriptions.push(vscode.languages.registerCompletionItemProvider(selector, new AttributeCompleter(contributions.extensionUri), '{'))
context.subscriptions.push(vscode.languages.registerCompletionItemProvider(selector, new AttributeReferenceProvider(contributions.extensionUri), '{'))
context.subscriptions.push(vscode.languages.registerCompletionItemProvider(selector, new BuiltinDocumentAttributeProvider(contributions.extensionUri), ':'))
const previewSecuritySelector = new PreviewSecuritySelector(cspArbiter, previewManager)

const commandManager = new CommandManager()
Expand Down
24 changes: 0 additions & 24 deletions src/features/attributeCompleter.ts

This file was deleted.

31 changes: 31 additions & 0 deletions src/features/attributeReferenceProvider.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import * as vscode from 'vscode'

import { AsciidocParser } from '../asciidocParser'

export class AttributeReferenceProvider {
constructor(private readonly extensionUri: vscode.Uri) {
}

async provideCompletionItems(textDocument: vscode.TextDocument, position: vscode.Position) {
const {document} = await new AsciidocParser(this.extensionUri).parseText(textDocument.getText(), textDocument)
if (document) {
const attributes = document.getAttributes()
const lineText = textDocument.lineAt(position).text
const prefix = lineText.substring(position.character - 1, position.character)
const suffix = lineText.substring(position.character, position.character + 1)
return Object.keys(attributes).map((key) => {
const completionItem = new vscode.CompletionItem({
label: key,
description: attributes[key]?.toString(),
},
vscode.CompletionItemKind.Variable)
let insertText = key
insertText = prefix !== "{" ? `{${insertText}` : insertText
insertText = suffix !== "}" ? `${insertText}}` : insertText
completionItem.insertText = insertText
return completionItem
}
)
}
}
}
Loading

0 comments on commit 79c6ec0

Please sign in to comment.