gutters.min.js (1264B)
1 import { elt, removeChildren } from "../util/dom.js" 2 import { indexOf } from "../util/misc.js" 3 4 import { updateGutterSpace } from "./update_display.js" 5 6 // Rebuild the gutter elements, ensure the margin to the left of the 7 // code matches their width. 8 export function updateGutters(cm) { 9 let gutters = cm.display.gutters, specs = cm.options.gutters 10 removeChildren(gutters) 11 let i = 0 12 for (; i < specs.length; ++i) { 13 let gutterClass = specs[i] 14 let gElt = gutters.appendChild(elt("div", null, "CodeMirror-gutter " + gutterClass)) 15 if (gutterClass == "CodeMirror-linenumbers") { 16 cm.display.lineGutter = gElt 17 gElt.style.width = (cm.display.lineNumWidth || 1) + "px" 18 } 19 } 20 gutters.style.display = i ? "" : "none" 21 updateGutterSpace(cm) 22 } 23 24 // Make sure the gutters options contains the element 25 // "CodeMirror-linenumbers" when the lineNumbers option is true. 26 export function setGuttersForLineNumbers(options) { 27 let found = indexOf(options.gutters, "CodeMirror-linenumbers") 28 if (found == -1 && options.lineNumbers) { 29 options.gutters = options.gutters.concat(["CodeMirror-linenumbers"]) 30 } else if (found > -1 && !options.lineNumbers) { 31 options.gutters = options.gutters.slice(0) 32 options.gutters.splice(found, 1) 33 } 34 }