Skip to content

Commit 0a8aa9f

Browse files
committed
🍻
1 parent 624e957 commit 0a8aa9f

File tree

4 files changed

+34
-33
lines changed

4 files changed

+34
-33
lines changed

package.json

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,17 @@
3131
"type": "object",
3232
"title": "Laravel goto view configuration",
3333
"properties": {
34-
"laravel_goto_view.quick_click": {
34+
"laravel_goto_view.quickClick": {
3535
"type": "boolean",
3636
"default": true,
3737
"description": "Use 'Ctrl' or 'Alt' + click"
3838
},
39-
"laravel_goto_view.folder": {
39+
"laravel_goto_view.folderTip": {
40+
"type": "boolean",
41+
"default": true,
42+
"description": "Display path name"
43+
},
44+
"laravel_goto_view.folders": {
4045
"type": "object",
4146
"default": {
4247
"default":"/resources/views"

src/extension.ts

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,18 @@ import * as util from './util';
77
const REG = /(['"])[^'"]*\1/;
88

99
export function activate(context: ExtensionContext) {
10-
let config = workspace.getConfiguration('laravel_goto_view');
1110
let hover = languages.registerHoverProvider(['php','blade','laravel-blade'], {
12-
provideHover(document, position, token) {
11+
provideHover(document, position, token) {
12+
let config = workspace.getConfiguration('laravel_goto_view');
1313
let linkRange = document.getWordRangeAtPosition(position, REG);
1414
if(linkRange){
1515
let filePaths = util.getFilePaths(document.getText(linkRange), document);
1616
let workspaceFolder = workspace.getWorkspaceFolder(document.uri);
1717
if(filePaths.length > 0){
1818
let text:string = "";
1919
for (let i in filePaths) {
20-
text += `\`${filePaths[i].name}\` [${workspaceFolder.name + filePaths[i].showPath}](${filePaths[i].fileUri}) \r`;
20+
text += config.folderTip ? `\`${filePaths[i].name}\`` : '';
21+
text += ` [${workspaceFolder.name + filePaths[i].showPath}](${filePaths[i].fileUri}) \r`;
2122
}
2223
return new Hover(new MarkdownString(text));
2324
}
@@ -27,10 +28,8 @@ export function activate(context: ExtensionContext) {
2728
});
2829
context.subscriptions.push(hover);
2930

30-
if (config.quick_click) {
31-
let link = languages.registerDocumentLinkProvider(['php','blade','laravel-blade'], new LinkProvider());
32-
context.subscriptions.push(link);
33-
}
31+
let link = languages.registerDocumentLinkProvider(['php','blade','laravel-blade'], new LinkProvider());
32+
context.subscriptions.push(link);
3433
}
3534

3635
export function deactivate() {

src/link.ts

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,27 @@ import * as util from './util';
55

66
export class LinkProvider implements DocumentLinkProvider {
77
public provideDocumentLinks(document: TextDocument, token: CancellationToken): ProviderResult<DocumentLink[]> {
8+
let config = workspace.getConfiguration('laravel_goto_view');
89
let documentLinks = [];
910
let index = 0;
1011
let reg = /(['"])[^'"]*\1/g;
11-
while (index < document.lineCount) {
12-
let line = document.lineAt(index);
13-
let result = line.text.match(reg);
14-
if (result != null) {
15-
for (let item of result) {
16-
let filePath = util.getFilePath(item, document);
17-
if(filePath != null){
18-
let start = new Position(line.lineNumber, line.text.indexOf(item) + 1);
19-
let end = start.translate(0, item.length - 2);
20-
let documentlink = new DocumentLink(new Range(start, end), Uri.file(filePath));
21-
documentLinks.push(documentlink);
22-
};
12+
if (config.quickClick) {
13+
while (index < document.lineCount) {
14+
let line = document.lineAt(index);
15+
let result = line.text.match(reg);
16+
if (result != null) {
17+
for (let item of result) {
18+
let file = util.getFilePath(item, document);
19+
if(file != null){
20+
let start = new Position(line.lineNumber, line.text.indexOf(item) + 1);
21+
let end = start.translate(0, item.length - 2);
22+
let documentlink = new DocumentLink(new Range(start, end), file.fileUri);
23+
documentLinks.push(documentlink);
24+
};
25+
}
2326
}
27+
index++;
2428
}
25-
index++;
2629
}
2730
return documentLinks;
2831
}

src/util.ts

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,8 @@ import { workspace, TextDocument, Uri } from 'vscode';
44
import * as fs from "fs";
55

66
export function getFilePath(text:string, document:TextDocument) {
7-
let config = workspace.getConfiguration('laravel_goto_view');
8-
let workspaceFolder = workspace.getWorkspaceFolder(document.uri).uri.fsPath;
9-
let filePath = workspaceFolder + config.folder[0].path + "/" + text.replace(/\./g,'/').replace(/\"|\'/g,'') + ".blade.php";
10-
if(fs.existsSync(filePath)){
11-
return filePath;
12-
}else{
13-
return null;
14-
}
7+
let paths = getFilePaths(text, document);
8+
return paths.length > 0 ? paths[0] : null;
159
}
1610

1711
export function getFilePaths(text:string, document:TextDocument): any {
@@ -21,7 +15,7 @@ export function getFilePaths(text:string, document:TextDocument): any {
2115
let result = [];
2216
if (text.indexOf("::") != -1) {
2317
let info = text.split('::');
24-
let showPath = config.folder[info[0]] + "/" + info[1].replace(/\./g,'/') + ".blade.php";
18+
let showPath = config.folders[info[0]] + "/" + info[1].replace(/\./g,'/') + ".blade.php";
2519
let filePath = workspaceFolder + showPath;
2620
if(fs.existsSync(filePath)){
2721
result.push({
@@ -31,8 +25,8 @@ export function getFilePaths(text:string, document:TextDocument): any {
3125
});
3226
}
3327
} else {
34-
for (let item in config.folder) {
35-
let showPath = config.folder[item] + "/" + text.replace(/\./g,'/') + ".blade.php";
28+
for (let item in config.folders) {
29+
let showPath = config.folders[item] + "/" + text.replace(/\./g,'/') + ".blade.php";
3630
let filePath = workspaceFolder + showPath;
3731
if(fs.existsSync(filePath)){
3832
result.push({

0 commit comments

Comments
 (0)