Skip to content

Commit c9436c0

Browse files
committed
fix vendor resolveing
1 parent 9a80efc commit c9436c0

File tree

5 files changed

+56
-47
lines changed

5 files changed

+56
-47
lines changed

package.json

100644100755
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@
4444
"laravel_goto_view.folders": {
4545
"type": "object",
4646
"default": {
47-
"default": "/resources/views"
47+
"default": "/resources/views",
48+
"vendor": "/resources/views/vendor"
4849
},
4950
"items": {
5051
"type": "string"
@@ -82,4 +83,4 @@
8283
"@types/node": "^6.0.40",
8384
"@types/mocha": "^2.2.32"
8485
}
85-
}
86+
}

src/extension.ts

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

3-
import { workspace, languages, ExtensionContext } from 'vscode';
3+
import { languages, ExtensionContext } from 'vscode';
44
import { LinkProvider } from './providers/linkProvider';
55
import { HoverProvider } from './providers/hoverProvider';
66

77
export function activate(context: ExtensionContext) {
8-
let hover = languages.registerHoverProvider(['php', 'blade', 'laravel-blade'], new HoverProvider());
9-
let link = languages.registerDocumentLinkProvider(['php', 'blade', 'laravel-blade'], new LinkProvider());
10-
context.subscriptions.push(hover, link);
8+
let hover = languages.registerHoverProvider(['php', 'blade', 'laravel-blade'], new HoverProvider());
9+
let link = languages.registerDocumentLinkProvider(['php', 'blade', 'laravel-blade'], new LinkProvider());
10+
11+
context.subscriptions.push(hover, link);
1112
}
1213

1314
export function deactivate() {
14-
//
15-
}
15+
//
16+
}

src/providers/hoverProvider.ts

100644100755
Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,34 @@
11
'use strict';
22

3-
import * as vscode from "vscode";
3+
import {
4+
HoverProvider as vsHoverProvider,
5+
TextDocument,
6+
Position,
7+
CancellationToken,
8+
ProviderResult,
9+
Hover,
10+
workspace,
11+
MarkdownString,
12+
} from "vscode";
413
import * as util from '../util';
514

6-
export class HoverProvider implements vscode.HoverProvider {
7-
provideHover(doc: vscode.TextDocument, pos: vscode.Position, token: vscode.CancellationToken): vscode.ProviderResult<vscode.Hover> {
15+
export class HoverProvider implements vsHoverProvider {
16+
provideHover(doc: TextDocument, pos: Position, token: CancellationToken): ProviderResult<Hover> {
817
let reg = /(?<=view\(|@include\(|@extends\(|@component\()(['"])[^'"]*\1/;
9-
let config = vscode.workspace.getConfiguration('laravel_goto_view');
18+
let config = workspace.getConfiguration('laravel_goto_view');
1019
let linkRange = doc.getWordRangeAtPosition(pos, reg);
1120
if (linkRange) {
1221
let filePaths = util.getFilePaths(doc.getText(linkRange), doc);
13-
let workspaceFolder = vscode.workspace.getWorkspaceFolder(doc.uri);
22+
let workspaceFolder = workspace.getWorkspaceFolder(doc.uri);
1423
if (filePaths.length > 0) {
1524
let text: string = "";
1625
for (let i in filePaths) {
1726
text += config.folderTip ? `\`${filePaths[i].name}\`` : '';
1827
text += ` [${workspaceFolder.name + filePaths[i].showPath}](${filePaths[i].fileUri}) \r`;
1928
}
20-
return new vscode.Hover(new vscode.MarkdownString(text));
29+
return new Hover(new MarkdownString(text));
2130
}
2231
}
2332
return;
2433
}
25-
}
34+
}

src/providers/linkProvider.ts

100644100755
Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,21 @@
11
'use strict';
22

3-
import * as vscode from "vscode";
3+
import {
4+
DocumentLinkProvider as vsDocumentLinkProvider,
5+
TextDocument,
6+
CancellationToken,
7+
ProviderResult,
8+
DocumentLink,
9+
workspace,
10+
Position,
11+
Range,
12+
} from "vscode"
413
import * as util from '../util';
514

6-
export class LinkProvider implements vscode.DocumentLinkProvider {
7-
public provideDocumentLinks(doc: vscode.TextDocument, token: vscode.CancellationToken): vscode.ProviderResult<vscode.DocumentLink[]> {
15+
export class LinkProvider implements vsDocumentLinkProvider {
16+
public provideDocumentLinks(doc: TextDocument, token: CancellationToken): ProviderResult<DocumentLink[]> {
817
let documentLinks = [];
9-
let config = vscode.workspace.getConfiguration('laravel_goto_view');
18+
let config = workspace.getConfiguration('laravel_goto_view');
1019
let index = 0;
1120
let reg = /(?<=view\(|@include\(|@extends\(|@component\()(['"])[^'"]*\1/g;
1221
if (config.quickJump) {
@@ -17,9 +26,9 @@ export class LinkProvider implements vscode.DocumentLinkProvider {
1726
for (let item of result) {
1827
let file = util.getFilePath(item, doc);
1928
if (file != null) {
20-
let start = new vscode.Position(line.lineNumber, line.text.indexOf(item));
29+
let start = new Position(line.lineNumber, line.text.indexOf(item));
2130
let end = start.translate(0, item.length);
22-
let documentlink = new vscode.DocumentLink(new vscode.Range(start, end), file.fileUri);
31+
let documentlink = new DocumentLink(new Range(start, end), file.fileUri);
2332
documentLinks.push(documentlink);
2433
};
2534
}
@@ -29,4 +38,4 @@ export class LinkProvider implements vscode.DocumentLinkProvider {
2938
}
3039
return documentLinks;
3140
}
32-
}
41+
}

src/util.ts

100644100755
Lines changed: 14 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -10,48 +10,36 @@ export function getFilePath(text: string, document: TextDocument) {
1010
}
1111

1212
export function getFilePaths(text: string, document: TextDocument) {
13-
let paths = scanViewPaths(document);
14-
let config = workspace.getConfiguration('laravel_goto_view');
1513
let workspaceFolder = workspace.getWorkspaceFolder(document.uri).uri.fsPath;
16-
text = text.replace(/\"|\'/g, '');
14+
let config = workspace.getConfiguration('laravel_goto_view');
15+
let paths = scanViewPaths(workspaceFolder, config);
16+
let file = text.replace(/\"|\'/g, '').replace(/::|\./g, '/');
1717
let result = [];
18-
if (text.indexOf("::") != -1) {
19-
let info = text.split('::');
18+
19+
for (let item in paths) {
2020
for (let extension in config.extensions) {
21-
let showPath = paths[info[0]] + "/" + info[1].replace(/\./g, '/') + config.extensions[extension];
21+
let showPath = paths[item] + `/${file}` + config.extensions[extension];
2222
let filePath = workspaceFolder + showPath;
23+
2324
if (fs.existsSync(filePath)) {
2425
result.push({
25-
"name": info[0],
26+
"name": item,
2627
"showPath": showPath,
2728
"fileUri": Uri.file(filePath)
2829
});
2930
}
3031
}
31-
} else {
32-
for (let item in paths) {
33-
for (let extension in config.extensions) {
34-
let showPath = paths[item] + "/" + text.replace(/\./g, '/') + config.extensions[extension];
35-
let filePath = workspaceFolder + showPath;
36-
if (fs.existsSync(filePath)) {
37-
result.push({
38-
"name": item,
39-
"showPath": showPath,
40-
"fileUri": Uri.file(filePath)
41-
});
42-
}
43-
}
44-
}
4532
}
4633

4734
return result;
4835
}
4936

50-
export function scanViewPaths(document: TextDocument) {
51-
let configFolders = workspace.getConfiguration('laravel_goto_view.folders');
37+
export function scanViewPaths(workspaceFolder, config) {
38+
let configFolders = config.folders;
39+
40+
// Modules
5241
let folders = {};
5342
Object.assign(folders, configFolders);
54-
let workspaceFolder = workspace.getWorkspaceFolder(document.uri).uri.fsPath;
5543
let modulePath = path.join(workspaceFolder, 'Modules');
5644
if (fs.existsSync(modulePath)) {
5745
fs.readdirSync(modulePath).forEach(element => {
@@ -61,5 +49,6 @@ export function scanViewPaths(document: TextDocument) {
6149
}
6250
});
6351
}
52+
6453
return folders;
65-
}
54+
}

0 commit comments

Comments
 (0)