提交 52276538 编写于 作者: J Johannes Rieken

tsfmt - extensions/php

上级 69a30b65
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
'use strict'; 'use strict';
import {CompletionItemProvider, CompletionItem, CompletionItemKind, CancellationToken, TextDocument, Position, Range, TextEdit} from 'vscode'; import { CompletionItemProvider, CompletionItem, CompletionItemKind, CancellationToken, TextDocument, Position, Range, TextEdit } from 'vscode';
import phpGlobals = require('./phpGlobals'); import phpGlobals = require('./phpGlobals');
export default class PHPCompletionItemProvider implements CompletionItemProvider { export default class PHPCompletionItemProvider implements CompletionItemProvider {
...@@ -14,19 +14,19 @@ export default class PHPCompletionItemProvider implements CompletionItemProvider ...@@ -14,19 +14,19 @@ export default class PHPCompletionItemProvider implements CompletionItemProvider
public provideCompletionItems(document: TextDocument, position: Position, token: CancellationToken): Promise<CompletionItem[]> { public provideCompletionItems(document: TextDocument, position: Position, token: CancellationToken): Promise<CompletionItem[]> {
let result: CompletionItem[] = []; let result: CompletionItem[] = [];
var range = document.getWordRangeAtPosition(position); var range = document.getWordRangeAtPosition(position);
var prefix = range ? document.getText(range) : ''; var prefix = range ? document.getText(range) : '';
if (!range) { if (!range) {
range = new Range(position, position); range = new Range(position, position);
} }
var added : any = {}; var added: any = {};
var createNewProposal = function(kind: CompletionItemKind, name: string, entry: phpGlobals.IEntry) : CompletionItem { var createNewProposal = function (kind: CompletionItemKind, name: string, entry: phpGlobals.IEntry): CompletionItem {
var proposal : CompletionItem = new CompletionItem(name); var proposal: CompletionItem = new CompletionItem(name);
proposal.kind = kind; proposal.kind = kind;
if (entry) { if (entry) {
if (entry.description) { if (entry.description) {
proposal.documentation= entry.description; proposal.documentation = entry.description;
} }
if (entry.signature) { if (entry.signature) {
proposal.detail = entry.signature; proposal.detail = entry.signature;
...@@ -35,14 +35,14 @@ export default class PHPCompletionItemProvider implements CompletionItemProvider ...@@ -35,14 +35,14 @@ export default class PHPCompletionItemProvider implements CompletionItemProvider
return proposal; return proposal;
}; };
var matches = (name:string) => { var matches = (name: string) => {
return prefix.length === 0 || name.length >= prefix.length && name.substr(0, prefix.length) === prefix; return prefix.length === 0 || name.length >= prefix.length && name.substr(0, prefix.length) === prefix;
}; };
if (matches('php') && range.start.character >= 2) { if (matches('php') && range.start.character >= 2) {
let twoBeforePosition = new Position(range.start.line, range.start.character - 2); let twoBeforePosition = new Position(range.start.line, range.start.character - 2);
let beforeWord = document.getText(new Range(twoBeforePosition, range.start)); let beforeWord = document.getText(new Range(twoBeforePosition, range.start));
if (beforeWord === '<?') { if (beforeWord === '<?') {
let proposal = createNewProposal(CompletionItemKind.Class, '<?php', null); let proposal = createNewProposal(CompletionItemKind.Class, '<?php', null);
proposal.textEdit = new TextEdit(new Range(twoBeforePosition, position), '<?php'); proposal.textEdit = new TextEdit(new Range(twoBeforePosition, position), '<?php');
...@@ -79,7 +79,7 @@ export default class PHPCompletionItemProvider implements CompletionItemProvider ...@@ -79,7 +79,7 @@ export default class PHPCompletionItemProvider implements CompletionItemProvider
var text = document.getText(); var text = document.getText();
if (prefix[0] === '$') { if (prefix[0] === '$') {
var variableMatch = /\$([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)/g; var variableMatch = /\$([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)/g;
var match : RegExpExecArray = null; var match: RegExpExecArray = null;
while (match = variableMatch.exec(text)) { while (match = variableMatch.exec(text)) {
var word = match[0]; var word = match[0];
if (!added[word]) { if (!added[word]) {
...@@ -89,7 +89,7 @@ export default class PHPCompletionItemProvider implements CompletionItemProvider ...@@ -89,7 +89,7 @@ export default class PHPCompletionItemProvider implements CompletionItemProvider
} }
} }
var functionMatch = /function\s+([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)\s*\(/g; var functionMatch = /function\s+([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)\s*\(/g;
var match : RegExpExecArray = null; var match: RegExpExecArray = null;
while (match = functionMatch.exec(text)) { while (match = functionMatch.exec(text)) {
var word = match[1]; var word = match[1];
if (!added[word]) { if (!added[word]) {
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
'use strict'; 'use strict';
import {HoverProvider, Hover, MarkedString, TextDocument, CancellationToken, Position} from 'vscode'; import { HoverProvider, Hover, MarkedString, TextDocument, CancellationToken, Position } from 'vscode';
import phpGlobals = require('./phpGlobals'); import phpGlobals = require('./phpGlobals');
import { textToMarkedString } from './utils/markedTextUtil'; import { textToMarkedString } from './utils/markedTextUtil';
...@@ -22,7 +22,7 @@ export default class PHPHoverProvider implements HoverProvider { ...@@ -22,7 +22,7 @@ export default class PHPHoverProvider implements HoverProvider {
var entry = phpGlobals.globalfunctions[name] || phpGlobals.compiletimeconstants[name] || phpGlobals.globalvariables[name] || phpGlobals.keywords[name]; var entry = phpGlobals.globalfunctions[name] || phpGlobals.compiletimeconstants[name] || phpGlobals.globalvariables[name] || phpGlobals.keywords[name];
if (entry && entry.description) { if (entry && entry.description) {
let signature = name + (entry.signature || ''); let signature = name + (entry.signature || '');
let contents: MarkedString[] = [ textToMarkedString(entry.description), { language: 'php', value: signature }]; let contents: MarkedString[] = [textToMarkedString(entry.description), { language: 'php', value: signature }];
return new Hover(contents, wordRange); return new Hover(contents, wordRange);
} }
} }
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
// file generated from PHP53Schema.xml using php-exclude_generate_php_globals.js // file generated from PHP53Schema.xml using php-exclude_generate_php_globals.js
export interface IEntry { description?: string; signature?: string; } export interface IEntry { description?: string; signature?: string; }
export interface IEntries { [name:string]:IEntry; } export interface IEntries { [name: string]: IEntry; }
export var globalfunctions: IEntries = { export var globalfunctions: IEntries = {
password_get_info: { password_get_info: {
...@@ -1950,7 +1950,7 @@ export var globalfunctions: IEntries = { ...@@ -1950,7 +1950,7 @@ export var globalfunctions: IEntries = {
signature: '(string $str): string' signature: '(string $str): string'
}, },
urldecode: { urldecode: {
description: 'Decodes any %## encoding in the given string. Plus symbols ('+') are decoded to a space character.', description: 'Decodes any %## encoding in the given string. Plus symbols (' + ') are decoded to a space character.',
signature: '(string $str): string' signature: '(string $str): string'
}, },
rawurlencode: { rawurlencode: {
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
'use strict'; 'use strict';
import {SignatureHelpProvider, SignatureHelp, SignatureInformation, CancellationToken, TextDocument, Position} from 'vscode'; import { SignatureHelpProvider, SignatureHelp, SignatureInformation, CancellationToken, TextDocument, Position } from 'vscode';
import phpGlobals = require('./phpGlobals'); import phpGlobals = require('./phpGlobals');
var _NL = '\n'.charCodeAt(0); var _NL = '\n'.charCodeAt(0);
...@@ -35,7 +35,7 @@ class BackwardIterator { ...@@ -35,7 +35,7 @@ class BackwardIterator {
private lineNumber: number; private lineNumber: number;
private offset: number; private offset: number;
private line: string; private line: string;
private model : TextDocument; private model: TextDocument;
constructor(model: TextDocument, offset: number, lineNumber: number) { constructor(model: TextDocument, offset: number, lineNumber: number) {
this.lineNumber = lineNumber; this.lineNumber = lineNumber;
...@@ -44,11 +44,11 @@ class BackwardIterator { ...@@ -44,11 +44,11 @@ class BackwardIterator {
this.model = model; this.model = model;
} }
public hasNext() : boolean { public hasNext(): boolean {
return this.lineNumber >= 0; return this.lineNumber >= 0;
} }
public next() : number { public next(): number {
if (this.offset < 0) { if (this.offset < 0) {
if (this.lineNumber > 0) { if (this.lineNumber > 0) {
this.lineNumber--; this.lineNumber--;
...@@ -92,7 +92,7 @@ export default class PHPSignatureHelpProvider implements SignatureHelpProvider { ...@@ -92,7 +92,7 @@ export default class PHPSignatureHelpProvider implements SignatureHelpProvider {
var re = /\w*\s+\&?\$[\w_\.]+|void/g; var re = /\w*\s+\&?\$[\w_\.]+|void/g;
var match: RegExpExecArray = null; var match: RegExpExecArray = null;
while ((match = re.exec(paramsString)) !== null) { while ((match = re.exec(paramsString)) !== null) {
signatureInfo.parameters.push({ label: match[0], documentation: ''}); signatureInfo.parameters.push({ label: match[0], documentation: '' });
} }
let ret = new SignatureHelp(); let ret = new SignatureHelp();
ret.signatures.push(signatureInfo); ret.signatures.push(signatureInfo);
...@@ -101,7 +101,7 @@ export default class PHPSignatureHelpProvider implements SignatureHelpProvider { ...@@ -101,7 +101,7 @@ export default class PHPSignatureHelpProvider implements SignatureHelpProvider {
return Promise.resolve(ret); return Promise.resolve(ret);
} }
private readArguments(iterator: BackwardIterator) : number { private readArguments(iterator: BackwardIterator): number {
var parentNesting = 0; var parentNesting = 0;
var bracketNesting = 0; var bracketNesting = 0;
var curlyNesting = 0; var curlyNesting = 0;
...@@ -136,8 +136,8 @@ export default class PHPSignatureHelpProvider implements SignatureHelpProvider { ...@@ -136,8 +136,8 @@ export default class PHPSignatureHelpProvider implements SignatureHelpProvider {
return -1; return -1;
} }
private isIdentPart(ch:number) : boolean { private isIdentPart(ch: number): boolean {
if(ch === _USC || // _ if (ch === _USC || // _
ch >= _a && ch <= _z || // a-z ch >= _a && ch <= _z || // a-z
ch >= _A && ch <= _Z || // A-Z ch >= _A && ch <= _Z || // A-Z
ch >= _0 && ch <= _9 || // 0/9 ch >= _0 && ch <= _9 || // 0/9
...@@ -148,7 +148,7 @@ export default class PHPSignatureHelpProvider implements SignatureHelpProvider { ...@@ -148,7 +148,7 @@ export default class PHPSignatureHelpProvider implements SignatureHelpProvider {
return false; return false;
} }
private readIdent(iterator: BackwardIterator) : string { private readIdent(iterator: BackwardIterator): string {
var identStarted = false; var identStarted = false;
var ident = ''; var ident = '';
while (iterator.hasNext()) { while (iterator.hasNext()) {
...@@ -158,7 +158,7 @@ export default class PHPSignatureHelpProvider implements SignatureHelpProvider { ...@@ -158,7 +158,7 @@ export default class PHPSignatureHelpProvider implements SignatureHelpProvider {
} }
if (this.isIdentPart(ch)) { if (this.isIdentPart(ch)) {
identStarted = true; identStarted = true;
ident= String.fromCharCode(ch) + ident; ident = String.fromCharCode(ch) + ident;
} else if (identStarted) { } else if (identStarted) {
return ident; return ident;
} }
......
...@@ -4,8 +4,8 @@ ...@@ -4,8 +4,8 @@
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
'use strict'; 'use strict';
import {MarkedString} from 'vscode'; import { MarkedString } from 'vscode';
export function textToMarkedString(text: string) : MarkedString { export function textToMarkedString(text: string): MarkedString {
return text.replace(/[\\`*_{}[\]()#+\-.!]/g, '\\$&'); // escape markdown syntax tokens: http://daringfireball.net/projects/markdown/syntax#backslash return text.replace(/[\\`*_{}[\]()#+\-.!]/g, '\\$&'); // escape markdown syntax tokens: http://daringfireball.net/projects/markdown/syntax#backslash
} }
\ No newline at end of file
...@@ -70,7 +70,7 @@ namespace RunTrigger { ...@@ -70,7 +70,7 @@ namespace RunTrigger {
onSave: 'onSave', onSave: 'onSave',
onType: 'onType' onType: 'onType'
}; };
export let from = function(value: string): RunTrigger { export let from = function (value: string): RunTrigger {
if (value === 'onType') { if (value === 'onType') {
return RunTrigger.onType; return RunTrigger.onType;
} else { } else {
...@@ -108,7 +108,7 @@ export default class PHPValidationProvider { ...@@ -108,7 +108,7 @@ export default class PHPValidationProvider {
this.loadConfiguration(); this.loadConfiguration();
vscode.workspace.onDidOpenTextDocument(this.triggerValidate, this, subscriptions); vscode.workspace.onDidOpenTextDocument(this.triggerValidate, this, subscriptions);
vscode.workspace.onDidCloseTextDocument((textDocument)=> { vscode.workspace.onDidCloseTextDocument((textDocument) => {
this.diagnosticCollection.delete(textDocument.uri); this.diagnosticCollection.delete(textDocument.uri);
delete this.delayers[textDocument.uri.toString()]; delete this.delayers[textDocument.uri.toString()];
}, null, subscriptions); }, null, subscriptions);
...@@ -158,7 +158,7 @@ export default class PHPValidationProvider { ...@@ -158,7 +158,7 @@ export default class PHPValidationProvider {
delayer = new ThrottledDelayer<void>(this.trigger === RunTrigger.onType ? 250 : 0); delayer = new ThrottledDelayer<void>(this.trigger === RunTrigger.onType ? 250 : 0);
this.delayers[key] = delayer; this.delayers[key] = delayer;
} }
delayer.trigger(() => this.doValidate(textDocument) ); delayer.trigger(() => this.doValidate(textDocument));
} }
private doValidate(textDocument: vscode.TextDocument): Promise<void> { private doValidate(textDocument: vscode.TextDocument): Promise<void> {
......
...@@ -14,7 +14,7 @@ import { ExtensionContext, languages, env } from 'vscode'; ...@@ -14,7 +14,7 @@ import { ExtensionContext, languages, env } from 'vscode';
import * as nls from 'vscode-nls'; import * as nls from 'vscode-nls';
export function activate(context: ExtensionContext): any { export function activate(context: ExtensionContext): any {
nls.config({locale: env.language}); nls.config({ locale: env.language });
// add providers // add providers
context.subscriptions.push(languages.registerCompletionItemProvider('php', new PHPCompletionItemProvider(), '.', '$')); context.subscriptions.push(languages.registerCompletionItemProvider('php', new PHPCompletionItemProvider(), '.', '$'));
......
...@@ -5,9 +5,9 @@ ...@@ -5,9 +5,9 @@
declare function run(): void; declare function run(): void;
declare function suite(name: string, fn: (err?)=>void); declare function suite(name: string, fn: (err?) => void);
declare function test(name: string, fn: (done?: (err?)=>void)=>void); declare function test(name: string, fn: (done?: (err?) => void) => void);
declare function suiteSetup(fn: (done?: (err?)=>void)=>void); declare function suiteSetup(fn: (done?: (err?) => void) => void);
declare function suiteTeardown(fn: (done?: (err?)=>void)=>void); declare function suiteTeardown(fn: (done?: (err?) => void) => void);
declare function setup(fn: (done?: (err?)=>void)=>void); declare function setup(fn: (done?: (err?) => void) => void);
declare function teardown(fn: (done?: (err?)=>void)=>void); declare function teardown(fn: (done?: (err?) => void) => void);
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册