Browse Source

Fix errors on windows

Geequlim 8 years ago
parent
commit
692f70a998
5 changed files with 21 additions and 6 deletions
  1. 12 0
      src/config.ts
  2. 2 1
      src/docdata.ts
  3. 2 1
      src/gdscript/completion.ts
  4. 3 1
      src/gdscript/diagnostic.ts
  5. 2 3
      src/tool_manager.ts

+ 12 - 0
src/config.ts

@@ -30,6 +30,18 @@ class Config {
   getAllSymbols() {
   getAllSymbols() {
     return this.symbols;
     return this.symbols;
   }
   }
+
+  normalizePath(path) {
+    let newpath = path;
+    if( path.indexOf(":") != -1){
+      let parts = path.split(":");
+      newpath = parts[0].toUpperCase()
+      for(let i=1; i<parts.length; i++)
+        newpath += parts[i].replace(/\\/g, "/");
+    }
+    return newpath;
+  }
+
 };
 };
 
 
 export default new Config();
 export default new Config();

+ 2 - 1
src/docdata.ts

@@ -3,6 +3,7 @@ import * as fs from 'fs';
 import requestGodot from './request';
 import requestGodot from './request';
 import * as vscode from 'vscode';
 import * as vscode from 'vscode';
 import * as path from 'path';
 import * as path from 'path';
+import config from './config';
 
 
 let version: string;
 let version: string;
 let storageDir: string;
 let storageDir: string;
@@ -63,7 +64,7 @@ class DocDataManager {
               if(fs.existsSync(docfile) && fs.statSync(docfile).isFile())
               if(fs.existsSync(docfile) && fs.statSync(docfile).isFile())
                 loadDocdata(docfile);
                 loadDocdata(docfile);
               else {
               else {
-                requestGodot({action: "editor", command: "gendoc", path: docfile}).then((res:any)=>{
+                requestGodot({action: "editor", command: "gendoc", path: config.normalizePath(docfile) }).then((res:any)=>{
                   if(res && res.done)
                   if(res && res.done)
                     loadDocdata(docfile);
                     loadDocdata(docfile);
                   else
                   else

+ 2 - 1
src/gdscript/completion.ts

@@ -11,6 +11,7 @@ import {
 } from 'vscode';
 } from 'vscode';
 
 
 import requestGodot from '../request';
 import requestGodot from '../request';
+import config from '../config';
 
 
 interface CompleteRequest {
 interface CompleteRequest {
   path: string,
   path: string,
@@ -36,7 +37,7 @@ class GDScriptCompletionItemProvider implements CompletionItemProvider {
   provideCompletionItems(document : TextDocument, position : Position, token : CancellationToken) : CompletionItem[] | Thenable < CompletionItem[] > | CompletionList | Thenable < CompletionList > {
   provideCompletionItems(document : TextDocument, position : Position, token : CancellationToken) : CompletionItem[] | Thenable < CompletionItem[] > | CompletionList | Thenable < CompletionList > {
     // console.log("[GodotTools]:provideCompletionItems");
     // console.log("[GodotTools]:provideCompletionItems");
     const request: CompleteRequest = {
     const request: CompleteRequest = {
-      path: document.fileName,
+      path: config.normalizePath(document.fileName),
       text: document.getText(),
       text: document.getText(),
       cursor: {
       cursor: {
         row: position.line + 1,
         row: position.line + 1,

+ 3 - 1
src/gdscript/diagnostic.ts

@@ -1,6 +1,8 @@
 import requestGodot from "../request";
 import requestGodot from "../request";
 import * as vscode from 'vscode';
 import * as vscode from 'vscode';
 import {DiagnosticCollection, DiagnosticSeverity} from 'vscode';
 import {DiagnosticCollection, DiagnosticSeverity} from 'vscode';
+import config from '../config';
+
 interface GDParseError {
 interface GDParseError {
   message: string,
   message: string,
   column: number,
   column: number,
@@ -72,7 +74,7 @@ class GDScriptDiagnosticSeverity {
     if(doc.languageId == 'gdscript') {
     if(doc.languageId == 'gdscript') {
       // console.log('[GodotTools]:start parsing document ', doc);
       // console.log('[GodotTools]:start parsing document ', doc);
       const self = this;
       const self = this;
-      const request: ParseRequest = {text: doc.getText(), path: doc.fileName};
+      const request: ParseRequest = {text: doc.getText(), path: config.normalizePath(doc.fileName)};
       requestGodot({action: "parsescript",request}).then((data: any)=>{
       requestGodot({action: "parsescript",request}).then((data: any)=>{
             const result: GDScript = data.result;
             const result: GDScript = data.result;
             if(result && vscode.window.activeTextEditor.document == doc){
             if(result && vscode.window.activeTextEditor.document == doc){

+ 2 - 3
src/tool_manager.ts

@@ -14,10 +14,9 @@ class ToolManager {
   private workspacesymbolprovider: GDScriptWorkspaceSymbolProvider = null;
   private workspacesymbolprovider: GDScriptWorkspaceSymbolProvider = null;
 
 
   constructor(context: vscode.ExtensionContext) {
   constructor(context: vscode.ExtensionContext) {
-    this.workspaceDir = vscode.workspace.rootPath;
+    this.workspaceDir = vscode.workspace.rootPath.replace(/\\/g, "/");
     this.validate();
     this.validate();
     this.loadWorkspaceSymbols();
     this.loadWorkspaceSymbols();
-    
     this.docs = new DocDataManager(context.extensionPath);
     this.docs = new DocDataManager(context.extensionPath);
     this.symbolprovider = new GDScriptSymbolProvider();
     this.symbolprovider = new GDScriptSymbolProvider();
     vscode.languages.registerDocumentSymbolProvider('gdscript', this.symbolprovider);
     vscode.languages.registerDocumentSymbolProvider('gdscript', this.symbolprovider);
@@ -32,7 +31,7 @@ class ToolManager {
       let path = res.path;
       let path = res.path;
       if(path && path.length> 0 && path.endsWith("/"))
       if(path && path.length> 0 && path.endsWith("/"))
         path = path.substring(0, path.length-1)
         path = path.substring(0, path.length-1)
-      if( path == self.workspaceDir)
+      if( path.toLowerCase() == self.workspaceDir.toLowerCase())
         vscode.window.showInformationMessage("Connected to godot editor server");
         vscode.window.showInformationMessage("Connected to godot editor server");
       else {
       else {
         vscode.window.showWarningMessage("The opened project is not same with godot editor");
         vscode.window.showWarningMessage("The opened project is not same with godot editor");