mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[jupyter] PY-20132
added user data keys for jupyter diff editors such that "expand by default action" is disabled and line marker is always visible in the EditorGutterComponentImpl even if intersects folded region GitOrigin-RevId: a1d2f11bca914738a68bf89c2e59b67a679cc059
This commit is contained in:
committed by
intellij-monorepo-bot
parent
4a07e7311c
commit
9f29eadd0e
@@ -134,4 +134,20 @@ public interface DiffUserDataKeys {
|
||||
* @see com.intellij.diff.tools.util.base.TextDiffSettingsHolder.TextDiffSettings#isEnableAligningChangesMode
|
||||
*/
|
||||
Key<Boolean> ALIGNED_TWO_SIDED_DIFF = Key.create("Diff.AlignTwoSidedDiff");
|
||||
|
||||
/**
|
||||
* Controls whether the aligning view mode is available for a specific editor.
|
||||
* This can be disabled for viewers, where this feature is not implemented (e.g. {@link com.intellij.jupyter.diff.util.JupyterDiffViewer})
|
||||
*
|
||||
* @see com.intellij.diff.actions.impl.ToggleDiffAligningModeAction#update
|
||||
*/
|
||||
Key<Boolean> ALIGNING_VIEW_NOT_SUPPORTED = Key.create("Diff.DisableAligningView");
|
||||
|
||||
/**
|
||||
* Determines if line markers should always be visible in the editor gutter, regardless of the current folding state.
|
||||
* This can be particularly useful in specialized diff viewers (e.g., {@link com.intellij.jupyter.diff.util.JupyterDiffViewer})
|
||||
*
|
||||
* @see com.intellij.openapi.editor.impl.EditorGutterComponentImpl#isLineMarkerVisible
|
||||
*/
|
||||
Key<Boolean> LINE_MARKER_ALWAYS_VISIBLE = Key.create("Diff.LineMarkerAlwaysVisible");
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ import com.intellij.diff.tools.util.DiffDataKeys.DIFF_CONTEXT
|
||||
import com.intellij.diff.tools.util.DiffDataKeys.DIFF_VIEWER
|
||||
import com.intellij.diff.tools.util.base.TextDiffViewerUtil
|
||||
import com.intellij.diff.util.DiffUserDataKeys.ALIGNED_TWO_SIDED_DIFF
|
||||
import com.intellij.diff.util.DiffUserDataKeys.ALIGNING_VIEW_NOT_SUPPORTED
|
||||
import com.intellij.diff.util.DiffUtil
|
||||
import com.intellij.openapi.actionSystem.ActionUpdateThread
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent
|
||||
@@ -18,6 +19,7 @@ class ToggleDiffAligningModeAction : DumbAwareToggleAction() {
|
||||
val available = e.project != null
|
||||
&& viewer is SimpleDiffViewer
|
||||
&& !DiffUtil.isUserDataFlagSet(ALIGNED_TWO_SIDED_DIFF, viewer.request)
|
||||
&& !DiffUtil.isUserDataFlagSet(ALIGNING_VIEW_NOT_SUPPORTED, viewer.request)
|
||||
if (!available) {
|
||||
e.presentation.isEnabledAndVisible = false
|
||||
return
|
||||
|
||||
+2
-1
@@ -115,6 +115,7 @@ import java.util.concurrent.Callable;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
|
||||
import static com.intellij.diff.util.DiffUserDataKeys.LINE_MARKER_ALWAYS_VISIBLE;
|
||||
import static com.intellij.openapi.ui.ex.lineNumber.LineNumberConvertersKt.getStandardLineNumberConverter;
|
||||
|
||||
/**
|
||||
@@ -1299,9 +1300,9 @@ final class EditorGutterComponentImpl extends EditorGutterComponentEx implements
|
||||
}
|
||||
|
||||
private boolean isLineMarkerVisible(RangeHighlighter highlighter) {
|
||||
if (Boolean.TRUE.equals(myEditor.getUserData(LINE_MARKER_ALWAYS_VISIBLE))) { return true; }
|
||||
int startOffset = highlighter.getStartOffset();
|
||||
int endOffset = highlighter.getEndOffset();
|
||||
|
||||
FoldRegion startFoldRegion = myEditor.getFoldingModel().getCollapsedRegionAtOffset(startOffset);
|
||||
FoldRegion endFoldRegion = myEditor.getFoldingModel().getCollapsedRegionAtOffset(endOffset);
|
||||
return startFoldRegion == null || !startFoldRegion.equals(endFoldRegion);
|
||||
|
||||
Reference in New Issue
Block a user