Skip to content

Commit 5fa26b5

Browse files
committed
v1.1.1
1 parent 7d6872e commit 5fa26b5

File tree

4 files changed

+74
-52
lines changed

4 files changed

+74
-52
lines changed

package.json

Lines changed: 11 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -2,48 +2,28 @@
22
"name": "laravel-goto-view",
33
"displayName": "Laravel goto view",
44
"description": "Quick jump to view",
5-
"version": "1.0.1",
5+
"version": "1.1.1",
66
"publisher": "codingyu",
77
"engines": {
88
"vscode": "^1.15.0"
99
},
1010
"icon": "images/icon.jpg",
1111
"bugs": {
12-
"url": "https://github.com/codingyu/laravel-goto-view/issues"
13-
},
14-
"homepage": "https://github.com/codingyu/laravel-goto-view/blob/master/README.md",
15-
"repository": {
16-
"type": "git",
17-
"url": "https://github.com/codingyu/laravel-goto-view.git"
18-
},
12+
"url": "https://github.com/codingyu/laravel-goto-view/issues"
13+
},
14+
"homepage": "https://github.com/codingyu/laravel-goto-view/blob/master/README.md",
15+
"repository": {
16+
"type": "git",
17+
"url": "https://github.com/codingyu/laravel-goto-view.git"
18+
},
1919
"categories": [
20-
"Other"
20+
"PHP",
21+
"Laravel"
2122
],
2223
"activationEvents": [
23-
"onCommand:extension.gotoView"
24+
"onLanguage:php"
2425
],
2526
"main": "./out/src/extension",
26-
"contributes": {
27-
"commands": [
28-
{
29-
"command": "extension.gotoView",
30-
"title": "Goto view (laravel)"
31-
}
32-
],
33-
"menus": {
34-
"editor/context": [{
35-
"when": "editorHasSelection",
36-
"command": "extension.gotoView",
37-
"group": "navigation"
38-
}]
39-
},
40-
"keybindings": [
41-
{
42-
"command": "extension.gotoView",
43-
"key": "Alt+V"
44-
}
45-
]
46-
},
4727
"scripts": {
4828
"vscode:prepublish": "tsc -p ./",
4929
"compile": "tsc -watch -p ./",

src/extension.ts

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

3-
import * as fs from "fs";
4-
import * as vscode from 'vscode';
5-
import Range = vscode.Range;
3+
import { workspace, languages, Hover, ExtensionContext} from 'vscode';
4+
import { LinkProvider } from './link';
5+
import * as util from './util';
66

7-
export function activate(context: vscode.ExtensionContext) {
8-
// console.log('Congratulations, your extension "laravel-goto-view" is now active!');
9-
let disposable = vscode.commands.registerCommand('extension.gotoView', gotoView);
10-
context.subscriptions.push(disposable);
7+
const REG = /(['"])[^'"]*\1/;
8+
9+
export function activate(context: ExtensionContext) {
10+
let hover = languages.registerHoverProvider('php', {
11+
provideHover(document, position, token) {
12+
let linkRange = document.getWordRangeAtPosition(position, REG);
13+
if(linkRange){
14+
let filePath = util.getFilePath(document.getText(linkRange));
15+
if(filePath != null){
16+
return new Hover(filePath.replace(workspace.rootPath + '/',''));
17+
}
18+
}
19+
return;
20+
}
21+
});
22+
let link = languages.registerDocumentLinkProvider(['php'], new LinkProvider());
23+
context.subscriptions.push(hover);
24+
context.subscriptions.push(link);
1125
}
1226

1327
export function deactivate() {
1428
//
15-
}
16-
17-
function gotoView() {
18-
let uri = vscode.Uri;
19-
let e = vscode.window.activeTextEditor;
20-
let d = e.document;
21-
let sel = e.selections;
22-
23-
let txt: string = d.getText(new Range(sel[0].start, sel[0].end));
24-
let path = vscode.workspace.rootPath + "/resources/views/" + txt.replace(/\./g,'/') + ".blade.php";
25-
26-
fs.exists(path, function(exists) {
27-
exists ? vscode.window.showTextDocument(uri.file(path)) : vscode.window.showInformationMessage('View does not exist!');;
28-
});
2929
}

src/link.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 { workspace, Position, Range, CancellationToken, DocumentLink, DocumentLinkProvider, TextDocument, Uri, ProviderResult } from 'vscode';
4+
import * as util from './util';
5+
6+
export class LinkProvider implements DocumentLinkProvider {
7+
public provideDocumentLinks(document: TextDocument, token: CancellationToken): ProviderResult<DocumentLink[]> {
8+
let documentLinks = [];
9+
let index = 0;
10+
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);
17+
if(filePath != null){
18+
let start = new Position(line.lineNumber, line.text.indexOf(item));
19+
let end = start.translate(0, item.length);
20+
let documentlink = new DocumentLink(new Range(start, end), Uri.file(filePath));
21+
documentLinks.push(documentlink);
22+
};
23+
}
24+
}
25+
index++;
26+
}
27+
return documentLinks;
28+
}
29+
}

src/util.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
'use strict';
2+
3+
import { workspace } from 'vscode';
4+
import * as fs from "fs";
5+
6+
export function getFilePath(text:string) {
7+
let filePath = workspace.rootPath + "/resources/views/" + text.replace(/\./g,'/').replace(/\"|\'/g,'') + ".blade.php";
8+
if(fs.existsSync(filePath)){
9+
return filePath;
10+
}else{
11+
return null;
12+
}
13+
}

0 commit comments

Comments
 (0)