[clion] add ClangFormat lesson in CLion Nova

GitOrigin-RevId: 8f190fd56b0c66acba0763f6d82cb5b584835e16
This commit is contained in:
Maksim Banaev
2025-07-20 15:56:57 +00:00
committed by intellij-monorepo-bot
parent fd0b7b1235
commit dbb521c46b
3 changed files with 15 additions and 7 deletions
@@ -24,6 +24,7 @@ import com.intellij.openapi.application.ApplicationNamesInfo
import com.intellij.openapi.application.invokeLater
import com.intellij.openapi.client.ClientSystemInfo
import com.intellij.openapi.editor.Editor
import com.intellij.openapi.editor.EditorKind
import com.intellij.openapi.editor.EditorModificationUtil
import com.intellij.openapi.editor.LogicalPosition
import com.intellij.openapi.editor.ex.EditorEx
@@ -158,6 +159,14 @@ object LessonUtil {
}
}
fun TaskRuntimeContext.selectNeededItem(isTotalItem: (Any) -> Boolean): Boolean? {
return (previous.ui as? JList<*>)?.let { ui ->
if (!ui.isShowing) return false
val selectedIndex = ui.selectedIndex
selectedIndex != -1 && isTotalItem(ui.model.getElementAt(selectedIndex))
}
}
fun TaskRuntimeContext.checkPositionOfEditor(sample: LessonSample,
checkCaret: TaskRuntimeContext.(LessonSample) -> Boolean = { checkCaretValid(it) }
): TaskContext.RestoreNotification? {
@@ -238,6 +247,10 @@ object LessonUtil {
return UIUtil.getParentOfType(SearchEverywhereUI::class.java, focusOwner) != null
}
fun isMainEditorComponent(component: Component?): Boolean {
return component is EditorComponentImpl && component.editor.editorKind == EditorKind.MAIN_EDITOR
}
fun findItem(ui: JList<*>, checkList: (item: Any) -> Boolean): Int? {
for (i in 0 until ui.model.size) {
val elementAt = ui.model.getElementAt(i)
@@ -59,7 +59,7 @@ abstract class TaskContext : LearningDslBase {
* Delay may be needed to give pass condition take place.
* It is a hack solution because of possible race conditions.
* @param [checkByTimer] Check by timer may be useful in UI detection tasks (in submenus for example).
* @param [restoreRequired] returns true iff restore is needed
* @param [restoreRequired] returns true if restore is needed
*/
open fun restoreState(restoreId: TaskId? = null, delayMillis: Int = 0, checkByTimer: Int? = null, restoreRequired: TaskRuntimeContext.() -> Boolean) = Unit
@@ -15,7 +15,6 @@ import com.intellij.openapi.application.ModalityState
import com.intellij.openapi.application.invokeAndWaitIfNeeded
import com.intellij.openapi.application.invokeLater
import com.intellij.openapi.editor.Editor
import com.intellij.openapi.editor.EditorKind
import com.intellij.openapi.editor.EditorModificationUtil
import com.intellij.openapi.editor.LogicalPosition
import com.intellij.openapi.editor.ex.EditorEx
@@ -33,6 +32,7 @@ import org.assertj.swing.fixture.JListFixture
import org.jetbrains.annotations.Nls
import training.FeaturesTrainerIcons
import training.dsl.*
import training.dsl.LessonUtil.isMainEditorComponent
import training.dsl.LessonUtil.restoreIfModifiedOrMoved
import training.learn.LearnBundle
import training.learn.LessonsBundle
@@ -44,7 +44,6 @@ import training.ui.LearningUiHighlightingManager
import training.ui.LearningUiHighlightingManager.HighlightingOptions
import training.ui.LearningUiUtil
import training.util.LessonEndInfo
import java.awt.Component
import java.awt.Point
import java.awt.Rectangle
@@ -291,10 +290,6 @@ class LocalHistoryLesson(
else null
}
private fun isMainEditorComponent(component: Component?): Boolean {
return component is EditorComponentImpl && component.editor.editorKind == EditorKind.MAIN_EDITOR
}
// If message is null it will remove the existing hint and allow file modification
private fun LessonContext.setEditorHint(@Nls message: String?) {
prepareRuntimeTask {