ruki 7 лет назад
Родитель
Сommit
9302cf6492

+ 73 - 78
.idea/workspace.xml

@@ -41,15 +41,25 @@
       <file leaf-file-name="SystemUtils.kt" pinned="false" current-in-tab="false">
       <file leaf-file-name="SystemUtils.kt" pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/utils/SystemUtils.kt">
         <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/utils/SystemUtils.kt">
           <provider selected="true" editor-type-id="text-editor">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="172">
-              <caret line="149" column="43" lean-forward="false" selection-start-line="149" selection-start-column="0" selection-end-line="150" selection-end-column="0" />
+            <state relative-caret-position="187">
+              <caret line="137" column="24" lean-forward="false" selection-start-line="137" selection-start-column="24" selection-end-line="137" selection-end-column="24" />
               <folding>
               <folding>
-                <element signature="e#31#836#0" expanded="true" />
+                <element signature="e#31#819#0" expanded="true" />
               </folding>
               </folding>
             </state>
             </state>
           </provider>
           </provider>
         </entry>
         </entry>
       </file>
       </file>
+      <file leaf-file-name="XMakeProblem.kt" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/shared/XMakeProblem.kt">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="30">
+              <caret line="2" column="124" lean-forward="false" selection-start-line="2" selection-start-column="119" selection-end-line="2" selection-end-column="124" />
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
       <file leaf-file-name="ApplicationManager.class" pinned="false" current-in-tab="false">
       <file leaf-file-name="ApplicationManager.class" pinned="false" current-in-tab="false">
         <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/openapi/application/ApplicationManager.class">
         <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/openapi/application/ApplicationManager.class">
           <provider selected="true" editor-type-id="text-editor">
           <provider selected="true" editor-type-id="text-editor">
@@ -73,10 +83,22 @@
       <file leaf-file-name="XMakeToolWindowProblemPanel.kt" pinned="false" current-in-tab="true">
       <file leaf-file-name="XMakeToolWindowProblemPanel.kt" pinned="false" current-in-tab="true">
         <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/project/XMakeToolWindowProblemPanel.kt">
         <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/project/XMakeToolWindowProblemPanel.kt">
           <provider selected="true" editor-type-id="text-editor">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="172">
-              <caret line="49" column="45" lean-forward="false" selection-start-line="49" selection-start-column="45" selection-end-line="49" selection-end-column="45" />
+            <state relative-caret-position="291">
+              <caret line="57" column="34" lean-forward="false" selection-start-line="57" selection-start-column="34" selection-end-line="57" selection-end-column="34" />
+              <folding>
+                <element signature="e#33#875#0" expanded="true" />
+              </folding>
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="XMakeToolWindowFactory.kt" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/project/XMakeToolWindowFactory.kt">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="515">
+              <caret line="45" column="47" lean-forward="false" selection-start-line="45" selection-start-column="47" selection-end-line="45" selection-end-column="47" />
               <folding>
               <folding>
-                <element signature="e#33#832#0" expanded="true" />
+                <element signature="e#33#350#0" expanded="true" />
               </folding>
               </folding>
             </state>
             </state>
           </provider>
           </provider>
@@ -102,28 +124,6 @@
           </provider>
           </provider>
         </entry>
         </entry>
       </file>
       </file>
-      <file leaf-file-name="ProcessEvent.class" pinned="false" current-in-tab="false">
-        <entry file="jar://$APPLICATION_HOME_DIR$/lib/util.jar!/com/intellij/execution/process/ProcessEvent.class">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="45">
-              <caret line="9" column="38" lean-forward="false" selection-start-line="9" selection-start-column="38" selection-end-line="9" selection-end-column="38" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="ConsoleProcessHandler.kt" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/utils/ConsoleProcessHandler.kt">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="448">
-              <caret line="32" column="0" lean-forward="false" selection-start-line="32" selection-start-column="0" selection-end-line="32" selection-end-column="0" />
-              <folding>
-                <element signature="e#31#379#0" expanded="true" />
-              </folding>
-            </state>
-          </provider>
-        </entry>
-      </file>
       <file leaf-file-name="XMakeProjectTasksRunner.kt" pinned="false" current-in-tab="false">
       <file leaf-file-name="XMakeProjectTasksRunner.kt" pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeProjectTasksRunner.kt">
         <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeProjectTasksRunner.kt">
           <provider selected="true" editor-type-id="text-editor">
           <provider selected="true" editor-type-id="text-editor">
@@ -197,7 +197,6 @@
   <component name="IdeDocumentHistory">
   <component name="IdeDocumentHistory">
     <option name="CHANGED_PATHS">
     <option name="CHANGED_PATHS">
       <list>
       <list>
-        <option value="$PROJECT_DIR$/xmake-service/src/org/tboox/xmake/service/build/XMakeBuilder.java" />
         <option value="$PROJECT_DIR$/xmake-shared/xmake-shared.iml" />
         <option value="$PROJECT_DIR$/xmake-shared/xmake-shared.iml" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/build/XMakeBuildTargetScopeProvider.java" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/build/XMakeBuildTargetScopeProvider.java" />
         <option value="$PROJECT_DIR$/xmake-service/xmake-service.iml" />
         <option value="$PROJECT_DIR$/xmake-service/xmake-service.iml" />
@@ -239,14 +238,15 @@
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeRunState.kt" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeRunState.kt" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/shared/XMakeConfiguration.kt" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/shared/XMakeConfiguration.kt" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/project/XMakeProjectConfigurable.kt" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/project/XMakeProjectConfigurable.kt" />
-        <option value="$PROJECT_DIR$/src/org/tboox/xmake/project/XMakeToolWindowFactory.kt" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/actions/BuildAction.kt" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/actions/BuildAction.kt" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/actions/RebuildAction.kt" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/actions/RebuildAction.kt" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeProjectTasksRunner.kt" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeProjectTasksRunner.kt" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeRunConfiguration.kt" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeRunConfiguration.kt" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/utils/ConsoleProcessHandler.kt" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/utils/ConsoleProcessHandler.kt" />
-        <option value="$PROJECT_DIR$/src/org/tboox/xmake/utils/SystemUtils.kt" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/icons/XMakeIcons.kt" />
         <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/project/XMakeToolWindowProblemPanel.kt" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/project/XMakeToolWindowProblemPanel.kt" />
       </list>
       </list>
     </option>
     </option>
@@ -519,7 +519,7 @@
       <window_info id="Capture Analysis" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
       <window_info id="Capture Analysis" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
       <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32907802" sideWeight="0.515674" order="7" side_tool="true" content_ui="tabs" />
       <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32907802" sideWeight="0.515674" order="7" side_tool="true" content_ui="tabs" />
       <window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
       <window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
-      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.32907802" sideWeight="0.484326" order="2" side_tool="false" content_ui="tabs" />
+      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32907802" sideWeight="0.484326" order="2" side_tool="false" content_ui="tabs" />
       <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
       <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
       <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
       <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
       <window_info id="Capture Tool" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
       <window_info id="Capture Tool" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
@@ -548,26 +548,11 @@
   </component>
   </component>
   <component name="XDebuggerManager">
   <component name="XDebuggerManager">
     <breakpoint-manager>
     <breakpoint-manager>
-      <breakpoints>
-        <line-breakpoint enabled="true" type="kotlin-line">
-          <url>file://$PROJECT_DIR$/src/org/tboox/xmake/utils/SystemUtils.kt</url>
-          <line>147</line>
-          <properties />
-          <option name="timeStamp" value="6" />
-        </line-breakpoint>
-      </breakpoints>
       <option name="time" value="7" />
       <option name="time" value="7" />
     </breakpoint-manager>
     </breakpoint-manager>
     <watches-manager />
     <watches-manager />
   </component>
   </component>
   <component name="editorHistoryManager">
   <component name="editorHistoryManager">
-    <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/ui/components/JBComboBoxLabel.class">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="150">
-          <caret line="20" column="11" lean-forward="false" selection-start-line="20" selection-start-column="11" selection-end-line="20" selection-end-column="11" />
-        </state>
-      </provider>
-    </entry>
     <entry file="jar://$APPLICATION_HOME_DIR$/lib/util.jar!/com/intellij/util/ui/UIUtil.class">
     <entry file="jar://$APPLICATION_HOME_DIR$/lib/util.jar!/com/intellij/util/ui/UIUtil.class">
       <provider selected="true" editor-type-id="text-editor">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="196">
         <state relative-caret-position="196">
@@ -761,14 +746,6 @@
         </state>
         </state>
       </provider>
       </provider>
     </entry>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/project/XMakeToolWindowFactory.kt">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="306">
-          <caret line="44" column="34" lean-forward="false" selection-start-line="44" selection-start-column="30" selection-end-line="44" selection-end-column="34" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/actions/CleanAction.kt">
     <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/actions/CleanAction.kt">
       <provider selected="true" editor-type-id="text-editor">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="133">
         <state relative-caret-position="133">
@@ -873,16 +850,6 @@
         </state>
         </state>
       </provider>
       </provider>
     </entry>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/actions/BuildAction.kt">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="495">
-          <caret line="33" column="1" lean-forward="false" selection-start-line="33" selection-start-column="1" selection-end-line="33" selection-end-column="1" />
-          <folding>
-            <element signature="e#33#379#0" expanded="true" />
-          </folding>
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/utils/ConsoleProcessHandler.kt">
     <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/utils/ConsoleProcessHandler.kt">
       <provider selected="true" editor-type-id="text-editor">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="448">
         <state relative-caret-position="448">
@@ -919,16 +886,6 @@
         </state>
         </state>
       </provider>
       </provider>
     </entry>
     </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="172">
-          <caret line="149" column="43" lean-forward="false" selection-start-line="149" selection-start-column="0" selection-end-line="150" selection-end-column="0" />
-          <folding>
-            <element signature="e#31#836#0" expanded="true" />
-          </folding>
-        </state>
-      </provider>
-    </entry>
     <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/ui/components/JBList.class">
     <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/ui/components/JBList.class">
       <provider selected="true" editor-type-id="text-editor">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="124">
         <state relative-caret-position="124">
@@ -945,12 +902,50 @@
         </state>
         </state>
       </provider>
       </provider>
     </entry>
     </entry>
+    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/actions/BuildAction.kt">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="495">
+          <caret line="33" column="1" lean-forward="false" selection-start-line="33" selection-start-column="1" selection-end-line="33" selection-end-column="1" />
+          <folding>
+            <element signature="e#33#379#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/project/XMakeToolWindowFactory.kt">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="515">
+          <caret line="45" column="47" lean-forward="false" selection-start-line="45" selection-start-column="47" selection-end-line="45" selection-end-column="47" />
+          <folding>
+            <element signature="e#33#350#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/shared/XMakeProblem.kt">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="30">
+          <caret line="2" column="124" lean-forward="false" selection-start-line="2" selection-start-column="119" selection-end-line="2" selection-end-column="124" />
+          <folding />
+        </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="187">
+          <caret line="137" column="24" lean-forward="false" selection-start-line="137" selection-start-column="24" selection-end-line="137" selection-end-column="24" />
+          <folding>
+            <element signature="e#31#819#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
     <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/project/XMakeToolWindowProblemPanel.kt">
     <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/project/XMakeToolWindowProblemPanel.kt">
       <provider selected="true" editor-type-id="text-editor">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="172">
-          <caret line="49" column="45" lean-forward="false" selection-start-line="49" selection-start-column="45" selection-end-line="49" selection-end-column="45" />
+        <state relative-caret-position="291">
+          <caret line="57" column="34" lean-forward="false" selection-start-line="57" selection-start-column="34" selection-end-line="57" selection-end-column="34" />
           <folding>
           <folding>
-            <element signature="e#33#832#0" expanded="true" />
+            <element signature="e#33#875#0" expanded="true" />
           </folding>
           </folding>
         </state>
         </state>
       </provider>
       </provider>

+ 2 - 1
src/org/tboox/xmake/project/XMakeToolWindowFactory.kt

@@ -6,6 +6,7 @@ import com.intellij.openapi.wm.ToolWindow
 import com.intellij.openapi.wm.ToolWindowFactory
 import com.intellij.openapi.wm.ToolWindowFactory
 import com.intellij.openapi.wm.ToolWindowManager
 import com.intellij.openapi.wm.ToolWindowManager
 import com.intellij.ui.content.ContentFactory
 import com.intellij.ui.content.ContentFactory
+import org.tboox.xmake.shared.XMakeProblem
 
 
 class XMakeToolWindowFactory : ToolWindowFactory {
 class XMakeToolWindowFactory : ToolWindowFactory {
     override fun createToolWindowContent(project: Project, toolWindow: ToolWindow) {
     override fun createToolWindowContent(project: Project, toolWindow: ToolWindow) {
@@ -42,7 +43,7 @@ val Project.xmakeConsoleView: ConsoleView
     get() = this.xmakeOutputPanel.consoleView
     get() = this.xmakeOutputPanel.consoleView
 
 
 // the xmake problem list
 // the xmake problem list
-var Project.xmakeProblemList: List<String>
+var Project.xmakeProblemList: List<XMakeProblem>
     get() = this.xmakeProblemPanel.problems
     get() = this.xmakeProblemPanel.problems
     set(value) {
     set(value) {
         this.xmakeProblemPanel.problems = value
         this.xmakeProblemPanel.problems = value

+ 26 - 10
src/org/tboox/xmake/project/XMakeToolWindowProblemPanel.kt

@@ -14,6 +14,7 @@ import com.intellij.ui.components.JBList
 import com.intellij.ui.layout.CCFlags
 import com.intellij.ui.layout.CCFlags
 import com.intellij.ui.layout.panel
 import com.intellij.ui.layout.panel
 import org.tboox.xmake.icons.XMakeIcons
 import org.tboox.xmake.icons.XMakeIcons
+import org.tboox.xmake.shared.XMakeProblem
 import javax.swing.JEditorPane
 import javax.swing.JEditorPane
 import javax.swing.JScrollPane
 import javax.swing.JScrollPane
 import javax.swing.JList
 import javax.swing.JList
@@ -23,8 +24,8 @@ import javax.swing.ListSelectionModel
 class XMakeToolWindowProblemPanel(project: Project) : SimpleToolWindowPanel(false) {
 class XMakeToolWindowProblemPanel(project: Project) : SimpleToolWindowPanel(false) {
 
 
     // the problems
     // the problems
-    private var _problems: List<String> = emptyList()
-    var problems: List<String>
+    private var _problems: List<XMakeProblem> = emptyList()
+    var problems: List<XMakeProblem>
         get() = _problems
         get() = _problems
         set(value) {
         set(value) {
             check(ApplicationManager.getApplication().isDispatchThread)
             check(ApplicationManager.getApplication().isDispatchThread)
@@ -39,20 +40,35 @@ class XMakeToolWindowProblemPanel(project: Project) : SimpleToolWindowPanel(fals
     }
     }
 
 
     // the problem list
     // the problem list
-    private val problemList = JBList<String>(emptyList()).apply {
+    private val problemList = JBList<XMakeProblem>(emptyList()).apply {
         emptyText.text = "There are no compiling problems to display."
         emptyText.text = "There are no compiling problems to display."
         selectionMode = ListSelectionModel.SINGLE_SELECTION
         selectionMode = ListSelectionModel.SINGLE_SELECTION
-        cellRenderer = object : ColoredListCellRenderer<String>() {
-            override fun customizeCellRenderer(list: JList<out String>, value: String, index: Int, selected: Boolean, hasFocus: Boolean) {
-                if (index > 2) {
+        cellRenderer = object : ColoredListCellRenderer<XMakeProblem>() {
+            override fun customizeCellRenderer(list: JList<out XMakeProblem>, value: XMakeProblem, index: Int, selected: Boolean, hasFocus: Boolean) {
+
+                // get file path
+                var file = value.file
+                if (file === null) {
+                    return
+                }
+
+                // init icon
+                var attrs = SimpleTextAttributes.REGULAR_ATTRIBUTES
+                if (value.kind == "warning") {
+                    icon = XMakeIcons.WARNING
+                    attrs = attrs.derive(SimpleTextAttributes.STYLE_WAVED, null, null, JBColor.GRAY)
+                } else if (value.kind == "error") {
                     icon = XMakeIcons.ERROR
                     icon = XMakeIcons.ERROR
+                    attrs = attrs.derive(SimpleTextAttributes.STYLE_WAVED, null, null, JBColor.RED)
                 } else {
                 } else {
                     icon = XMakeIcons.WARNING
                     icon = XMakeIcons.WARNING
                 }
                 }
-                var attrs = SimpleTextAttributes.REGULAR_ATTRIBUTES
-                //attrs = attrs.derive(SimpleTextAttributes.STYLE_WAVED, null, null, JBColor.RED)
-//                toolTipText = "xxxx is up-to-date"
-                append(value, attrs)
+
+                // init tips
+                toolTipText = value.message ?: ""
+
+                // append text
+                append("${file}(${value.line?:"0"}): ${value.message?:""}", attrs)
             }
             }
         }
         }
     }
     }

+ 4 - 0
src/org/tboox/xmake/shared/XMakeProblem.kt

@@ -0,0 +1,4 @@
+package org.tboox.xmake.shared
+
+class XMakeProblem (val file: String? = null, val line: String? = "0", val column: String? = "0", val kind: String? = "error", val message: String? = "") {
+}

+ 27 - 5
src/org/tboox/xmake/utils/SystemUtils.kt

@@ -4,20 +4,20 @@ import com.intellij.execution.configurations.GeneralCommandLine
 import com.intellij.execution.process.ProcessAdapter
 import com.intellij.execution.process.ProcessAdapter
 import com.intellij.execution.process.ProcessEvent
 import com.intellij.execution.process.ProcessEvent
 import com.intellij.execution.process.ProcessHandler
 import com.intellij.execution.process.ProcessHandler
-import com.intellij.execution.process.ProcessListener
 import com.intellij.openapi.application.ApplicationManager
 import com.intellij.openapi.application.ApplicationManager
 import com.intellij.openapi.util.SystemInfo
 import com.intellij.openapi.util.SystemInfo
 import com.intellij.openapi.diagnostic.Logger
 import com.intellij.openapi.diagnostic.Logger
 import com.intellij.openapi.project.Project
 import com.intellij.openapi.project.Project
-import com.intellij.openapi.util.Key
 import org.tboox.xmake.project.xmakeConsoleView
 import org.tboox.xmake.project.xmakeConsoleView
 import org.tboox.xmake.project.xmakeOutputPanel
 import org.tboox.xmake.project.xmakeOutputPanel
 import org.tboox.xmake.project.xmakeProblemList
 import org.tboox.xmake.project.xmakeProblemList
 import org.tboox.xmake.project.xmakeToolWindow
 import org.tboox.xmake.project.xmakeToolWindow
+import org.tboox.xmake.shared.XMakeProblem
 import java.io.BufferedReader
 import java.io.BufferedReader
 import java.io.IOException
 import java.io.IOException
 import java.io.InputStreamReader
 import java.io.InputStreamReader
 import java.io.File
 import java.io.File
+import java.util.regex.Pattern
 
 
 object SystemUtils {
 object SystemUtils {
 
 
@@ -125,6 +125,22 @@ object SystemUtils {
         return result
         return result
     }
     }
 
 
+    // 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)
+        }
+        return null
+    }
+
     // run process in console
     // run process in console
     fun runvInConsole(project: Project, commandLine: GeneralCommandLine, showConsole: Boolean = true, showProblem: Boolean = false): ProcessHandler {
     fun runvInConsole(project: Project, commandLine: GeneralCommandLine, showConsole: Boolean = true, showProblem: Boolean = false): ProcessHandler {
 
 
@@ -145,10 +161,16 @@ object SystemUtils {
             handler.addProcessListener(object : ProcessAdapter() {
             handler.addProcessListener(object : ProcessAdapter() {
 
 
                 override fun processTerminated(e: ProcessEvent) {
                 override fun processTerminated(e: ProcessEvent) {
-                    Log.info("processTerminated")
-                    val s = handler.outputContent
+                    val content = handler.outputContent
                     ApplicationManager.getApplication().invokeLater {
                     ApplicationManager.getApplication().invokeLater {
-                        project.xmakeProblemList = s.split('\n')
+                        val problems = mutableListOf<XMakeProblem>()
+                        content.split('\n').forEach {
+                            val problem = parseProblem(it.trim())
+                            if (problem !== null) {
+                                problems.add(problem)
+                            }
+                        }
+                        project.xmakeProblemList = problems
                     }
                     }
                 }
                 }
             })
             })