@replit/codemirror-indentation-markers
TypeScript icon, indicating that this package has built-in type declarations

6.5.1 • Public • Published

CodeMirror Indentation Markers

Run on Replit badge NPM version badge

A CodeMirror extension that renders indentation markers using a heuristic similar to what other popular editors, like Ace and Monaco, use.

Example

Usage

import { basicSetup } from 'codemirror';
import { EditorState } from '@codemirror/state';
import { EditorView } from '@codemirror/view';
import { indentationMarkers } from '@replit/codemirror-indentation-markers';

const doc = `
def max(a, b):
  if a > b:
    return a
  else:
    return b
`

new EditorView({
  state: EditorState.create({
    doc,
    extensions: [basicSetup, indentationMarkers()],
  }),
  parent: document.querySelector('#editor'),
});

Options

You can provide an options object to indentationMarkers() with the following optional properties:

  • highlightActiveBlock

    Boolean that determines whether the active block marker is styled differently. Setting this to false provides a significant performance enhancement because it means that markers do not need to be regenerated when the selection changes. Defaults to true.

  • hideFirstIndent

    Boolean that determines whether markers in the first column are omitted. Defaults to false.

  • markerType

    String that determines how far the indentation markers extend. "fullScope" indicates that the markers extend down the full height of a scope. With the "codeOnly" option, indentation markers terminate at the last nonempty line in a scope. Defaults to "fullScope".

  • thickness

    Integer that determines the thickness in pixels of the indentation markers. Defaults to 1.

  • colors

    Object that determines the colors of the indentation markers.

    • light

      String that determines the color of the markers when the editor has a light theme. Defaults to #F0F1F2.

    • dark

      String that determines the color of the markers when the editor has a dark theme. Defaults to #2B3245.

    • activeLight

      String that determines the color of the active block marker when the editor has a light theme. Only applies if highlightActiveBlock is true. Defaults to #E4E5E6.

    • activeDark

      String that determines the color of the active block marker when the editor has a dark theme. Only applies if highlightActiveBlock is true. Defaults to #3C445C.

Example

new EditorView({
  state: EditorState.create({
    doc,
    extensions: [
      basicSetup,
      indentationMarkers({
        highlightActiveBlock: false,
        hideFirstIndent: true,
        markerType: "codeOnly",
        thickness: 2,
        colors: {
          light: 'LightBlue',
          dark: 'DarkBlue',
          activeLight: 'LightGreen',
          activeDark: 'DarkGreen',
        }
      })
    ],
  }),
  parent: document.querySelector('#editor'),
});

Readme

Keywords

none

Package Sidebar

Install

npm i @replit/codemirror-indentation-markers

Weekly Downloads

75,569

Version

6.5.1

License

MIT

Unpacked Size

135 kB

Total Files

17

Last publish

Collaborators

  • krishatreplit
  • mikewesthad
  • motzyball
  • juan.replit
  • ahulbert-replit
  • james-addison-replit
  • replitdstewart
  • ryanweingast
  • harryatreplit
  • theflowingsky
  • jonesit-replit
  • szymon_k
  • cdmistman
  • jackyzha0
  • jamesaustinreplit
  • lopezhoracio
  • bradymaddenreplit
  • ryantm
  • alexisreplit
  • ink404
  • brianpool
  • tobyho
  • brenoafb
  • masad-frost
  • lincolnreplit
  • stkenned
  • replitmatt
  • cbrewster
  • ltazmin_replit
  • moudy
  • schestakov
  • lhchavez
  • slmjkdbtl
  • lunaroyster