Skip to content

Commit 0e9cc85

Browse files
committed
🤓
1 parent 243920a commit 0e9cc85

File tree

4 files changed

+50
-35
lines changed

4 files changed

+50
-35
lines changed

‎src/config.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
'use strict';
2+
3+
const selector = ['php', 'blade', 'laravel-blade'];
4+
5+
export {
6+
selector
7+
}

‎src/extension.ts

Lines changed: 6 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,13 @@
11
'use strict';
22

3-
import { workspace, languages, Hover, ExtensionContext, MarkdownString, Uri} from 'vscode';
4-
import { LinkProvider } from './link';
5-
import * as util from './util';
6-
7-
const REG = /(['"])[^'"]*\1/;
3+
import { languages, ExtensionContext} from 'vscode';
4+
import { LinkProvider } from './providers/linkProvider';
5+
import { HoverProvider } from './providers/hoverProvider';
6+
import { selector } from "./config";
87

98
export function activate(context: ExtensionContext) {
10-
let hover = languages.registerHoverProvider(['php','blade','laravel-blade'], {
11-
provideHover(document, position, token) {
12-
let config = workspace.getConfiguration('laravel_goto_view');
13-
let linkRange = document.getWordRangeAtPosition(position, REG);
14-
if(linkRange){
15-
let filePaths = util.getFilePaths(document.getText(linkRange), document);
16-
let workspaceFolder = workspace.getWorkspaceFolder(document.uri);
17-
if(filePaths.length > 0){
18-
let text:string = "";
19-
for (let i in filePaths) {
20-
text += config.folderTip ? `\`${filePaths[i].name}\`` : '';
21-
text += ` [${workspaceFolder.name + filePaths[i].showPath}](${filePaths[i].fileUri}) \r`;
22-
}
23-
return new Hover(new MarkdownString(text));
24-
}
25-
}
26-
return;
27-
}
28-
});
29-
context.subscriptions.push(hover);
30-
31-
let link = languages.registerDocumentLinkProvider(['php','blade','laravel-blade'], new LinkProvider());
32-
context.subscriptions.push(link);
9+
context.subscriptions.push(languages.registerHoverProvider(selector, new HoverProvider()));
10+
context.subscriptions.push(languages.registerDocumentLinkProvider(selector, new LinkProvider()));
3311
}
3412

3513
export function deactivate() {

‎src/providers/hoverProvider.ts

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
'use strict';
2+
3+
import * as vscode from "vscode";
4+
import * as util from '../util';
5+
6+
export class HoverProvider implements vscode.HoverProvider {
7+
// constructor(parameters) {
8+
9+
// }
10+
11+
provideHover(doc, pos, token): vscode.ProviderResult<vscode.Hover> {
12+
const REG = /(['"])[^'"]*\1/;
13+
let config = vscode.workspace.getConfiguration('laravel_goto_view');
14+
let linkRange = doc.getWordRangeAtPosition(pos, REG);
15+
if(linkRange){
16+
let filePaths = util.getFilePaths(doc.getText(linkRange), doc);
17+
let workspaceFolder = vscode.workspace.getWorkspaceFolder(doc.uri);
18+
if(filePaths.length > 0){
19+
let text:string = "";
20+
for (let i in filePaths) {
21+
text += config.folderTip ? `\`${filePaths[i].name}\`` : '';
22+
text += ` [${workspaceFolder.name + filePaths[i].showPath}](${filePaths[i].fileUri}) \r`;
23+
}
24+
return new vscode.Hover(new vscode.MarkdownString(text));
25+
}
26+
}
27+
return;
28+
}
29+
}

‎src/link.ts renamed to ‎src/providers/linkProvider.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
'use strict';
22

3-
import { workspace, Position, Range, CancellationToken, DocumentLink, DocumentLinkProvider, TextDocument, Uri, ProviderResult } from 'vscode';
4-
import * as util from './util';
3+
import * as vscode from "vscode";
4+
import * as util from '../util';
55

6-
export class LinkProvider implements DocumentLinkProvider {
7-
public provideDocumentLinks(document: TextDocument, token: CancellationToken): ProviderResult<DocumentLink[]> {
8-
let config = workspace.getConfiguration('laravel_goto_view');
6+
export class LinkProvider implements vscode.DocumentLinkProvider {
7+
public provideDocumentLinks(document: vscode.TextDocument, token: vscode.CancellationToken): vscode.ProviderResult<vscode.DocumentLink[]> {
8+
let config = vscode.workspace.getConfiguration('laravel_goto_view');
99
let documentLinks = [];
1010
let index = 0;
1111
let reg = /(['"])[^'"]*\1/g;
12+
1213
if (config.quickJump) {
1314
while (index < document.lineCount) {
1415
let line = document.lineAt(index);
@@ -17,9 +18,9 @@ export class LinkProvider implements DocumentLinkProvider {
1718
for (let item of result) {
1819
let file = util.getFilePath(item, document);
1920
if(file != null){
20-
let start = new Position(line.lineNumber, line.text.indexOf(item) + 1);
21+
let start = new vscode.Position(line.lineNumber, line.text.indexOf(item) + 1);
2122
let end = start.translate(0, item.length - 2);
22-
let documentlink = new DocumentLink(new Range(start, end), file.fileUri);
23+
let documentlink = new vscode.DocumentLink(new vscode.Range(start, end), file.fileUri);
2324
documentLinks.push(documentlink);
2425
};
2526
}

0 commit comments

Comments
 (0)