Skip to content

Commit

Permalink
WIP
Browse files Browse the repository at this point in the history
  • Loading branch information
tdroxler committed Apr 23, 2024
1 parent 704d561 commit 720ba82
Show file tree
Hide file tree
Showing 31 changed files with 113 additions and 2,101 deletions.
73 changes: 68 additions & 5 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 3 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -128,32 +128,30 @@
"lint": "eslint src --ext ts,js --fix",
"fmt": "prettier --write .",
"test": "jest",
"antlr4ts": "antlr4ts -visitor ./src/parser/*.g4",
"update-builtin-schema": "curl -o ./src/provider/builtin/ralph-built-in-functions.json https://raw.githubusercontent.com/alephium/alephium/v${npm_package_config_alephium_version}/protocol/src/main/resources/ralph-built-in-functions.json"
},
"dependencies": {
"@alephium/cli": "^0.9.1",
"@alephium/web3": "^0.9.1",
"antlr4ts": "0.5.0-alpha.4",
"execa": "^6.1.0",
"immutable": "^4.2.1",
"node-fetch": "^3.3.0",
"prettier": "^2.8.1",
"request": "^2.88.2",
"request-progress": "^3.0.0",
"request-promise-native": "^1.0.9"
"request-promise-native": "^1.0.9",
"vscode-languageclient": "^9.0.1"
},
"devDependencies": {
"@types/chai": "^4.3.4",
"@types/crypto-js": "^4.1.1",
"@types/node": "^18.11.18",
"@types/node": "^18.19.31",
"@types/prettier": "^2.7.2",
"@types/request": "^2.48.8",
"@types/request-promise-native": "^1.0.18",
"@types/vscode": "1.69.0",
"@typescript-eslint/eslint-plugin": "^5.48.0",
"@typescript-eslint/parser": "^5.48.0",
"antlr4ts-cli": "0.5.0-alpha.4",
"assert": "^2.0.0",
"chai": "^4.3.7",
"eslint": "8.22.0",
Expand Down
28 changes: 0 additions & 28 deletions src/diagnostics.ts

This file was deleted.

2 changes: 0 additions & 2 deletions src/event.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ import vscode, { TextDocument } from 'vscode'
import * as path from 'path'
import cache from './cache/cache'
import Parser from './parser/parser'
import { analyseDiagnostic } from './diagnostics'

export function registerEvent() {
vscode.workspace.onDidChangeTextDocument((event) => parser(event.document))
Expand All @@ -11,7 +10,6 @@ export function registerEvent() {
vscode.workspace.onDidDeleteFiles((events) => events.files.forEach((e) => cache.remove(e)))
vscode.workspace.onDidSaveTextDocument((doc) => {
parser(doc)
analyseDiagnostic()
})
vscode.workspace.onDidRenameFiles(async (events) => {
events.files.forEach(async (value) => {
Expand Down
83 changes: 42 additions & 41 deletions src/extension.ts
Original file line number Diff line number Diff line change
@@ -1,26 +1,12 @@
import * as vscode from 'vscode'
import { commands } from './commander/commands'
import { FormatterProvider } from './formatter/formatter'
import { Providers as hoverProvider } from './provider/hover/providers'
import { SymbolProvider } from './provider/symbolProvider'
import { GlobalProvider } from './provider/completion/globalProvider'
import { DefinitionProvider } from './provider/definitionProvider'
import { RalphRenameProvider } from './provider/renameProvider'
import { BuiltInProvider } from './provider/completion/builtInProvider'
import { IdentifierProvider } from './provider/completion/identifierProvider'
import { EnumProvider } from './provider/completion/enumProvider'
import { AnnotationProvider } from './provider/completion/annotationProvider'
import { MemberProvider } from './provider/completion/memberProvider'
import { RalphSignatureHelpProvider } from './provider/signatureHelpProvider'
import { RalphImplementationProvider } from './provider/implementationProvider'
import { RalphTypeDefinitionProvider } from './provider/typeDefinitionProvider'
import { RalphReferenceProvider } from './provider/referenceProvider'
import { RalphTypeHierarchyProvider } from './provider/typeHierarchyProvider'
import { analyseDiagnostic } from './diagnostics'
import cache from './cache/cache'
import { EmitProvider } from './provider/completion/emitProvider'
import { parser, registerEvent } from './event'
import { ContractBuiltInProvider } from './provider/completion/contractBuiltinProvider'
import {LanguageClient, LanguageClientOptions, ServerOptions, TransportKind} from 'vscode-languageclient/node';


let client: LanguageClient;

// this method is called when your extension is activated
// your extension is activated the very first time the command is executed
Expand All @@ -31,7 +17,6 @@ export async function activate(context: vscode.ExtensionContext) {

await init()
registerEvent()
analyseDiagnostic()

// The command has been defined in the package.json file
// Now provide the implementation of the command with registerCommand
Expand All @@ -41,32 +26,39 @@ export async function activate(context: vscode.ExtensionContext) {
})

const selector = { scheme: 'file', language: 'ralph' }
hoverProvider().forEach((value) => context.subscriptions.push(vscode.languages.registerHoverProvider(selector, value)))

context.subscriptions.push(vscode.languages.registerDocumentFormattingEditProvider(selector, new FormatterProvider()))
context.subscriptions.push(vscode.languages.registerDocumentSymbolProvider(selector, new SymbolProvider()))
context.subscriptions.push(vscode.languages.registerWorkspaceSymbolProvider(new SymbolProvider()))
// context.subscriptions.push(vscode.languages.registerCompletionItemProvider(selector, new GlobalProvider()))
context.subscriptions.push(vscode.languages.registerCompletionItemProvider(selector, new ContractBuiltInProvider(), '.'))
context.subscriptions.push(vscode.languages.registerCompletionItemProvider(selector, new BuiltInProvider()))
context.subscriptions.push(vscode.languages.registerCompletionItemProvider(selector, new IdentifierProvider()))
context.subscriptions.push(vscode.languages.registerCompletionItemProvider(selector, new EmitProvider(), 'emit'))
context.subscriptions.push(vscode.languages.registerCompletionItemProvider(selector, new AnnotationProvider(), '@', '(', ')'))
// context.subscriptions.push(vscode.languages.registerCompletionItemProvider(selector, new EnumProvider(), '.'))
context.subscriptions.push(vscode.languages.registerCompletionItemProvider(selector, new MemberProvider(), '.'))
context.subscriptions.push(vscode.languages.registerDefinitionProvider(selector, new DefinitionProvider()))
context.subscriptions.push(vscode.languages.registerRenameProvider(selector, new RalphRenameProvider()))
context.subscriptions.push(vscode.languages.registerSignatureHelpProvider(selector, new RalphSignatureHelpProvider(), '(', ')', ','))
context.subscriptions.push(vscode.languages.registerImplementationProvider(selector, new RalphImplementationProvider()))
context.subscriptions.push(vscode.languages.registerTypeDefinitionProvider(selector, new RalphTypeDefinitionProvider()))
context.subscriptions.push(vscode.languages.registerReferenceProvider(selector, new RalphReferenceProvider()))
context.subscriptions.push(vscode.languages.registerTypeHierarchyProvider(selector, new RalphTypeHierarchyProvider()))

console.log('register push completed!')
}

// this method is called when your extension is deactivated
export function deactivate() {
clearInterval(timerId)
console.log("Activating Ralph LSP client");


const serverOptions: ServerOptions = {
command: "ralph-lsp",
transport: TransportKind.stdio,
options: {
shell: true
}
};

const clientOptions: LanguageClientOptions = {
documentSelector: [
{pattern: '**/*.ral'},
{language: 'json', pattern: '**/ralph.json'},
]
};

// Create the client and store it.
client = new LanguageClient(
'ralph-lsp',
'Ralph LSP',
serverOptions,
clientOptions
);

// Start the client.
client.start();
}

async function init() {
Expand All @@ -79,9 +71,18 @@ async function init() {
} catch (err) {
console.log(`Init failed ${uri}`, err)
}
return client.stop();
})
}

export function deactivate(): Thenable<void> | undefined {
clearInterval(timerId)
if (!client) {
return undefined;
}
return client.stop();
}

const timerId = setInterval(() => {
cache.analyse()
}, 1000 * 60 * 5)
88 changes: 0 additions & 88 deletions src/provider/builtIn/contractBuiltIn.ts

This file was deleted.

Loading

0 comments on commit 720ba82

Please sign in to comment.