2
0
Эх сурвалжийг харах

impl goto error file and improve icons

ruki 7 жил өмнө
parent
commit
95fa176106

+ 82 - 73
.idea/workspace.xml

@@ -41,15 +41,48 @@
       <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="1680">
-              <caret line="112" column="40" lean-forward="false" selection-start-line="112" selection-start-column="40" selection-end-line="112" selection-end-column="40" />
+            <state relative-caret-position="55">
+              <caret line="118" column="71" lean-forward="true" selection-start-line="118" selection-start-column="71" selection-end-line="118" selection-end-column="71" />
               <folding>
               <folding>
-                <element signature="e#33#1118#0" expanded="true" />
+                <element signature="e#33#1348#0" expanded="true" />
               </folding>
               </folding>
             </state>
             </state>
           </provider>
           </provider>
         </entry>
         </entry>
       </file>
       </file>
+      <file leaf-file-name="TextAttributes.class" pinned="false" current-in-tab="false">
+        <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/openapi/editor/markup/TextAttributes.class">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="205">
+              <caret line="60" column="11" lean-forward="false" selection-start-line="60" selection-start-column="11" selection-end-line="60" selection-end-column="11" />
+              <folding>
+                <element signature="e#1892#1893#0" expanded="true" />
+                <element signature="e#1942#1943#0" expanded="true" />
+              </folding>
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="MarkupModel.class" pinned="false" current-in-tab="false">
+        <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/openapi/editor/markup/MarkupModel.class">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="210">
+              <caret line="20" column="21" lean-forward="false" selection-start-line="20" selection-start-column="21" selection-end-line="20" selection-end-column="21" />
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="kotlin.kotlin_builtins" pinned="false" current-in-tab="false">
+        <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">
+              <caret line="567" column="74" lean-forward="false" selection-start-line="567" selection-start-column="72" selection-end-line="567" selection-end-column="74" />
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
       <file leaf-file-name="ConsoleProcessHandler.kt" pinned="false" current-in-tab="false">
       <file leaf-file-name="ConsoleProcessHandler.kt" pinned="false" current-in-tab="false">
         <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">
@@ -95,38 +128,8 @@
       <file leaf-file-name="OpenFileDescriptor.class" pinned="false" current-in-tab="false">
       <file leaf-file-name="OpenFileDescriptor.class" pinned="false" current-in-tab="false">
         <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/openapi/fileEditor/OpenFileDescriptor.class">
         <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/openapi/fileEditor/OpenFileDescriptor.class">
           <provider selected="true" editor-type-id="text-editor">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="157">
-              <caret line="46" column="29" lean-forward="false" selection-start-line="46" selection-start-column="11" selection-end-line="46" selection-end-column="29" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="PsiFile.class" pinned="false" current-in-tab="false">
-        <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/psi/PsiFile.class">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="133">
-              <caret line="15" column="10" lean-forward="true" selection-start-line="15" selection-start-column="10" selection-end-line="15" selection-end-column="10" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="VirtualFile.class" pinned="false" current-in-tab="false">
-        <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/openapi/vfs/VirtualFile.class">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="-3594">
-              <caret line="26" column="22" lean-forward="false" selection-start-line="26" selection-start-column="22" selection-end-line="26" selection-end-column="22" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="XMakeProjectTasksRunner.kt" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeProjectTasksRunner.kt">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="165">
-              <caret line="11" column="25" lean-forward="true" selection-start-line="11" selection-start-column="0" selection-end-line="12" selection-end-column="0" />
+            <state relative-caret-position="124">
+              <caret line="207" column="18" lean-forward="false" selection-start-line="207" selection-start-column="8" selection-end-line="207" selection-end-column="18" />
               <folding />
               <folding />
             </state>
             </state>
           </provider>
           </provider>
@@ -146,11 +149,6 @@
   </component>
   </component>
   <component name="FindInProjectRecents">
   <component name="FindInProjectRecents">
     <findStrings>
     <findStrings>
-      <find>XMakeProjectConfiguration</find>
-      <find>border</find>
-      <find>editorpane</find>
-      <find>Border</find>
-      <find>projectConfiguration</find>
       <find>workingDirectory</find>
       <find>workingDirectory</find>
       <find>ConsoleViewContentType</find>
       <find>ConsoleViewContentType</find>
       <find>output</find>
       <find>output</find>
@@ -176,6 +174,11 @@
       <find>getAllAvailablePathsForMob</find>
       <find>getAllAvailablePathsForMob</find>
       <find>extensions</find>
       <find>extensions</find>
       <find>findFileByPath</find>
       <find>findFileByPath</find>
+      <find>pa</find>
+      <find>line</find>
+      <find>select</find>
+      <find>fold</find>
+      <find>FoldRegion</find>
     </findStrings>
     </findStrings>
     <replaceStrings>
     <replaceStrings>
       <replace>XMakeProjectConfiguration</replace>
       <replace>XMakeProjectConfiguration</replace>
@@ -515,7 +518,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="false" 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="true" 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" />
@@ -549,27 +552,6 @@
     <watches-manager />
     <watches-manager />
   </component>
   </component>
   <component name="editorHistoryManager">
   <component name="editorHistoryManager">
-    <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/ui/content/ContentManager.class">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="150">
-          <caret line="35" column="9" lean-forward="false" selection-start-line="35" selection-start-column="9" selection-end-line="35" selection-end-column="9" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/openapi/wm/ToolWindowManager.class">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="307">
-          <caret line="76" column="31" lean-forward="false" selection-start-line="76" selection-start-column="31" selection-end-line="76" selection-end-column="31" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/openapi/wm/ToolWindow.class">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="150">
-          <caret line="13" column="24" lean-forward="true" selection-start-line="13" selection-start-column="24" selection-end-line="13" selection-end-column="24" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/utils/ExternalToolRunner.java" />
     <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/utils/ExternalToolRunner.java" />
     <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/utils/TerminalExecutionConsole.java" />
     <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/utils/TerminalExecutionConsole.java" />
     <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/execution/ui/ConsoleViewContentType.class">
     <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/execution/ui/ConsoleViewContentType.class">
@@ -866,14 +848,6 @@
         </state>
         </state>
       </provider>
       </provider>
     </entry>
     </entry>
-    <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/openapi/fileEditor/OpenFileDescriptor.class">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="157">
-          <caret line="46" column="29" lean-forward="false" selection-start-line="46" selection-start-column="11" selection-end-line="46" selection-end-column="29" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
     <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/psi/PsiFile.class">
     <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/psi/PsiFile.class">
       <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">
@@ -958,12 +932,47 @@
         </state>
         </state>
       </provider>
       </provider>
     </entry>
     </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">
+          <caret line="567" column="74" lean-forward="false" selection-start-line="567" selection-start-column="72" selection-end-line="567" selection-end-column="74" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/openapi/fileEditor/OpenFileDescriptor.class">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="124">
+          <caret line="207" column="18" lean-forward="false" selection-start-line="207" selection-start-column="8" selection-end-line="207" selection-end-column="18" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/openapi/editor/markup/MarkupModel.class">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="210">
+          <caret line="20" column="21" lean-forward="false" selection-start-line="20" selection-start-column="21" selection-end-line="20" selection-end-column="21" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/openapi/editor/markup/TextAttributes.class">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="205">
+          <caret line="60" column="11" lean-forward="false" selection-start-line="60" selection-start-column="11" selection-end-line="60" selection-end-column="11" />
+          <folding>
+            <element signature="e#1892#1893#0" expanded="true" />
+            <element signature="e#1942#1943#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="1680">
-          <caret line="112" column="40" lean-forward="false" selection-start-line="112" selection-start-column="40" selection-end-line="112" selection-end-column="40" />
+        <state relative-caret-position="55">
+          <caret line="118" column="71" lean-forward="true" selection-start-line="118" selection-start-column="71" selection-end-line="118" selection-end-column="71" />
           <folding>
           <folding>
-            <element signature="e#33#1118#0" expanded="true" />
+            <element signature="e#33#1348#0" expanded="true" />
           </folding>
           </folding>
         </state>
         </state>
       </provider>
       </provider>

BIN
resources/icons/build.png



BIN
resources/icons/build@2x_dark.png


BIN
resources/icons/build_dark.png


BIN
resources/icons/rebuild.png



BIN
resources/icons/rebuild@2x_dark.png


BIN
resources/icons/rebuild_dark.png


+ 38 - 9
src/org/tboox/xmake/project/XMakeToolWindowProblemPanel.kt

@@ -15,6 +15,7 @@ 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 org.tboox.xmake.shared.XMakeProblem
+import java.awt.Font
 import java.awt.event.MouseEvent
 import java.awt.event.MouseEvent
 import java.awt.event.MouseAdapter
 import java.awt.event.MouseAdapter
 import javax.swing.JEditorPane
 import javax.swing.JEditorPane
@@ -26,6 +27,10 @@ import javax.swing.ListSelectionModel
 import com.intellij.openapi.fileEditor.OpenFileDescriptor
 import com.intellij.openapi.fileEditor.OpenFileDescriptor
 import com.intellij.openapi.vfs.LocalFileSystem
 import com.intellij.openapi.vfs.LocalFileSystem
 import org.tboox.xmake.shared.xmakeConfiguration
 import org.tboox.xmake.shared.xmakeConfiguration
+import com.intellij.openapi.fileEditor.FileEditorManager
+import com.intellij.openapi.editor.Editor
+import com.intellij.openapi.editor.markup.EffectType
+import com.intellij.openapi.editor.markup.TextAttributes
 
 
 
 
 class XMakeToolWindowProblemPanel(project: Project) : SimpleToolWindowPanel(false) {
 class XMakeToolWindowProblemPanel(project: Project) : SimpleToolWindowPanel(false) {
@@ -60,13 +65,10 @@ class XMakeToolWindowProblemPanel(project: Project) : SimpleToolWindowPanel(fals
                 }
                 }
 
 
                 // init icon
                 // init icon
-                var attrs = SimpleTextAttributes.REGULAR_ATTRIBUTES
                 if (value.kind == "warning") {
                 if (value.kind == "warning") {
                     icon = XMakeIcons.WARNING
                     icon = XMakeIcons.WARNING
-                    attrs = attrs.derive(SimpleTextAttributes.STYLE_WAVED, null, null, JBColor.GRAY)
                 } else if (value.kind == "error") {
                 } 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
                 }
                 }
@@ -75,7 +77,7 @@ class XMakeToolWindowProblemPanel(project: Project) : SimpleToolWindowPanel(fals
                 toolTipText = value.message ?: ""
                 toolTipText = value.message ?: ""
 
 
                 // append text
                 // append text
-                append("${file}(${value.line ?: "0"}): ${value.message ?: ""}", attrs)
+                append("${file}(${value.line ?: "0"}): ${value.message ?: ""}", SimpleTextAttributes.REGULAR_ATTRIBUTES)
             }
             }
         }
         }
     }
     }
@@ -104,14 +106,15 @@ class XMakeToolWindowProblemPanel(project: Project) : SimpleToolWindowPanel(fals
         // init double click listener
         // init double click listener
         problemList.addMouseListener(object: MouseAdapter() {
         problemList.addMouseListener(object: MouseAdapter() {
             override fun mouseClicked(e: MouseEvent) {
             override fun mouseClicked(e: MouseEvent) {
-                if (e.getClickCount() == 2) {
+                if (e.getClickCount() == 1 || e.getClickCount() == 2) {
 
 
                     // get the clicked problem
                     // get the clicked problem
-                    val index = problemList.locationToIndex(e.getPoint())
+                    val index   = problemList.locationToIndex(e.getPoint())
                     if (index < problems.size && problems[index].file !== null) {
                     if (index < problems.size && problems[index].file !== null) {
 
 
                         // get file path
                         // get file path
-                        var filename = problems[index].file
+                        val problem     = problems[index]
+                        var filename    = problem.file
                         if (File(filename).exists()) {
                         if (File(filename).exists()) {
                             filename = File(filename).getAbsolutePath()
                             filename = File(filename).getAbsolutePath()
                         } else {
                         } else {
@@ -120,10 +123,36 @@ class XMakeToolWindowProblemPanel(project: Project) : SimpleToolWindowPanel(fals
 
 
                         // open this file
                         // open this file
                         val file = LocalFileSystem.getInstance().findFileByPath(filename)
                         val file = LocalFileSystem.getInstance().findFileByPath(filename)
-                        Log.info(file.toString())
                         if (file !== null) {
                         if (file !== null) {
-                            val descriptor = OpenFileDescriptor(project, file)
+
+                            // goto file:line
+                            val descriptor = OpenFileDescriptor(project, file, problem.line?.toInt() ?: 0, problem.column?.toInt() ?: 0)
                             descriptor.navigate(true)
                             descriptor.navigate(true)
+
+                            // highlight line
+                            val editor = FileEditorManager.getInstance(project).selectedTextEditor
+                            if (editor !== null) {
+
+                                if (e.getClickCount() == 2 && editor.markupModel.allHighlighters.size > 0) {
+                                    editor.markupModel.removeAllHighlighters()
+                                    return
+                                }
+
+                                // get line offset
+                                var line = problem.line?.toInt() ?: 0
+                                if (line > 0) line -= 1
+
+                                // init box color
+                                var boxcolor = JBColor.GRAY
+                                if (problem.kind == "warning") {
+                                    boxcolor = JBColor.YELLOW
+                                } else if (problem.kind == "error") {
+                                    boxcolor = JBColor.RED
+                                }
+
+                                // draw box
+                                editor.markupModel.addLineHighlighter(line, -1, TextAttributes(null, null, boxcolor, EffectType.BOXED, Font.PLAIN))
+                            }
                         }
                         }
                     }
                     }
                 }
                 }