Skip to content

Commit 4f8986b

Browse files
committed
refactor: SourceFileMarker.getOrCreate/getIfExists
1 parent ca0fb21 commit 4f8986b

File tree

6 files changed

+27
-44
lines changed

6 files changed

+27
-44
lines changed

marker/src/main/kotlin/spp/jetbrains/marker/SourceMarker.kt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,6 @@ class SourceMarker(private val project: Project) {
6262
fun getSourceFileMarker(psiFile: PsiFile): SourceFileMarker? {
6363
return getInstance(psiFile.project).getSourceFileMarker(psiFile)
6464
}
65-
66-
fun getSourceFileMarkerIfExists(psiFile: PsiFile): SourceFileMarker? {
67-
return getInstance(psiFile.project).getSourceFileMarkerIfExists(psiFile)
68-
}
6965
}
7066

7167
val configuration: SourceMarkerConfiguration = SourceMarkerConfiguration()

marker/src/main/kotlin/spp/jetbrains/marker/plugin/FileActivityListener.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ class FileActivityListener : FileEditorManagerListener {
5858
} else {
5959
log.debug("File closed: $file")
6060
val psiFile = PsiManager.getInstance(source.project).findFile(file)
61-
val fileMarker = psiFile?.getUserData(SourceFileMarker.KEY)
61+
val fileMarker = SourceFileMarker.getIfExists(psiFile)
6262
if (fileMarker != null) {
6363
safeRunBlocking {
6464
SourceMarker.getInstance(source.project).deactivateSourceFileMarker(fileMarker)
@@ -100,7 +100,7 @@ class FileActivityListener : FileEditorManagerListener {
100100

101101
var syncViewProvider = false
102102
var gutterMark: GutterMark? = null
103-
val fileMarker = psiFile.getUserData(SourceFileMarker.KEY)
103+
val fileMarker = SourceFileMarker.getOrCreate(psiFile)
104104
if (fileMarker != null) {
105105
gutterMark = fileMarker.getSourceMarks().find {
106106
if (it is GutterMark) {

marker/src/main/kotlin/spp/jetbrains/marker/source/SourceFileMarker.kt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,16 @@ import com.google.common.collect.ImmutableList
2020
import com.intellij.codeInsight.daemon.DaemonCodeAnalyzer
2121
import com.intellij.openapi.application.ApplicationManager
2222
import com.intellij.openapi.diagnostic.logger
23+
import com.intellij.openapi.editor.Editor
2324
import com.intellij.openapi.progress.ProcessCanceledException
2425
import com.intellij.openapi.project.Project
2526
import com.intellij.openapi.util.Key
27+
import com.intellij.psi.PsiDocumentManager
2628
import com.intellij.psi.PsiElement
2729
import com.intellij.psi.PsiFile
2830
import com.intellij.psi.PsiNameIdentifierOwner
2931
import spp.jetbrains.ScopeExtensions.safeRunBlocking
32+
import spp.jetbrains.marker.SourceMarker
3033
import spp.jetbrains.marker.SourceMarkerUtils.doOnDispatchThread
3134
import spp.jetbrains.marker.source.mark.api.*
3235
import spp.jetbrains.marker.source.mark.api.event.SourceMarkEvent
@@ -67,6 +70,21 @@ open class SourceFileMarker(val psiFile: PsiFile) : SourceMarkProvider {
6770
fun isFileSupported(psiFile: PsiFile): Boolean {
6871
return SUPPORTED_FILE_TYPES.any { it.isInstance(psiFile) }
6972
}
73+
74+
fun getOrCreate(editor: Editor): SourceFileMarker? {
75+
val project = editor.project ?: return null
76+
val psiFile = PsiDocumentManager.getInstance(project).getPsiFile(editor.document) ?: return null
77+
return getOrCreate(psiFile)
78+
}
79+
80+
fun getOrCreate(psiFile: PsiFile): SourceFileMarker? {
81+
return SourceMarker.getInstance(psiFile.project).getSourceFileMarker(psiFile)
82+
}
83+
84+
fun getIfExists(psiFile: PsiFile?): SourceFileMarker? {
85+
if (psiFile == null) return null
86+
return SourceMarker.getInstance(psiFile.project).getSourceFileMarkerIfExists(psiFile)
87+
}
7088
}
7189

7290
val project: Project = psiFile.project

marker/src/main/kotlin/spp/jetbrains/marker/source/mark/SourceMarkPopupAction.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ open class SourceMarkPopupAction : AnAction() {
5050
if (project != null && editor != null && psiFile != null) {
5151
var classSourceMark: ClassSourceMark? = null
5252
var sourceMark: SourceMark? = null
53-
val fileMarker = psiFile.getUserData(SourceFileMarker.KEY)
53+
val fileMarker = SourceFileMarker.getOrCreate(psiFile)
5454
if (fileMarker != null) {
5555
sourceMark = fileMarker.getSourceMarks().find {
5656
if (it is ClassSourceMark) {

plugin/src/main/kotlin/spp/jetbrains/sourcemarker/command/CommandBarController.kt

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ package spp.jetbrains.sourcemarker.command
1818

1919
import com.intellij.openapi.diagnostic.logger
2020
import com.intellij.openapi.editor.Editor
21-
import com.intellij.psi.PsiDocumentManager
2221
import liveplugin.implementation.common.toFilePath
2322
import spp.jetbrains.ScopeExtensions.safeRunBlocking
2423
import spp.jetbrains.command.LiveCommand
@@ -110,14 +109,8 @@ object CommandBarController {
110109
previousControlBar?.dispose(true, false)
111110
previousControlBar = null
112111

113-
//determine command bar location
114-
val fileMarker = PsiDocumentManager.getInstance(editor.project!!).getPsiFile(editor.document)!!
115-
.getUserData(SourceFileMarker.KEY)
116-
if (fileMarker == null) {
117-
log.warn("Could not find file marker for file: ${editor.document}")
118-
return
119-
}
120-
112+
//determine control bar location
113+
val fileMarker = SourceFileMarker.getOrCreate(editor) ?: return
121114
val findInlayMark = ArtifactCreationService.getOrCreateExpressionInlayMark(fileMarker, lineNumber)
122115
if (findInlayMark.isPresent && ArtifactScopeService.canShowControlBar(findInlayMark.get().getPsiElement())) {
123116
val inlayMark = findInlayMark.get()

plugin/src/main/kotlin/spp/jetbrains/sourcemarker/status/LiveStatusManagerImpl.kt

Lines changed: 4 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -127,13 +127,7 @@ class LiveStatusManagerImpl(val project: Project, val vertx: Vertx) : LiveStatus
127127
*/
128128
@Suppress("unused")
129129
override fun showBreakpointStatusBar(editor: Editor, lineNumber: Int) {
130-
val fileMarker = PsiDocumentManager.getInstance(editor.project!!).getPsiFile(editor.document)!!
131-
.getUserData(SourceFileMarker.KEY)
132-
if (fileMarker == null) {
133-
log.warn("Could not find file marker for file: ${editor.document}")
134-
return
135-
}
136-
130+
val fileMarker = SourceFileMarker.getOrCreate(editor) ?: return
137131
val inlayMark = ArtifactCreationService.createExpressionInlayMark(fileMarker, lineNumber)
138132
if (!fileMarker.containsSourceMark(inlayMark)) {
139133
val wrapperPanel = JPanel()
@@ -174,13 +168,7 @@ class LiveStatusManagerImpl(val project: Project, val vertx: Vertx) : LiveStatus
174168
*/
175169
@Suppress("unused")
176170
override fun showLogStatusBar(editor: Editor, lineNumber: Int) {
177-
val fileMarker = PsiDocumentManager.getInstance(editor.project!!).getPsiFile(editor.document)!!
178-
.getUserData(SourceFileMarker.KEY)
179-
if (fileMarker == null) {
180-
log.warn("Could not find file marker for file: ${editor.document}")
181-
return
182-
}
183-
171+
val fileMarker = SourceFileMarker.getOrCreate(editor) ?: return
184172
val inlayMark = ArtifactCreationService.createExpressionInlayMark(fileMarker, lineNumber)
185173
if (!fileMarker.containsSourceMark(inlayMark)) {
186174
val wrapperPanel = JPanel()
@@ -218,13 +206,7 @@ class LiveStatusManagerImpl(val project: Project, val vertx: Vertx) : LiveStatus
218206

219207
@Suppress("unused")
220208
override fun showMeterStatusBar(editor: Editor, lineNumber: Int) {
221-
val fileMarker = PsiDocumentManager.getInstance(editor.project!!).getPsiFile(editor.document)!!
222-
.getUserData(SourceFileMarker.KEY)
223-
if (fileMarker == null) {
224-
log.warn("Could not find file marker for file: ${editor.document}")
225-
return
226-
}
227-
209+
val fileMarker = SourceFileMarker.getOrCreate(editor) ?: return
228210
val inlayMark = ArtifactCreationService.createExpressionInlayMark(fileMarker, lineNumber)
229211
if (!fileMarker.containsSourceMark(inlayMark)) {
230212
val wrapperPanel = JPanel()
@@ -261,13 +243,7 @@ class LiveStatusManagerImpl(val project: Project, val vertx: Vertx) : LiveStatus
261243

262244
@Suppress("unused")
263245
override fun showSpanStatusBar(editor: Editor, lineNumber: Int) {
264-
val fileMarker = PsiDocumentManager.getInstance(editor.project!!).getPsiFile(editor.document)!!
265-
.getUserData(SourceFileMarker.KEY)
266-
if (fileMarker == null) {
267-
log.warn("Could not find file marker for file: ${editor.document}")
268-
return
269-
}
270-
246+
val fileMarker = SourceFileMarker.getOrCreate(editor) ?: return
271247
val inlayMark = ArtifactCreationService.createExpressionInlayMark(fileMarker, lineNumber)
272248
if (!fileMarker.containsSourceMark(inlayMark)) {
273249
val wrapperPanel = JPanel()

0 commit comments

Comments
 (0)