Search code examples
csscodemirror

Why Codemirror editor does NOT scroll horizontally with long line?


I've a code mirror version: 5.65.3 with Blazor. When I've a long line in the editor the horizontal scroll doesn't work, it rather uses the scroll of the page which mess out the whole page.

Like this: enter image description here

I don't think that I changed any CSS in Codemirror.

Here is some related CSS lines:

    .CodeMirror {
  /* Set height, width, borders, and global font properties here */
  font-family: monospace;
  height: 750px;
  color: black;
  direction: ltr;

}


.CodeMirror-scroll {
  overflow: scroll !important; /* Things will break if this is overridden */
  /* 50px is the magic margin used to hide the element's real scrollbars */
  /* See overflow: hidden in .CodeMirror */
  margin-bottom: -50px; margin-right: -50px;
  padding-bottom: 50px;
  height: 100%;
  outline: none; /* Prevent dragging from highlighting the element */
  position: relative;
  z-index: 0;
}

I'm calling the codemirror through this code: (the onchange is because I'm using Blazor for binding purposes )

window.editor= function (dontNetObjRef) {

    editor = CodeMirror.fromTextArea(document.getElementById('myTextArea'), {
        lineNumbers: true,
        indentUnit: 4,
        lineWrapping: true,
        tabMode: "shift",
        gutters: ["CodeMirror-lint-markers"]
    });

    //JavaScript function use the onchange event of CodeMirror to invoke the C# method and pass the value of the myTextArea .

    editor.on("change", editor => {
        dontNetObjRef.invokeMethodAsync("UpdateField", editor.getValue());
        // console.log(editor.getValue());

    });

Note: even if I used lineWrapping: true it moved to the second line and does the same issue with scroll. Also, it works well when I set a fixed width like 1000px but I'd like to make it auto in case the screen size of the user changes.


Solution

  • Thanks to Jax-p for giving me some hints to fix the issue.

    I've add width:70vw in .CodeMirror class and max-width:70vw in .CodeMirror-scroll

    Another thing that was affecting the changes is that I was putting the textarea in inside a <div class=col-11> which was affecting the width in the CSS so I just removed that and everything is working.