Updated code view block line highlighting to only show on focus
The default 1st line highlighting confused users when existing on read-only blocks as it was not clear this represented the active line. This changes the highlight to only show when the block is focused upon.
This commit is contained in:
parent
c17906c758
commit
924f517217
1 changed files with 31 additions and 3 deletions
|
@ -6,7 +6,7 @@ import {bracketMatching} from '@codemirror/language';
|
|||
import {
|
||||
defaultKeymap, history, historyKeymap, indentWithTab,
|
||||
} from '@codemirror/commands';
|
||||
import {EditorState} from '@codemirror/state';
|
||||
import {Compartment, EditorState} from '@codemirror/state';
|
||||
import {getTheme} from './themes';
|
||||
|
||||
/**
|
||||
|
@ -17,12 +17,37 @@ function common(parentEl) {
|
|||
return [
|
||||
getTheme(parentEl),
|
||||
lineNumbers(),
|
||||
highlightActiveLineGutter(),
|
||||
drawSelection(),
|
||||
dropCursor(),
|
||||
bracketMatching(),
|
||||
rectangularSelection(),
|
||||
highlightActiveLine(),
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {({extension: Extension}|readonly Extension[])[]}
|
||||
*/
|
||||
function getDynamicActiveLineHighlighter() {
|
||||
const highlightingCompartment = new Compartment();
|
||||
const domEvents = {
|
||||
focus(event, view) {
|
||||
view.dispatch({
|
||||
effects: highlightingCompartment.reconfigure([
|
||||
highlightActiveLineGutter(),
|
||||
highlightActiveLine(),
|
||||
]),
|
||||
});
|
||||
},
|
||||
blur(event, view) {
|
||||
view.dispatch({
|
||||
effects: highlightingCompartment.reconfigure([]),
|
||||
});
|
||||
},
|
||||
};
|
||||
|
||||
return [
|
||||
highlightingCompartment.of([]),
|
||||
EditorView.domEventHandlers(domEvents),
|
||||
];
|
||||
}
|
||||
|
||||
|
@ -33,6 +58,7 @@ function common(parentEl) {
|
|||
export function viewerExtensions(parentEl) {
|
||||
return [
|
||||
...common(parentEl),
|
||||
getDynamicActiveLineHighlighter(),
|
||||
keymap.of([
|
||||
...defaultKeymap,
|
||||
]),
|
||||
|
@ -47,6 +73,8 @@ export function viewerExtensions(parentEl) {
|
|||
export function editorExtensions(parentEl) {
|
||||
return [
|
||||
...common(parentEl),
|
||||
highlightActiveLineGutter(),
|
||||
highlightActiveLine(),
|
||||
history(),
|
||||
keymap.of([
|
||||
...defaultKeymap,
|
||||
|
|
Loading…
Reference in a new issue