Jelajahi Sumber

support error info for windows

ruki 7 tahun lalu
induk
melakukan
82cc464cf5
2 mengubah file dengan 53 tambahan dan 31 penghapusan
  1. 22 22
      .idea/workspace.xml
  2. 31 9
      src/org/tboox/xmake/utils/SystemUtils.kt

+ 22 - 22
.idea/workspace.xml

@@ -26,7 +26,7 @@
   </component>
   <component name="FileEditorManager">
     <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
-      <file leaf-file-name="plugin.xml" pinned="false" current-in-tab="true">
+      <file leaf-file-name="plugin.xml" pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/resources/META-INF/plugin.xml">
           <provider selected="true" editor-type-id="text-editor">
             <state relative-caret-position="195">
@@ -36,13 +36,13 @@
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="SystemUtils.kt" pinned="false" current-in-tab="false">
+      <file leaf-file-name="SystemUtils.kt" pinned="false" current-in-tab="true">
         <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/utils/SystemUtils.kt">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="1630">
-              <caret line="164" column="44" lean-forward="false" selection-start-line="164" selection-start-column="0" selection-end-line="165" selection-end-column="0" />
+            <state relative-caret-position="62">
+              <caret line="127" column="5" lean-forward="true" selection-start-line="127" selection-start-column="5" selection-end-line="127" selection-end-column="5" />
               <folding>
-                <element signature="e#31#819#0" expanded="true" />
+                <element signature="e#31#852#0" expanded="true" />
               </folding>
             </state>
           </provider>
@@ -51,7 +51,7 @@
       <file leaf-file-name="XMakeToolWindowProblemPanel.kt" pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/project/XMakeToolWindowProblemPanel.kt">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="55">
+            <state relative-caret-position="1558">
               <caret line="118" column="71" lean-forward="false" selection-start-line="118" selection-start-column="71" selection-end-line="118" selection-end-column="71" />
               <folding>
                 <element signature="e#33#1348#0" expanded="true" />
@@ -243,10 +243,10 @@
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/icons/XMakeIcons.kt" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/project/XMakeToolWindowFactory.kt" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/shared/XMakeProblem.kt" />
-        <option value="$PROJECT_DIR$/src/org/tboox/xmake/utils/SystemUtils.kt" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/utils/FileUtils.kt" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/project/XMakeToolWindowProblemPanel.kt" />
         <option value="$PROJECT_DIR$/resources/META-INF/plugin.xml" />
+        <option value="$PROJECT_DIR$/src/org/tboox/xmake/utils/SystemUtils.kt" />
       </list>
     </option>
   </component>
@@ -914,16 +914,6 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/utils/SystemUtils.kt">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="1630">
-          <caret line="164" column="44" lean-forward="false" selection-start-line="164" selection-start-column="0" selection-end-line="165" selection-end-column="0" />
-          <folding>
-            <element signature="e#31#819#0" expanded="true" />
-          </folding>
-        </state>
-      </provider>
-    </entry>
     <entry file="jar://$APPLICATION_HOME_DIR$/lib/kotlin-runtime.jar!/kotlin/kotlin.kotlin_builtins">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="-2241">
@@ -959,9 +949,17 @@
         </state>
       </provider>
     </entry>
+    <entry file="file://$PROJECT_DIR$/resources/META-INF/plugin.xml">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="195">
+          <caret line="13" column="12" lean-forward="true" selection-start-line="13" selection-start-column="12" selection-end-line="13" selection-end-column="12" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
     <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/project/XMakeToolWindowProblemPanel.kt">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="55">
+        <state relative-caret-position="1558">
           <caret line="118" column="71" lean-forward="false" selection-start-line="118" selection-start-column="71" selection-end-line="118" selection-end-column="71" />
           <folding>
             <element signature="e#33#1348#0" expanded="true" />
@@ -969,11 +967,13 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/resources/META-INF/plugin.xml">
+    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/utils/SystemUtils.kt">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="195">
-          <caret line="13" column="12" lean-forward="true" selection-start-line="13" selection-start-column="12" selection-end-line="13" selection-end-column="12" />
-          <folding />
+        <state relative-caret-position="62">
+          <caret line="127" column="5" lean-forward="true" selection-start-line="127" selection-start-column="5" selection-end-line="127" selection-end-column="5" />
+          <folding>
+            <element signature="e#31#852#0" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>

+ 31 - 9
src/org/tboox/xmake/utils/SystemUtils.kt

@@ -19,6 +19,8 @@ import java.io.InputStreamReader
 import java.io.File
 import java.util.regex.Pattern
 
+import java.nio.charset.Charset
+
 object SystemUtils {
 
     // the log
@@ -128,15 +130,35 @@ object SystemUtils {
     // parse problems for the given line
     private fun parseProblem(info: String): XMakeProblem? {
 
-        val pattern = Pattern.compile("^(error: )?(.*?):([0-9]*):([0-9]*): (.*?): (.*)\$")
-        val matcher = pattern.matcher(info)
-        if (matcher.find()) {
-            val file    = matcher.group(2)
-            val line    = matcher.group(3)
-            val column  = matcher.group(4)
-            val kind    = matcher.group(5)
-            val message = matcher.group(6)
-            return XMakeProblem(file, line, column, kind, message)
+        if (SystemInfo.isWindows) {
+
+            // gbk => utf8
+            val info_utf8 = String(info.toByteArray(), charset("UTF-8"))
+
+            // parse problem info
+            val pattern = Pattern.compile("(.*?)\\(([0-9]*)\\): (.*?) .*?: (.*)")
+            val matcher = pattern.matcher(info_utf8)
+            if (matcher.find()) {
+                val file = matcher.group(1)
+                val line = matcher.group(2)
+                val kind = matcher.group(3)
+                val message = matcher.group(4)
+                return XMakeProblem(file, line, "0", kind, message)
+            }
+
+        } else {
+
+            // parse problem info
+            val pattern = Pattern.compile("^(error: )?(.*?):([0-9]*):([0-9]*): (.*?): (.*)\$")
+            val matcher = pattern.matcher(info)
+            if (matcher.find()) {
+                val file = matcher.group(2)
+                val line = matcher.group(3)
+                val column = matcher.group(4)
+                val kind = matcher.group(5)
+                val message = matcher.group(6)
+                return XMakeProblem(file, line, column, kind, message)
+            }
         }
         return null
     }