Skip to content

Commit f8b1082

Browse files
committed
Wrap code now works in editor mode
1 parent 786a54e commit f8b1082

26 files changed

Lines changed: 1056 additions & 247 deletions

main.js

Lines changed: 77 additions & 78 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package-lock.json

Lines changed: 45 additions & 52 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/EditorView/Admonitions.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import { EditorView, ViewPlugin } from "@codemirror/view";
66
import { isPluginLoaded } from "../Utils";
77
import { CodeblockCustomizerSettings } from "../Settings";
88
import CodeBlockCustomizerPlugin from "../main";
9-
import { extractCodeBlocksFromAdmonition } from "../ReadingViewUtils";
10-
import { CodeBlockRenderer } from "../CodeBlockRenderer";
9+
import { extractCodeBlocksFromAdmonition } from "../ReadingView/ReadingViewUtils";
10+
import { CodeBlockRenderer } from "../ReadingView/CodeBlockRenderer";
1111
import { CodeBlockPositions } from "./CodeBlockPositions";
1212

1313
export function admonitionExtension(plugin: CodeBlockCustomizerPlugin, settings: CodeblockCustomizerSettings, codeBlockPositionsField: StateField<CodeBlockPositions[]>) {

src/EditorView/Annotations.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { TooltipManager } from "../TooltipManager";
99
import { CodeblockCustomizerSettings } from "../Settings";
1010
import { ANNOTATION_PATTERN, rhombusSVG } from "../Const";
1111
import CodeBlockCustomizerPlugin from "../main";
12-
import { CodeBlockPositions } from "./CodeBlockPositions";
12+
import { CodeBlockPositions, getVisibleCodeBlocks } from "./CodeBlockPositions";
1313

1414
const COMMENT_REGEX = /^\s*(?:\/\/|#|--|\/\*)\s*|\s*\*\/$/g;
1515

@@ -42,10 +42,11 @@ export function annotationsExtension(plugin: CodeBlockCustomizerPlugin, settings
4242
buildDecorations(view: EditorView): DecorationSet {
4343
const decorations: Array<Range<Decoration>> = [];
4444
const codeBlockPositions = view.state.field(codeBlockPositionsField, false) ?? [];
45+
const visibleBlocks = getVisibleCodeBlocks(codeBlockPositions, view.visibleRanges);
4546
const cursorPos = view.state.selection.main.head;
4647
const cursorLineNumber = view.state.doc.lineAt(cursorPos).number;
4748

48-
for (const pos of codeBlockPositions) {
49+
for (const pos of visibleBlocks) {
4950
syntaxTree(view.state).iterate({
5051
from: pos.codeBlockStartPos, to: pos.codeBlockEndPos,
5152
enter: (node) => {

src/EditorView/EditorEffects.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ export const semiFade = StateEffect.define<Range<Decoration>>();
2929
export const semiUnFade = StateEffect.define<{ filterFrom: number; filterTo: number }>();
3030
export const unhideEffect = StateEffect.define<{ from: number; to: number }>();
3131
export const rehideEffect = StateEffect.define<{ from: number; to: number }>();
32+
export const wrapEffect = StateEffect.define<{ pos: number; unwrap: boolean }>();
3233

3334
export type CollapseEffect = Range<Decoration>;
3435
export type UncollapseEffect = { filter: (from: number, to: number) => boolean; filterFrom: number; filterTo: number };

src/EditorView/EditorExtensions.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,26 +17,27 @@ import { linksExtension } from "./Links";
1717
import { annotationsExtension } from "./Annotations";
1818
import { executeCodeExtension } from "./ExecuteCodePlugin";
1919
import { admonitionExtension } from "./Admonitions";
20-
export { FoldingState, FoldCommand } from "./EditorEffects";
20+
import { wrapExtension } from "./Wrapping";
2121

2222
let settingsUpdated = false;
2323
export function updateValue(newValue: boolean) {
2424
settingsUpdated = newValue;
25-
}
25+
}// updateValue
2626

2727
let resetFoldDecorations = false;
2828
export function resetFoldDecos(newValue: boolean) {
2929
resetFoldDecorations = newValue;
30-
}
30+
}// resetFoldDecos
3131

3232
export function extensions(plugin: CodeBlockCustomizerPlugin, settings: CodeblockCustomizerSettings) {
3333
const codeBlockPositionsField = createCodeBlockPositionsField(settings, () => settingsUpdated);
3434
const { hiddenLinesUnhiddenField, hiddenLinesField, getHiddenRanges, getHiddenLines } = hideLinesExtension(settings, codeBlockPositionsField);
35+
const { wrappingField, unwrappedCodeBlocksField, scrollSyncPlugin } = wrapExtension(codeBlockPositionsField, settings);
3536
const {
3637
collapseField, foldCommandField, rememberedFoldField, defaultFoldUnfoldedField, toggleCodeBlockFold, getFoldingState, foldAll, unfoldAll, restoreDefaultFold
3738
} = foldingExtension(plugin, settings, codeBlockPositionsField, hiddenLinesUnhiddenField, getHiddenLines, () => groupedCodeBlocksField, () => resetFoldDecorations);
3839
const { groupedCodeBlocksField, activeGroupTabField, addTabs } = groupedCodeBlocksExtension(plugin, settings, codeBlockPositionsField, () => toggleCodeBlockFold);
39-
const { headerField, buttonWidget, createButtonConfigs } = headerExtension(plugin, settings, codeBlockPositionsField, collapseField, activeGroupTabField, groupedCodeBlocksField, hiddenLinesUnhiddenField, getFoldingState, toggleCodeBlockFold, addTabs, () => settingsUpdated);
40+
const { headerField, buttonWidget, createButtonConfigs } = headerExtension(plugin, settings, codeBlockPositionsField, collapseField, activeGroupTabField, groupedCodeBlocksField, hiddenLinesUnhiddenField, unwrappedCodeBlocksField, getFoldingState, toggleCodeBlockFold, addTabs, () => settingsUpdated, getHiddenRanges);
4041
const { viewPlugin, liveUpdateExtension, forceRefreshListener } = mainViewPluginExtension(plugin, settings, codeBlockPositionsField, collapseField, foldCommandField, hiddenLinesUnhiddenField, getHiddenRanges, () => updateValue, () => resetFoldDecos, () => settingsUpdated);
4142
const { hideFencesPlugin } = hideFenceLinesExtension(plugin, settings, codeBlockPositionsField, createButtonConfigs, buttonWidget, () => updateValue, () => resetFoldDecos, () => settingsUpdated);
4243
const { inlineCodeViewPlugin } = inlineCodeExtension(plugin, settings);
@@ -84,13 +85,16 @@ export function extensions(plugin: CodeBlockCustomizerPlugin, settings: Codebloc
8485
headerField,
8586
hiddenLinesUnhiddenField,
8687
hiddenLinesField,
88+
wrappingField,
89+
unwrappedCodeBlocksField,
8790
viewPlugin,
8891
linkViewPlugin,
8992
inlineCodeViewPlugin,
9093
annotationViewPlugin,
9194
hideFencesPlugin,
9295
executeCodeViewPlugin,
9396
admonitionViewPlugin,
97+
scrollSyncPlugin,
9498
liveUpdateExtension(),
9599
forceRefreshListener,
96100
EditorView.domEventHandlers({

src/EditorView/ExecuteCodePlugin.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { EditorView, ViewPlugin } from "@codemirror/view";
44
import { isPluginLoaded, getBorderColorByLanguage, getPropertyFromLanguageSpecificColors } from "../Utils";
55
import { CodeblockCustomizerSettings } from "../Settings";
66
import CodeBlockCustomizerPlugin from "../main";
7-
import { createButtons, extractLinesFromHTML, renderCodeBlockLines } from "../ReadingViewUtils";
7+
import { createButtons, extractLinesFromHTML, renderCodeBlockLines } from "../ReadingView/ReadingViewUtils";
88
import { createExecuteCodeEditButton, verifyAndRevealExecuteButtons } from "../ExecuteCode";
99
import { getAllParameters } from "../Parsing";
1010
import { CodeBlockPositions } from "./CodeBlockPositions";

0 commit comments

Comments
 (0)