-
-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathindex.ts
More file actions
82 lines (67 loc) · 2.5 KB
/
index.ts
File metadata and controls
82 lines (67 loc) · 2.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import { commands, languages } from 'vscode'
import type { ExtensionContext } from 'vscode'
import { Logger } from '#vscode/logger'
import ExtConfig from '#vscode/utilities/config'
import ProjectManager from '#vscode/project_manager'
import type { AdonisProject } from '#types/projects'
import { registerAceCommands } from '#vscode/commands'
import { ViewContainer } from '#vscode/tree_views/index'
import { registerDocsCommands } from '#vscode/commands/docs'
import { Extension, setExtensionContext } from '#vscode/extension'
import InertiaLinkProvider from '#vscode/providers/inertia/link_provider'
import { RouteControllerLinkProvider } from '#vscode/providers/routes/link_provider'
import { InertiaCompletionProvider } from '#vscode/providers/inertia/completion_provider'
import RouteControllerCompletionProvider from '#vscode/providers/routes/completion_provider'
export async function activate(context: ExtensionContext) {
setExtensionContext(context)
console.log('Activating AdonisJS extension...')
const projects = await ProjectManager.load()
if (!projects.length) {
Logger.info('No AdonisJS project found')
return
}
/**
* Set commands visibility
*/
commands.executeCommand('setContext', ExtConfig.CONTEXT_ADONIS_PROJECT_LOADED, true)
/**
* Register views
*/
ViewContainer.initViews(context)
/**
* Register commands
*/
registerAceCommands(context)
registerDocsCommands(context)
commands.registerCommand(
'adonis-vscode-extension.pickProject',
async (project?: AdonisProject) => {
project = project || (await ProjectManager.quickPickProject())
if (!project) return
ProjectManager.setCurrentProject(project)
Extension.routesTreeDataProvider.getAllRoutes()
}
)
/**
* Autocompletion and links for TS files
*/
const tsSelector = { language: 'typescript', scheme: 'file' }
const routeLink = languages.registerDocumentLinkProvider(
tsSelector,
new RouteControllerLinkProvider()
)
const routeCompletion = languages.registerCompletionItemProvider(
tsSelector,
new RouteControllerCompletionProvider()
)
/**
* Autocompletion and links for Inertia in TS files
*/
const inertiaLink = languages.registerDocumentLinkProvider(tsSelector, new InertiaLinkProvider())
const inertiaCompletion = languages.registerCompletionItemProvider(
tsSelector,
new InertiaCompletionProvider()
)
context.subscriptions.push(routeLink, routeCompletion, inertiaLink, inertiaCompletion)
}
export function deactivate() {}