In-browser code editor (version 5, legacy)

Related tags

Editors codemirror5
Overview

CodeMirror

Build Status NPM version

CodeMirror is a versatile text editor implemented in JavaScript for the browser. It is specialized for editing code, and comes with over 100 language modes and various addons that implement more advanced editing functionality. Every language comes with fully-featured code and syntax highlighting to help with reading and editing complex code.

A rich programming API and a CSS theming system are available for customizing CodeMirror to fit your application, and extending it with new functionality.

You can find more information (and the manual) on the project page. For questions and discussion, use the discussion forum.

See CONTRIBUTING.md for contributing guidelines.

The CodeMirror community aims to be welcoming to everybody. We use the Contributor Covenant (1.1) as our code of conduct.

Installation

Either get the zip file with the latest version, or make sure you have Node installed and run:

npm install codemirror

NOTE: This is the source repository for the library, and not the distribution channel. Cloning it is not the recommended way to install the library, and will in fact not work unless you also run the build step.

Quickstart

To build the project, make sure you have Node.js installed (at least version 6) and then npm install. To run, just open index.html in your browser (you don't need to run a webserver). Run the tests with npm test.

Comments
  • Feature Request - multi selection

    Feature Request - multi selection

    I know that this might be a big one to get your head around. but its totally worth it.

    after i have moved to sublime text 2 for my development. its really hard going back to editors that don't have the multi select feature

    it is a killer one and it saves tons of time

    if you don't know what it is watch this movie first http://www.youtube.com/watch?v=i2SVJa2EGIw

    it takes some time to get to use to the idea that your pointing power was multiplied many-folds. than you really start to invent new ways to work with this

    WATCH OUT - if you'll get use to work with multi selection it will be very hard to go back

    opened by 0i0 42
  • Setting for using spaces instead of tabs

    Setting for using spaces instead of tabs

    I may be missing something but I'm not able to detect a way to configure codemirror such that it would use spaces for indentation when a tabs button is used. Maybe there is a way to do it via custom keys but even so it's common enough case (since all editors have such option) to have a dedicated option for that.

    opened by Gozala 35
  • Line number is misaligned when we overwrite the text using setValue method

    Line number is misaligned when we overwrite the text using setValue method

    I have created a text editor in my application using Code mirror. The content of the text editor has to be fetched from DataBase, when I reopen the text editor in my application. I aslo have line number for the text editor in the left side.

    The problem is when I overwrite the content using setValue method, the line numbers are misaligned. That is it get collapsed with the content. misaligned The above image is the output which I get. The line numbers has to be in the left. But after calling setValue method, the line numbers moved out from left position and gets collapsed with the content

    opened by Manoj-RG 31
  • incorrect cursor position on wrapped lines for some users with Chrome

    incorrect cursor position on wrapped lines for some users with Chrome

    We've had several reports of the cursor not appearing in the right place on wrapped lines in Chrome (as evidenced by inserts / deletes happening elsewhere). I still can't reproduce these issues, but now one of our users has submitted screenshots illustrating it on the CodeMirror b-tree demo, which may be of some help.

    Unlike #1219, the string doesn't have any non-ASCII characters. It's just:

    Interpolants are logical assertions over program states that can separate program states that satisfy a desired propert from one that violate the property.\

    Unlike #1353, it only seems to affect some users -- and never me, so far.

    The first screenshot shows the apparent position of the cursor, after 'y' in 'satisfy':

    picture_5

    The second screenshot shows the result of pressing backspace:

    picture_6

    The expected result was that the 'y' would be deleted, but the 'f' before the 'y' was deleted instead.

    The information I have collected from users so far:

    1. This user reported the problem on Chrome stable on Windows 7. The user does not think he has any browser extensions installed. The problem does not appear in Firefox.
    2. It affects both inserts and deletes. It does not matter how you position the cursor (mouse or keyboard arrows).
    3. It is not always off by one -- it sometimes deletes a character several characters behind the apparent cursor position.
    4. The first display line of text (before the wrap) does not have the problem.

    I thought it might be related to the user's locale, but I could not reproduce the issue on a French Windows 7 (up-to-date SP1) running a French Chrome (27.0), which matches this user's setup, so that does not appear to be the case.

    I'll keep trying to get more information about this from the users who report it -- I'm sorry that there's not much to go on yet, but I figured I'd report it here to see whether anyone has any ideas.

    opened by jdleesmiller 31
  • Cursor position jumps after resize and when using line wrapping

    Cursor position jumps after resize and when using line wrapping

    Possible duplicate of #1642

    Demo: http://jasonsanjose.github.io/uploads/word-wrap-bug.html.

    Highlights

    • Using height: 100% on body
    • Not calling refresh and relying on the built-in window resize handling
    <style type="text/css">
      body {
        margin: 0;
        padding: 0;
        height: 100%;
      }
      #content {
        width: 100%;
        height: 100%;
      }
    </style>
    
    ...
    
    <script>
      var editor = CodeMirror(document.getElementById("content"), {
        value: document.getElementById("code").value,
        lineNumbers: true,
        lineWrapping: true
      });
    
      editor.setSize("100%", "100%");
    </script>
    

    Steps to reproduce:

    1. Resize the browser window so that there is no vertical scrolling and the width of the window is just barely big enough to avoid a horizontal scrollbar (line 6 is the longest line)
    2. Place the cursor on any text in line 11 (although any line should work)
    3. Watch the cursor position carefully, then vertically resize the window smaller
    4. Observe the cursor position moves as the vertical scrollbar shows/hides and while line 6 wraps

    Reproduced on Chrome 29 and Canary 31.

    opened by jasonsanjose 29
  • Multiple selections

    Multiple selections

    See Issue #778. Not everything is perfect yet, but it works quite well. Todo:

    • [ ] testing on a mac
    • [x] block selecting across the edges doesn't scroll the editor
    • [x] multiple block selections (alt+drag, release, ctrl+alt+drag)
    • [x] smarter copy & paste
    • [ ] keyboard shortcuts
    • [x] autocomplete
    • [ ] clearer styling of adjacent selections (with a border or rounded corners), although showCursorWhenSelecting also helps
    • [ ] the new code in adjustPos is probably wrong (the second branch, which adjacent selections need, breaks the vim and emacs modes, but I don't know vim or emacs so I'm not sure when or why. with a single selection everything is fine though)
    opened by twiss 28
  • [v3] Gutter jiggles sideways when horizontal touch-scrolling

    [v3] Gutter jiggles sideways when horizontal touch-scrolling

    1. Open v3 demo/theme.html
    2. Paste in a file with long lines (e.g. codemirror.js)
    3. Using the touchpad, scroll horizontally

    Result: Gutter jiggles horizontally, probably because it's being scrolled natively and then being reset back to the correct position.

    opened by njx 28
  • [v3] vertical scrollbar jumps

    [v3] vertical scrollbar jumps

    • Go to: http://codemirror.net/3/mode/less/index.html
    • Place cursor via mouse on line 5
    • Ctrl-A -> Ctrl-X
    • Now Ctrl-V about ? times to get 50695 lines
    • Drag the scroller via mouse to the top of the vertical scrollbar and keep dragging up even when scrollTop=0 has been reached. The result is that the vertical scroller will jump to the middle of the scrollbar and the content to the last line 50695/bottom.
    opened by peterkroon 28
  • Android native app using WebView, backspace doesn't work properly

    Android native app using WebView, backspace doesn't work properly

    This may be no surprise as mobile is only loosely supported, but I don't see an existing report for this, so let me report it.

    CodeMirror does work in Chrome on Android (4.2) tablets and phones, but does not work with WebView in a native Android App. Specifically, if you load an html file that uses CodeMirror using WebView in a native Android App, when the user tries to use the CodeMirror editor to edit text, the Android keyboard will not let you delete existing text.

    This may sound like an obscure problem, but it is fairly common to want to bundle up an HTML5 website as an Android app, including the website files in the app and then using WebView to load them locally, all without using the network. But you can't if your html uses CodeMirror, which is somewhat unfortunate.

    I have a simple repro case, but it does require setting up an Android app development environment (http://developer.android.com/sdk/index.html). Then, with the latest CodeMirror, the simplest repro is to create a Blank Activity, then change MainActivity.java to contain

    public class MainActivity extends Activity {
    
        @SuppressLint("SetJavaScriptEnabled") @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            WebView myWebView = (WebView) findViewById(R.id.webview);
            myWebView.setWebViewClient(new MyWebViewClient());
            WebSettings webSettings = myWebView.getSettings();
            webSettings.setJavaScriptEnabled(true);
            webSettings.setLoadWithOverviewMode(true);
            webSettings.setUseWideViewPort(true);
            myWebView.loadUrl("file:///android_asset/test.html");
        }
    }
    

    Then you need to set up assets to contain your local html and js files. Simplest html is a file test.html:

    <html>
    <head>
    <script src="codemirror.js"></script>
    <link rel="stylesheet" href="codemirror.css">
    <script src="javascript.js"></script>
    </head>
    <body>
    <script>
    var myCodeMirror = CodeMirror(document.body, {
      value: "function myScript(){return 100;}\n",
      mode:  "javascript"
    });
    </script>
    </body>
    </html>
    

    which you will need to create in assets/ or create elsewhere and import into assets/. Then you need to import into assets at the top-level codemirror.css, codemirror.css, and javascript.js from the latest CodeMirror library. Run it to bring up a virtual device, when the app comes up, click in the code in the CodeMirror editor, and you'll see you can't use backspace to delete the existing code in the virtual keyboard.

    The problem may be related to how Android handles editing with the virtual keyboard. In particular, the way CodeMirror sets up a div (instead of a textarea) and handles all the selection in the div might be conflicting with how Android determines whether there is any text left to backspace over (the discussion at https://github.com/mathquill/mathquill/pull/78 might be related). Android does let you edit textareas, so the issue appears to be somewhere between CodeMirror being clever about selection in its div and some optimization Android's virtual keyboard is doing on selection that only applies to a native app using WebView, not to the Chrome browser.

    Anyway, totally realize that CodeMirror isn't designed for mobile, that the problem is related to Android's implementation of WebView, and that this is extremely likely to just be marked as "closed will not fix" immediately. But I thought you and others might want to know about the issue, so I thought I'd write about it here.

    Thanks for the amazing work on this library, by the way, absolutely love it.

    opened by glinden 27
  • [vim] Reimplementation of Vim key mappings

    [vim] Reimplementation of Vim key mappings

    This is a reimplementation of Vim key mappings. The reasons why I felt a reimplementation was necessary are listed in a previous pull request by @jankeromnes at https://github.com/marijnh/CodeMirror/pull/973#issuecomment-10353728. I'd be happy to go into more detail if anyone is interested. Sorry about the long pull request but there are a lot of changes and a lot to discuss. Thank you in advance for taking the time to read this.

    Summary

    This reimplementation has almost reached feature parity with the original, with some divergence in features. Overall the code is cleaner and more maintainable, which should make future additions significantly less time consuming and less error prone.

    I opened this as a pull request because I would like to ask for advice from the community on where to go from here, and see if this can be added to the main repository so that others can use it and contribute. While the reimplementation has not reached full feature parity, there are only a few missing features and I'm not sure when I'll get to implement them. There are also many behavioral fixes and a few new features that would be useful to existing users.

    Discussion

    I am usually against having 2 parallel implementations, and would greatly appreciate any opinions on how we can get the features merged. However, due to the reasons above I think in the short term the best solution would be to have both available, maybe with this as a separate branch?

    While investigating how to implement visual mode, I saw that setCursor() clears the selection (let me know if I am mistaken). Would it be possible to add to the exported CodeMirror API a version of setCursor() that does not reset to selection, and/or methods to expand the existing selection? Or do these APIs already exist? If they don't I'd be happy to add them with some assistance.

    To support additional key-to-key mappings, like mapping 'Left' to 'j' and 'Y' to 'y$', the Vim keymap would need to expose some API functions to let users define the mapping. This could also be a feature in codemirror.js but it seems to be more of a Vim specific feature. I currently am exporting a Vim instance object as a property of CodeMirror. Is that fine or should we work out a different way?

    Functional differences from original

    This is not a complete list, only major points are listed. Also the list of supported keys on top of vim.js is a bit out of date and I may have missed a few things while looking through the code.

    Additional features not in original

    • Support for marks
    • Support for registers
    • Respects orthogonality between motions and operators (Should be less buggy because motions and operators execute independently. Also, newly implemented motions should work with existing operators without additional changes, and vice versa. )
    • A unified keymap with no nesting (plus a trivial insert mode keymap), compared to multiple prefix keymaps in the original implementation

    Yet to be implemented

    • Support for text object manipulation (I am not familiar with this feature at all and it seems relatively complex, so might not be the best person to implement it. Also seems to be a more advanced feature than visual mode so I'd like to do that first.)
    • Ctrl-F, Ctrl-B (they would be easy to do for normal mode, but in order to make them visual mode compatible, need a way to get the position in the next page without moving the cursor)
    • Ctrl-N, Ctrl-P, arrow keys, space, and backspace (don't believe these are commonly used over h/j/k/l, though I might be wrong, and I want to implement them via key-to-key mappings instead duplicating them in the main keymap)

    Next steps

    The immediate next steps I see for the reimplementation, in any order, are:

    • add unit tests
    • visual mode
    • key-to-key (and key-to-command) mappings, like mapping Y to y$ (this is an important vim feature that would be very difficult to do in the original, but should be pretty simple in the reimplementation)
    • text objects
    opened by mightyguava 27
  • Does not integrate with Chrome's spell check

    Does not integrate with Chrome's spell check

    Code snippet:

    <div style="width:200px" contenteditable="true" spellcheck="true">
            <textarea id="code" name="code">
            javaCode {   
                stuff   
            }   
            aaaaaaaaaaaaaa 
            <a>abc</a>;
            </textarea>
        </div>
    
        <script>
          var editor = CodeMirror.fromTextArea(document.getElementById("code"), 
            {
                lineNumbers: true,
                lineWrapping: true,
                mode: "htmlxml"
            });  
        </script>
        <div contenteditable="true" spellcheck="true">
            pure content editable div. asdf asdf yoh.
        </div>
    

    In Firefox if browser spell check is enabled then inside the editor words are marked. In Chrome, it doesn't work (maybe not entirely. Sometimes I can trigger one word to be marked but not consistently).

    NOTE

    I also included a pure content editable div underneath. In Chrome, it won't mark spelling error at page load time. But once focusing on the word or start editing the content, spell check take into effect. So not sure if is this a Chrome thing or CodeMIrror thing.

    opened by huangp 26
  • Ctrl-N / P always move cursor by 2 lines while use `emacs/default` keyMap, But `vim` works well.

    Ctrl-N / P always move cursor by 2 lines while use `emacs/default` keyMap, But `vim` works well.

    Whenever I use 'Ctrl-P/N', it always move 2 lines each time. Is there any directions or hints to soluve this problem?

    Here is my init code

    
    // codemirror 和 语言支持
    import "codemirror";
    import "codemirror/mode/markdown/markdown";
    import "codemirror/addon/selection/active-line";
    import "codemirror/keymap/emacs.js";
    import "codemirror/keymap/vim.js";
    import CodeMirror from "codemirror";
    
    import "codemirror/lib/codemirror.css";
    import "codemirror/theme/darcula.css";
    import "codemirror/theme/ambiance.css";
    import "codemirror/theme/solarized.css";
    // import "codemirror/theme/solarized-dark.css";
    import "./css/ambiance_patch.css";
    import "./css/solarized_patch.css";
    import "codemirror/theme/panda-syntax.css";
    import "codemirror/theme/base16-dark.css";
    import "./css/style.css";
    
    ......
    
        const editor = CodeMirror.fromTextArea(textArea.current, {
          lineNumbers: true,
          lineWrapping: true,
          matchBrackets: true,
          theme: options.currentEditorTheme,
          styleActiveLine: { nonEmpty: false },
          scrollbarStyle: "null",
          keyMap: "emacs",
          mode: "text/x-markdown",
        });
        editor.setSize("100%", "100%");
    
    

    If change keyMap to vim, it works well.

    Any one can Help?

    opened by LiangChengming 0
  • Text typed in IME mode disappears

    Text typed in IME mode disappears

    Hi. I have encountered a problem where text entered in IME mode disappears when the following conditions are combined

    • inputStyle is contenteditable
    • Input after tab indentation
    Screencast reproducing the issue

    I tracked down the code and found that domTextBetween returns empty when the problem occurs.

    https://github.com/codemirror/codemirror5/blob/f006b571d20b3b3e932b1d9013d73d0ada2c22bd/src/input/ContentEditableInput.js#L307

    My guess is that the walk() function, which recursively finds text, is not finding the correct text in the case of tab indentation. I have tried to plant console.log(node) at the beginning of the walk() function, but it seems that the parsing results are different if the indentation is space or tab.

    Space indent

    space-indent

    Tab Indent

    tab-indent

    As you can see, in the case of tab indentation, the span tags are nested, and I expect this is the reason why the text cannot be extracted correctly. Perhaps we need to handle the case where span.cm-tab-wrap-hack is found.

    Hope this report helps. Also, I use IME input mode all the time, and I will be happy to help with testing if you need..

    opened by t-hamano 0
  • Autocapitalization and autocorrect not supported on iOS

    Autocapitalization and autocorrect not supported on iOS

    NOTE: CodeMirror6 does not experience this issue, see https://github.com/codemirror/dev/issues/1020#issuecomment-1343082372.

    Using Safari on iOS 15.6.1 I am unable to get autocapitalization and autocorrect to work using the configuration specified in the manual here https://codemirror.net/5/doc/manual.html#config, with CodeMirror 5.65.10 seen here https://cdnjs.com/libraries/codemirror/5.65.10 (also tested master branch).

    The basic code is:

    var myTextarea = document.getElementById("myCode");
    editor = CodeMirror.fromTextArea(myTextarea, {
        lineNumbers: true,
        autocorrect: true,
        spellcheck: true,
        autocapitalize: true,
        inputStyle: 'textarea'
    });
    

    For reference here are code pens showing behavior of plain textarea and contenteditable:

    • Plain textarea behavior https://codepen.io/josephdpurcell/pen/WNymRMw
    • Plain contenteditable behavior https://codepen.io/josephdpurcell/pen/oNyVBEa

    A PASS is given if the following are true:

    • Autocapitalization: The first character ever typed, a character after a punctuation, a character at the beginning of a new line each have the caps key enabled so the character is typed as an uppercase character.
    • Autocorrect: Any phrase in the input is a candidate for being autocorrected.
    • Autopunctuation: A double-space after the characters [a-zA-Z0-9] turns into a period followed by 1 space.

    Here are code pens I've created to test different scenarios, I've put them in a collection https://codepen.io/collection/NqEdwO. And note testing results below.

    Legend for cases:

    • textarea: The HTML element is a textarea.
    • contenteditable: The HTML element is a contenteditable.
    • inputStyle: The input style was forced to textarea or contenteditable, based on which HTML element was used.
    • options: The autocorrect: true and autocapitalization: true arguments were passed as options to CodeMirror.
    • setOption: The autocorrect and autocapitalization arguments were passed using setoption.
    • setAttribute: The JavaScript setAttribute function was used to "manually" set the autocorrect and autocapitalize options, either using getInputField or querySelectorAll to get the elements.
    • setTimeout + X: The X was wrapped in a setTimeout.
    • default: No options were given; the CodeMirror defaults will be used.

    | Case | Autocapitalization | Autocorrect | Autopunctuation | | ------------ | ------------ | ------------ | ------------ | | CASE 1: textarea, inputStyle, options | ❌ | ❌ | ✅ | | CASE 2: textarea, inputStyle, options, setOption | ❌ | ❌ | ✅ | | CASE 3: textarea, inputStype, options, setTimeout + setOption | ❌ | ❌ | ✅ | | CASE 4: contenteditable, inputStyle, options | ❌ | ❌ | ❌ | | CASE 5: contenteditable, inputStyle, setAttribute w/getInputField | ❌1 | ❌ | ✅ | | CASE 6: textarea, inputStyle, default | ❌ | ❌ | ✅ | | CASE 7: contenteditable, inputStyle, default | ❌ | ❌ | ❌ | | CASE 8: textarea, inputStyle, options, setTimeout + setAttribute w/querySelectorAll | ❌2 | ✅ | ✅ | | CASE 9: textarea, inputStyle, options, setAttribute w/getInputField | ❌3 | ❌ | ✅ | | CASE 10: textarea, options | ❌4 | ❌ | ❌ | | CASE 11: contenteditable, options | ❌5 | ❌ | ❌ | | CASE 12: contenteditable using div, options | ❌6 | ❌ | ❌ |

    1 Only the first letter of the first word typed was capitalized, but never again. 2 Autocapitalization did not happen on new lines unless capitalization was already on, eg type "W-space-return-w" and you will get an upperacse W on the first line and a lowercase w on the second line but if you type "W-space-space-return-w" you get an uppercase W with a period on the first line and an uppercase W on the second line. 3 Same as note 2, autocapitalization is a little finicky. 4 Autocapitalization did not happen on new lines, nor after punctuation. 5 Autocapitalization did not happen on new lines, nor after punctuation. 6 Autocapitalization did not happen on new lines, nor after punctuation.

    Note that CASE 12 is the only case that does not use the CodeMirror.fromTextArea pattern.

    Recording of testing CASE 1-3 and CASE 8 at 2x speed (note the video has it mis-labeled):

    Expand to view video

    https://user-images.githubusercontent.com/778111/206243274-e6a3d975-270f-4be3-8d10-9fe1a05fc637.MOV

    Recording does not include cases 4, 5, 6, 7, nor 9.

    Edit 12/7 3p ET: Clarified that autopunctuation does work. Edit 12/7 6p ET: Added case 4, 5, and pass 2. Edit 12/8 6a ET: Added case 6, 7, demos, and summary. Reflect discovery that all scenarios fail. Edit 12/8 945a ET: Added case 10, 11, 12. Edit 12/8 115p ET: Noted that CodeMirror6 does not have this issue. Edit 12/8 315p ET: Modified to use a table for readability, and used the word CASE instead of pass/fail in the label.

    opened by josephdpurcell 21
  • Avoid re-composition if selection is non-empty, or on double-tap

    Avoid re-composition if selection is non-empty, or on double-tap

    Currently on mobile/contentEditable selection is fragile: as you double-tap or tap-drag the editor often refuses and reset selection back.

    That happens because CM bails out of native 'composition', and re-renders current line. Redrawing DOM invalidates browser's native selection.

    codemirror-struggles-mobile

    This PR relaxes this composition bailout in 2 cases:

    1. Selection is already non-empty.
    2. Another tap in quick succession (double-click selection).

    Not only bailing out of composition in those cases is unlikely to change anything, CM's internal state will be properly updated anyway, as a result of the underlying action: changing selection.

    opened by mihailik 0
  • Wrong cursor position after widget at the end of line

    Wrong cursor position after widget at the end of line

    Unable to set cursor at the end of line (not "codemirror line", rather at the end of row) image

    But if i write something after widget, I can do this: image

    demo is here.

    opened by dalex-am 0
Releases(5.65.11)
  • 5.65.11(Dec 20, 2022)

  • 5.65.10(Nov 20, 2022)

  • 5.65.9(Sep 20, 2022)

  • 5.65.8(Aug 20, 2022)

    Version 5.65.8

    Bug fixes

    Include direction override and isolate characters in the default set of special characters.

    Fix an issue that could cause document corruption when mouse-selecting during composition.

    foldgutter addon: Refresh markers when the editor's mode changes.

    merge addon: Fix syntax that prevented the addon from loading in IE10.

    Source code(tar.gz)
    Source code(zip)
  • 5.65.7(Jul 20, 2022)

  • 5.65.5(May 30, 2022)

  • 5.65.4(May 20, 2022)

  • 5.65.3(Apr 20, 2022)

  • 5.65.2(Feb 21, 2022)

  • 5.65.1(Jan 20, 2022)

  • 5.65.0(Dec 20, 2021)

  • 5.64.0(Nov 20, 2021)

    Version 5.64.0

    Bug fixes

    Fix a crash that occurred in some situations with replacing marks across line breaks.

    Make sure native scrollbars reset their position when hidden and re-shown.

    New features

    vim bindings: Support C-u to delete back a line.

    Source code(tar.gz)
    Source code(zip)
  • 5.63.3(Oct 12, 2021)

    Version 5.63.3

    Bug fixes

    Re-publish 5.63.2 because npm somehow swallowed that, but won't let me publish it again.-----BEGIN PGP SIGNATURE-----

    iQEzBAABCgAdFiEErLY20j+/ljvJRHotcD8b7W0zrh4FAmFlhk0ACgkQcD8b7W0z rh6lWgf/WRGEk/c0cqPKXuKvFAMK1El2R/IC6lapruHsOYuF4FilKHy0hssu4W+D Fm15suBTDmxGhlP06dcjbJfmS28qBPVzA061guHg63dzFgbCS10+6pBbiRTMgzsG rDWAlMawlIfFrW4LIzt7HajaenybGiJKgKezvChTmrhLeLDkvmn442u1PGmuRa5C ZtAhL0yPYhbpuqK0wQXL3OuGhgQFHwp3xAiuPVLUJZ4VI2T9caNmckic7y5cJ4NT 8WXyDjwWTjboeEyYNyqm88uFqf0B0VO5B/vJnbcgfJbplCcQyn9kQDj1pb2jmuBp haki+zoTerm6nfBjyBpy6mv68Wcqzw== =mCdh -----END PGP SIGNATURE----- Mark version 5.63.3

    Source code(tar.gz)
    Source code(zip)
  • 5.63.2(Oct 11, 2021)

    Version 5.63.2

    Bug fixes

    Prevent external styles from giving the hidden textarea a min-height.

    Remove a stray autosave file that was part of the previous release.

    Source code(tar.gz)
    Source code(zip)
  • 5.63.1(Sep 29, 2021)

  • 5.63.0(Sep 20, 2021)

    Version 5.63.0

    Bug fixes

    Fix scroll position jumping when scrolling a document with very different line heights.

    xml mode: Look up HTML element behavior in a case-insensitive way.

    New features

    vim bindings: Support guu for case-changing.

    Source code(tar.gz)
    Source code(zip)
  • 5.62.3(Aug 20, 2021)

    Version 5.62.3

    Bug fixes

    Give the editor a translate=no attribute to prevent automatic translation from modifying its content.

    Give vim-style cursors a width that matches the character after them.

    merge addon: Make buttons keyboard-accessible.

    emacs bindings: Fix by-page scrolling keybindings, which were accidentally inverted.

    Source code(tar.gz)
    Source code(zip)
  • 5.62.2(Jul 21, 2021)

  • 5.62.1(Jul 20, 2021)

  • 5.62.0(Jun 21, 2021)

  • 5.61.1(May 20, 2021)

    Version 5.61.1

    Bug fixes

    Fix a bug where changing the editor's document could confuse text-direction management.

    Fix a bug in horizontally scrolling the cursor into view.

    Optimize adding lots of marks in a single transaction.

    simple mode addon: Support regexps with a unicode flag.

    javascript mode: Add support for TypeScript template string types, improve integration with JSX mode.

    Source code(tar.gz)
    Source code(zip)
  • 5.61.0(Apr 20, 2021)

    Version 5.61.0

    Bug fixes

    Improve support for being in a shadow DOM in contenteditable mode.

    Prevent line number from being read by screen readers.

    show-hint addon: Fix a crash caused by a race condition.

    javascript mode: Improve scope tracking.

    New features

    The library now emits an "updateGutter" event when the gutter width changes.

    emacs bindings: Provide named commands for all bindings.

    Source code(tar.gz)
    Source code(zip)
  • 5.60.0(Mar 20, 2021)

  • 5.59.4(Feb 24, 2021)

    Version 5.59.4

    Bug fixes

    Give the scrollbar corner filler a background again, to prevent content from peeping through between the scrollbars.

    Source code(tar.gz)
    Source code(zip)
  • 5.59.3(Feb 20, 2021)

    Version 5.59.3

    Bug fixes

    Don't override the way zero-with non-joiners are rendered.

    Fix an issue where resetting the history cleared the undoDepth option's value.

    vim bindings: Fix substitute command when joining and splitting lines, fix global command when line number change, add support for :vglobal, properly treat caps lock as a modifier key.

    Source code(tar.gz)
    Source code(zip)
  • 5.59.2(Jan 20, 2021)

    Version 5.59.2

    Bug fixes

    Don't try to scroll the selection into view in readonly: "nocursor" mode.

    closebrackets addon: Fix a regression in the behavior of pressing enter between brackets.

    javascript mode: Fix an infinite loop on specific syntax errors in object types.

    various modes: Fix inefficient RegExp matching.

    Source code(tar.gz)
    Source code(zip)
  • 5.59.1(Dec 31, 2020)

  • 5.59.0(Dec 20, 2020)

    Version 5.59.0

    Bug fixes

    Fix platform detection on recent iPadOS.

    lint addon: Don't show duplicate messages for a given line.

    clojure mode: Fix regexp that matched in exponential time for some inputs.

    hardwrap addon: Improve handling of words that are longer than the line length.

    matchbrackets addon: Fix leaked event handler on disabling the addon.

    New features

    search addon: Make it possible to configure the search addon to show the dialog at the bottom of the editor.

    Source code(tar.gz)
    Source code(zip)
  • 5.58.3(Nov 19, 2020)

    Version 5.58.3

    Bug fixes

    Suppress quick-firing of blur-focus events when dragging and clicking on Internet Explorer.

    Fix the insertAt option to addLineWidget to actually allow the widget to be placed after all widgets for the line.

    soy mode: Support @Attribute and element composition.

    shell mode: Support heredoc quoting.

    Source code(tar.gz)
    Source code(zip)
Owner
CodeMirror
The in-browser code editor
CodeMirror
A browser based code editor

Monaco Editor The Monaco Editor is the code editor which powers VS Code, with the features better described here. Please note that this repository con

Microsoft 32.4k Jan 3, 2023
A browser based code editor

Monaco Editor The Monaco Editor is the code editor which powers VS Code, with the features better described here. Please note that this repository con

Microsoft 24.6k May 17, 2021
Browser-based code editor created to edit local or server files online

notIDE Browser-based code editor created to edit local or server files online. Features Autosave while editing Syntax highlight using ace editor Creat

Mr Crypster 15 Nov 21, 2022
A markdown editor. http://lab.lepture.com/editor/

Editor A markdown editor you really want. Sponsors Editor is sponsored by Typlog. Overview Editor is not a WYSIWYG editor, it is a plain text markdown

Hsiaoming Yang 2.8k Dec 19, 2022
Override the rich text editor in Strapi admin with ToastUI Editor.

strapi-plugin-wysiwyg-tui-editor ⚠️ This is a strapi v4 plugin which does not support any earlier version! A Strapi plugin to replace the default rich

Zhuo Chen 12 Dec 23, 2022
A chrome extension which helps change ace editor to monaco editor in web pages, supporting all features including autocompletes.

Monaco-It Monaco-It is a chrome extension turning Ace Editor into Monaco Editor, supporting all features including autocompletes. 一些中文说明 Supported Lan

null 3 May 17, 2022
In-browser Markdown editor

StackEdit Full-featured, open-source Markdown editor based on PageDown, the Markdown library used by Stack Overflow and the other Stack Exchange sites

Benoit Schweblin 19.9k Jan 9, 2023
A editor with the main features created using Remirror and with a special code block

A editor with the main features created using Remirror and with a special code block

Brenda Profiro 26 Sep 20, 2022
lightweight (~5kb) code editor custom element with syntax highlighting

code-edit lightweight (~5kb) code editor custom element with syntax highlighting ?? Install · ?? Example · ?? API docs · ?? Releases · ???? Contribute

stagas 5 Apr 14, 2022
A realtime code-editor and compiler to ease coding interview process

A realtime code-editor and compiler to ease coding interview process. Users can create their rooms and can invite others to their rooms. So, millions can work on a same code at the same time together !

Archan Banerjee 1 Jan 2, 2023
A flatbed solution - original version by V4M0N0S

Flatbed - Athena Framework Plugin Just for testing...no support! Installation Copy Folder client-plugins/gpFlatbed to your athena project under src/co

j0n4s 8 Dec 8, 2022
The next generation Javascript WYSIWYG HTML Editor.

Froala Editor V3 Froala WYSIWYG HTML Editor is one of the most powerful JavaScript rich text editors ever. Slim - only add the plugins that you need (

Froala 5k Jan 1, 2023
Simple rich text editor (contentEditable) for jQuery UI

Hallo - contentEditable for jQuery UI Hallo is a very simple in-place rich text editor for web pages. It uses jQuery UI and the HTML5 contentEditable

Henri Bergius 2.4k Dec 17, 2022
A modern, simple and elegant WYSIWYG rich text editor.

jQuery-Notebook A simple, clean and elegant WYSIWYG rich text editor for web aplications Note: Check out the fully functional demo and examples here.

Raphael Cruzeiro 1.7k Dec 12, 2022
Ace (Ajax.org Cloud9 Editor)

Ace (Ajax.org Cloud9 Editor) Note: The new site at http://ace.c9.io contains all the info below along with an embedding guide and all the other resour

Ajax.org B.V. 25.2k Jan 4, 2023
Quill is a modern WYSIWYG editor built for compatibility and extensibility.

Note: This branch and README covers the upcoming 2.0 release. View 1.x docs here. Quill Rich Text Editor Quickstart • Documentation • Development • Co

Quill 34.3k Jan 2, 2023
Medium.com WYSIWYG editor clone. Uses contenteditable API to implement a rich text solution.

If you would be interested in helping to maintain one of the most successful WYSIWYG text editors on github, let us know! (See issue #1503) MediumEdit

yabwe 15.7k Jan 4, 2023
Tiny bootstrap-compatible WISWYG rich text editor

bootstrap-wysiwyg Important information for Github requests/issues Please do not submit issues/comments to this repo. Instead, submit it to https://gi

MindMup 5.6k Jan 3, 2023