Ace (Ajax.org Cloud9 Editor)

Related tags

Editors ace
Overview

Ace (Ajax.org Cloud9 Editor)

Build Status npm

Note: The new site at http://ace.c9.io contains all the info below along with an embedding guide and all the other resources you need to get started with Ace.

Ace is a standalone code editor written in JavaScript. Our goal is to create a browser based editor that matches and extends the features, usability and performance of existing native editors such as TextMate, Vim or Eclipse. It can be easily embedded in any web page or JavaScript application. Ace is developed as the primary editor for Cloud9 IDE and the successor of the Mozilla Skywriter (Bespin) Project.

Features

  • Syntax highlighting for over 120 languages (TextMate/Sublime/.tmlanguage files can be imported)
  • Over 20 themes (TextMate/Sublime/.tmtheme files can be imported)
  • Automatic indent and outdent
  • An optional command line
  • Handles huge documents (at last check, 4,000,000 lines is the upper limit)
  • Fully customizable key bindings including vim and Emacs modes
  • Search and replace with regular expressions
  • Highlight matching parentheses
  • Toggle between soft tabs and real tabs
  • Displays hidden characters
  • Drag and drop text using the mouse
  • Line wrapping
  • Code folding
  • Multiple cursors and selections
  • Live syntax checker (currently JavaScript/CoffeeScript/CSS/XQuery)
  • Cut, copy, and paste functionality

Take Ace for a spin!

Check out the Ace live demo or get a Cloud9 IDE account to experience Ace while editing one of your own GitHub projects.

If you want, you can use Ace as a textarea replacement thanks to the Ace Bookmarklet.

Embedding Ace

Ace can be easily embedded into any existing web page. You can either use one of pre-packaged versions of ace (just copy one of src* subdirectories somewhere into your project), or use requireJS to load contents of lib/ace as ace

The easiest version is simply:

<div id="editor">some text</div>
<script src="src/ace.js" type="text/javascript" charset="utf-8"></script>
<script>
    var editor = ace.edit("editor");
</script>

With "editor" being the id of the DOM element, which should be converted to an editor. Note that this element must be explicitly sized and positioned absolute or relative for Ace to work. e.g.

#editor {
    position: absolute;
    width: 500px;
    height: 400px;
}

To change the theme simply include the Theme's JavaScript file

<script src="src/theme-twilight.js" type="text/javascript" charset="utf-8"></script>

and configure the editor to use the theme:

editor.setTheme("ace/theme/twilight");

By default the editor only supports plain text mode; many other languages are available as separate modules. After including the mode's JavaScript file:

<script src="src/mode-javascript.js" type="text/javascript" charset="utf-8"></script>

The mode can then be used like this:

var JavaScriptMode = ace.require("ace/mode/javascript").Mode;
editor.session.setMode(new JavaScriptMode());

to destroy editor use

editor.destroy();
editor.container.remove();

Documentation

Additional usage information, including events to listen to and extending syntax highlighters, can be found on the main Ace website.

You can also find API documentation at http://ace.c9.io/#nav=api.

Also check out the sample code for the kitchen sink demo app.

If you still need help, feel free to drop a mail on the ace mailing list, or at irc.freenode.net#ace.

Running Ace

After the checkout Ace works out of the box. No build step is required. To try it out, simply start the bundled mini HTTP server using Node.JS

node ./static.js

The editor can then be opened at http://localhost:8888/kitchen-sink.html.

To open the editor with a file:/// URL see the wiki.

Building Ace

You do not generally need to build ACE. The ace-builds repository endeavours to maintain the latest build, and you can just copy one of src* subdirectories somewhere into your project.

However, all you need is Node.js and npm installed to package ACE. Just run npm install in the ace folder to install dependencies:

npm install
node ./Makefile.dryice.js

To package Ace, we use the dryice build tool developed by the Mozilla Skywriter team. Call node Makefile.dryice.js on the command-line to start the packing. This build script accepts the following options

-m                 minify build files with uglify-js          
-nc                namespace require and define calls with "ace"
-bm                builds the bookmarklet version
--target ./path    specify relative path for output folder (default value is "./build")

To generate all the files in the ace-builds repository, run node Makefile.dryice.js full --target ../ace-builds

Running the Unit Tests

The Ace unit tests can run on node.js. Assuming you have already done npm install, just call:

npm run test

You can also run the tests in your browser by serving:

http://localhost:8888/lib/ace/test/tests.html

This makes debugging failing tests way more easier.

Contributing

Ace is a community project and wouldn't be what it is without contributions! We actively encourage and support contributions. The Ace source code is released under the BSD License. This license is very simple, and is friendly to all kinds of projects, whether open source or not. Take charge of your editor and add your favorite language highlighting and keybindings!

Feel free to fork and improve/enhance Ace any way you want. If you feel that the editor or the Ace community will benefit from your changes, please open a pull request. For more information on our contributing guidelines, see CONTRIBUTING.md.

Comments
  • IOS compatibility

    IOS compatibility

    Ace could be a ideal editor on IOS devices (iPad, iPhone) if you just could type, but unfortunately virtual keyboard never shows up with ACE, also I believe someone had a patch for bespin to make that work. @gissues:{"order":96.27329192546586,"status":"backlog"}

    mobile 
    opened by Gozala 160
  • RTL editing

    RTL editing

    Files with Right-To-Left text (like Hebrew) is very hard to edit. The view is correct but when I type, the place in which a letter is injected into the text is wrong and is not under the cursor. It seems that when I stand at the beginning of a line and click N times on the right arrow the cursor will move N letters to the right but then typing something will inject the letter N letters from the right (and not N letters from the left which is where the cursor is).

    opened by eyalfink 42
  • Double tap to highlight not working

    Double tap to highlight not working

    On a MBP running OSX 10.8.1 double tapping on the track pad doesn't highlight text. It works fine if I double click with lower left hand corner of the track pad or with a mouse, but double tapping is not doing the trick.

    I found this while using Rstudio.

    http://support.rstudio.org/help/discussions/problems/3304-double-tap-to-markup-text-not-working

    Best Lars

    opened by LDalby 39
  • Overrinded browser shortcuts are anoying

    Overrinded browser shortcuts are anoying

    CMD + L opens jump to line dialog, which is annoying since it's quite frequently used as jump to location bar shortcut in Firefox :(

    Can another non conflicting combination be used for that ? @gissues:{"order":96.89440993788821,"status":"backlog"}

    opened by Gozala 34
  • Add Slim (template language) syntax highlighting support

    Add Slim (template language) syntax highlighting support

    Please add syntax highlighting support for the Slim template language

    Existing implementations:

    • Textmate: https://github.com/slim-template/ruby-slim.tmbundle
    • Vim: https://github.com/slim-template/vim-slim/blob/master/syntax/slim.vim
    • Emacs: https://github.com/slim-template/emacs-slim
    mode-request help-wanted 
    opened by wjbuys 32
  • Support for Arabic/Hebrew/Persian languages.

    Support for Arabic/Hebrew/Persian languages.

    This PR is intended to provide ACE with proper Arabic/Hebrew/Farsi (aka. Bidi) characters typing/display. (references the discussion under issue 'RTL editing' #1429) Currently ACE fails to do this for 2 primary reasons.

    1. ACE bases itself on monospaced font in calculating screen columns offsets. Unfortunately, Bidi character's width differs from that of regular (say English) characters. This poses challenge, especially when Bidi and none Bidi (English or neutral) characters are present in the same line. Moreover, for Chrome engine based browsers (like Chrome and Opera), on some OS the default 'Monako' font defined in editor.css is not monospaced when it comes to Bidi characters. This might happen or not happen even on different Windows7 systems. Apparently this happens since 'Monaco' has no glifs for Bidi characters and font substitution on different OS(s) picks up different fonts from awailable stock.

    2. Bidi languages differ from none Bidi ones in their flow direction (from right to left), thus, character order on display (right-to-left) differs from respective order in text buffer (left-to-right). The respective character positions on display versus buffer are defined by Bidi algorithm implemented by platform (either by OS for native applications or by browser for web based applications). The correspondence between respective character positions on display (aka Visual) and in buffer (aka Logical) is defined by Visual<->Logical maps produced by Bidi Engine implementing Bidi algorithm.

    3. Between additional miscellaneous challenges it worth mentioning:

    • Arabic LamAlef pair processing (this particular combination of two characters is displayed as one character)
    • 'Tab' and 'wide' characters processing (their width participates in calculating the screen column position offset)

    For references to Bidi algorithm see, for instance, http://unicode.org/reports/tr9/ For general references regarding Bidi see, for instance, https://www.w3.org/International/articlelist#direction

    As a consequence, the character screen position (offset) in pure Bidi or mixed Bidi/None-Bidi text lines should be calculated basing on character screen position rather then buffer one.

    The following implementation details are important for understanding how this PR deals with aforementioned problems.

    1. Statefull 'bidihandler' class is introduced to concentrate all Bidi related activities. It depends on lightweight Bidi engine implemented by library class 'bidiutil'.

    2. 'bidihandler' class stores information related to text line under processing, this info consists of so named 'bidiMap' that contains Bidi levels and Visual<->Logical map (see above for terms definition). Above mentioned information is updated when caret is moved to another text line.

    3. In order to cope with the problem of calculating correct horizontal offsets of displayed characters 'bidihandler' class stores width of Bidi characters alongside with widths for None Bidi characters, end-of-lines etc. In cases when 'Monaco' font doesn't furnish monospaced glyphs for Bidi characters, this font gets dynamically replaced by "Courier' font on per line basis (for lines containing Bidi characters)

    4. Special methods of 'bidihandler' class, like 'getPosLeft', 'offsetToCol', 'getSelections' ensure correct caret display, calculation of mouse click position and text (single or multiple) selection.

    This solution has been tested on IE, FF, Chrome/Opera, Safary.

    The test cases will be added to this PR after current approach is approved and code implementation is finalized.

    opened by ashensis 31
  • Uncaught TypeError: Cannot read property 'cssClass' of undefined

    Uncaught TypeError: Cannot read property 'cssClass' of undefined

    Hello , I get the js error Uncaught TypeError: Cannot read property 'cssClass' of undefined

    Any idea what I am doing wrong here?

                // Initialize your Ace Editor
                var editor =  function(id, mode, data) {
                    var aceEditor = ace.edit(id);
                    // default theme
                    aceEditor.setTheme("theme/monokai");
                    aceEditor.getSession().setMode("ace/mode/" + mode); 
                    aceEditor.getSession().setValue(data);
                    return aceEditor;
                };  
    
                $.get("/mvc/home.html", function(html) {
                    editor("editor1", "html", html);
                });
    
                $.get("/assets/js/app_events.js", function(code) {
                    var e =  editor("editor2", "javascript", code);
    
                });
    

    It loads theme/monokai.js and the editor is working fine.

    opened by s-a 31
  • Use native HTML5 Drag'n'Drop for text.

    Use native HTML5 Drag'n'Drop for text.

    Sorry, I donno how to rebase branch, so this is the new version of https://github.com/ajaxorg/ace/pull/1431 . All issues I wanted are fixed.

    This needs test and review.

    Issues I would like to fix but need help:

    • [ ] Wrong selection on undo of drag operation.
    • [x] Autoscroll while dragging should not scroll if there is no line (scrolled past last row) or char (scrolled past last char) at cursor.
    • [x] Editor should not scroll selection into view if we leave (through negligence) editor rect while autoscrolling.

    Issues we can not resolve:

    • Wrong ui feedback (drag cursor) in IE9+
    • Safari 5 does not support dnd

    Issues I do not know reason of:

    • Opera blinks drag cursor (cursor icon) while dragging.

    Issues I don't like or not sure:

    • Sequence click interval is handled by browsers differently.

    Also, in Firefox, dragenter event fires twice, so dragleave event does not get caret back. Can anybody reproduce?

    Great news! All bugs I (or someone else) found in IE and reported to MS are marked as Won't Fix ))) They say those are "by design", "not reproducible" etc :)

    1. https://connect.microsoft.com/IE/feedback/details/789773/ie-increments-event-detail-on-clicks-over-different-locations
    2. https://connect.microsoft.com/IE/feedback/details/790344/ie-ignores-draggable-attribute-if-set-after-mousedown-event
    3. https://connect.microsoft.com/IE/feedback/details/782906/setting-dropeffect-has-no-effect-in-ie9-and-ie10-standards-mode
    4. https://connect.microsoft.com/IE/feedback/details/780585/dropeffect-not-working-properly-in-ie-standard-mode-ie9-ie10
    opened by danyaPostfactum 29
  • ace: add external keyboard support on iOS (except history)

    ace: add external keyboard support on iOS (except history)

    This adds some basic external keyboard handling and fixes part of #37 .

    What is supported:

    • Arrow keys
    • Selection and navigation using the keyboard
    • Copy and paste using keyboard

    What is not supported:

    • History management using Cmd+Z and Shift+Cmd+Z
    • Touch (except for moving the caret to a certain position)

    However, this provides a pretty usable experience.

    How does it work?

    The only event that iOS sends to textareas and other editable elements when any "special" character is pressed is selectionchange. If we pick the text in the textarea in the correct way, it is possible to use this event to detect what special character has been pressed.

    It is possible to modify the code to also support history and touch, but I'll leave it for another PR :)

    opened by etamponi 21
  • Issues list for Chinese input

    Issues list for Chinese input

    OS: Windows 8 Chinese IME: NO1. QQ Wubi IME, download link:http://dl_dir.qq.com/invc/qqwubi/QQWubi_Setup_2.0.313.400.exe NO2. Sogou Pinyin IME, download link: http://pinyin.sogou.com/softdown.php?v=6.6&type=c

    Test case: Input Chinese Pinyin ni'hao two times, the editor should display "你好你好"。

    Result:

    1. IE 10 ime iussue1
    2. Chrome ime issue2
    3. Firefox ime issue3
    ime 
    opened by haoder 21
  • Clipboard API usage, context menu Delete, Select All commands support

    Clipboard API usage, context menu Delete, Select All commands support

    Uses clipboardData object (currently in Webkit (Safari 5 does not allow to setData to clipboard) and IE) because it fast and native way.

    Tested on Chrome, Firefox, Opera, Safari 5, IE8-9 under Windows OS. Can anybody help to test this with other user agents ?

    opened by danyaPostfactum 21
  • CSS level4 :not() pseudo-element marked as error when it has a complex selector

    CSS level4 :not() pseudo-element marked as error when it has a complex selector

    Describe the bug

    per https://w3c.github.io/csswg-drafts/selectors/#negation starting in CSS level 4, :not() pseudo-classes can now contain complex selectors e.g. :not(a,b). However ACE gives an "Expected LBRACE" error when you use this syntax

    This is new in CSS4. in css3 :not was only allowed to have simple selectors

    Expected Behavior

    ACE syntax highlight to accept the valid CSS syntax as valid.

    Current Behavior

    error about expected LBRACE and unexpected token )

    Reproduction Steps

    I tested this at https://ace.c9.io/build/kitchen-sink.html in CSS mode

    :not(a, b) {   
        color:red;
    }
    

    Possible Solution

    No response

    Additional Information/Context

    • Official spec: https://w3c.github.io/csswg-drafts/selectors/#negation
    • https://developer.mozilla.org/en-US/docs/Web/CSS/:not mdn docs
    • https://caniuse.com/css-not-sel-list
    • Originally reported at https://www.mediawiki.org/wiki/Topic:X8lmvrv27ymmfuog

    Ace Version / Browser / OS / Keyboard layout

    Linux, firefox, US-english

    p2 effort/medium feature-request 
    opened by bawolff 0
  • Theme: OKSolar

    Theme: OKSolar

    Describe the feature

    OKSolar is a new theme inspired by Solarized, using the Oklab color space instead of CIELAB.

    Use Case

    I've been using OKSolar in my local terminal and Vim for a few weeks, and I find it to be more pleasant than the original Solarized. I would like to have it available in online ace-based editors as well, like the Rust Playground.

    Proposed Solution

    No response

    Other Information

    No response

    Acknowledgements

    • [X] I may be able to implement this feature request
    • [ ] This feature might incur a breaking change

    ACE version used

    master

    p1 effort/small feature-request good first issue 
    opened by cuviper 0
  • ACE line heights since 1.13.1

    ACE line heights since 1.13.1

    Describe the bug

    I assume the change in https://github.com/ajaxorg/ace/pull/4996 results in a different calculation of line heights. Since 1.13.1 (I confirmed 1.13.0 does not have this issue) the line heights are incorrect and result in the text being smashed together. Manually requesting a browser zoom in or out will re-render the lines correctly.

    Expected Behavior

    Previously in 1.13.0 this rendered correctly.

    Current Behavior

    Here's an example of the initial display:

    Screenshot 2022-12-12 at 11 37 15 AM

    Reproduction Steps

    I'm mounting this within a Vue.js component but it's pretty straightforward except perhaps it's running on the mounted life cycle method. Not sure if that's resulting in a browser environment that can't figure out the proper line height?

    <template> 
     <pre id="editor"></pre>
    </template>
    
    <script>
    import * as ace from 'ace-builds'
    import 'ace-builds/src-min-noconflict/mode-text'
    import 'ace-builds/src-min-noconflict/theme-twilight'
    import 'ace-builds/src-min-noconflict/ext-language_tools'
    import 'ace-builds/src-min-noconflict/ext-searchbox'
    export default {
      mounted: function () {
        this.editor = ace.edit('editor')
        this.editor.setTheme('ace/theme/twilight')
        this.editor.setValue(this.definition)
        this.editor.clearSelection()
        this.editor.focus()
      },
    }
    </script>
    <style scoped>
    #editor {
      height: 50vh;
      width: 75vw;
      position: relative;
      font-size: 16px;
    }
    </style>
    

    Possible Solution

    No response

    Additional Information/Context

    Vue mounted lifecycle hook says:

    A component is considered mounted after:

    All of its synchronous child components have been mounted (does not include async components or components inside trees).

    Its own DOM tree has been created and inserted into the parent container. Note it only guarantees that the component's DOM tree is in-document if the application's root container is also in-document.

    This hook is typically used for performing side effects that need access to the component's rendered DOM

    Ace Version / Browser / OS / Keyboard layout

    1.13.1 / Chrome (107.0.5304.87) / Mac OS 13 / Querty

    p1 effort/small bug 
    opened by jmthomas 9
  • Completions improvements

    Completions improvements

    Issue #, if available: #5004

    Description of changes:

    • Fix wrong declarations for Completion and Completer
    • Add description for Completer structure
    • Add two internal properties range to support range replacements and command for different kind of commands after insertion of completion (for now it's start new autocomplete)
    • Add ability to use separate getDocTooltip for any completer

    By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

    opened by mkslanc 2
  • Autocomplete/Language Tools: Potential issue with doc tooltip

    Autocomplete/Language Tools: Potential issue with doc tooltip

    Describe the bug

    I am working on a project using Ace and would love to utilize the Doc Tooltip in the autocompletion feature.

    Unfortunately the Typescript definitions in ace.d.ts do not have the required definitions. As I have not found any documentation about this feature, I started to read the code to find how to implement that Tooltip for my completer. While reading the code I might have found some potential issues.

    Expected Behavior

    Have proper Type Definitions and implementations to use Doc Tooltip in custom Completer.

    Current Behavior

    In autocomplete.js the updateDocTooltip() uses .some() to iterate over an array of completers to find a completer that has a getDocTooltip() and returns a value for the selected item. Either, the getDocTooltip() (currently the only one is defined in language_tools.js) should return a value (string or {docHTML: string} or {docText: string}) to truly utilize the .some() or it should be a .forEach() instead.

    Reproduction Steps

    None.

    Possible Solution

    I would love to have the Completion in ace.d.ts include the docHTML?: string and/or docText?: string fields that could be used directly.

    The getDocTooltip() should either be defined in the Completer in ace.d.ts too, or in theory it could be replaced with directly defining docHTML/docText in the Completition Item in language_tools.js.

    Additional Information/Context

    No response

    Ace Version / Browser / OS / Keyboard layout

    1.13.1

    p2 effort/small bug good first issue pr-available 
    opened by dodgex 0
  • Editor: Tilde input

    Editor: Tilde input

    Describe the bug

    Delting a "temporary" tilde character using backspace, deletes three additonal characters before the tilde

    Expected Behavior

    Deleting a "temporary" tilde character deletes just the tilde, not anything else

    Current Behavior

    It deletes three additonal characters before the tilde

    Reproduction Steps

    1. Type '123456789'
    2. Type '~' (it is now marked as "temporary" since it needs another keystroke to compose or actually write)
    3. Hit 'Backspace'
    4. It deletes the tilde, as well as '789', leaving only '123456'

    Possible Solution

    No response

    Additional Information/Context

    No response

    Ace Version

    v1.13.1

    p2 effort/small bug good first issue 
    opened by maros 2
Releases(v1.14.0)
  • v1.14.0(Dec 12, 2022)

    Features

    Bug Fixes

    • added GREATEST|LEAST logical functions added in SQL Server 2022 (#5009) (e3f3e7a)
    • Update ace.d.ts typings for navigate (#5011) (a302709)

    New Contributors

    • @aoyku made their first contribution in https://github.com/ajaxorg/ace/pull/5008
    • @rozhnev made their first contribution in https://github.com/ajaxorg/ace/pull/5009
    • @sadnub made their first contribution in https://github.com/ajaxorg/ace/pull/5011

    Full Changelog: https://github.com/ajaxorg/ace/compare/v1.13.2...v1.14.0

    Source code(tar.gz)
    Source code(zip)
  • v1.13.2(Dec 7, 2022)

    What's Changed

    Bug Fixes

    • Add missing options to EditorOptions (#5003) (451b63f)
    • Better ES6 support for JavaScript Mode (6fb39e3)
    • Fix vim keybindings scroll to the selected line (#4980) (8562f94)
    • show 2 context characters of a line when moving to it (#4998) (743190e)

    New Contributors

    • @rezass made their first contribution in https://github.com/ajaxorg/ace/pull/5002
    • @dodgex made their first contribution in https://github.com/ajaxorg/ace/pull/5003

    Full Changelog: https://github.com/ajaxorg/ace/compare/v1.13.1...v1.13.2

    Source code(tar.gz)
    Source code(zip)
  • v1.13.1(Nov 16, 2022)

    Bug Fixes

    • Change curly braces insertion behavior for Markdown to act the same as for other braces (#4994) (2760234)
    • Incorrect cursor position for very long lines (#4996) (e57a9d9)

    New Contributors

    • @andredcoliveira made their first contribution in https://github.com/ajaxorg/ace/pull/4996

    Full Changelog: https://github.com/ajaxorg/ace/compare/v1.13.0...v1.13.1

    Source code(tar.gz)
    Source code(zip)
  • v1.13.0(Nov 11, 2022)

    What's Changed

    Features

    Bug Fixes

    • Add missing options to VirtualRendererOptions and EditorOptions (#4983) (19dd2ec)
    • Fix documentElement was null in rare cases by @mkslanc in https://github.com/ajaxorg/ace/pull/4981
    • Fix of scroll while interrupting animation (#4993) (0092f3f)
    • rare case when document passed to dom.scrollbarWidth doesn't have documentElement (#4981) (df44158)
    • Fix for '-' keybinding in Vim in Firefox by @piotrduperas in https://github.com/ajaxorg/ace/pull/4988

    New Contributors

    • @piotrduperas made their first contribution in https://github.com/ajaxorg/ace/pull/4988

    Full Changelog: https://github.com/ajaxorg/ace/compare/v1.12.5...v1.13.0

    Source code(tar.gz)
    Source code(zip)
  • v1.12.5(Nov 1, 2022)

  • v1.12.4(Oct 31, 2022)

    Bug Fixes

    New Contributors

    • @ParkerM made their first contribution in https://github.com/ajaxorg/ace/pull/4975

    Full Changelog: https://github.com/ajaxorg/ace/compare/v1.12.3...v1.12.4

    Source code(tar.gz)
    Source code(zip)
  • v1.12.3(Oct 18, 2022)

    Bug Fixes

    • Fix syntax error in the custom scroll CSS (#4968) (f2a424a)

    New Contributors

    • @dmiskiew made their first contribution in https://github.com/ajaxorg/ace/pull/4968

    Full Changelog: https://github.com/ajaxorg/ace/compare/v1.12.2...v1.12.3

    Source code(tar.gz)
    Source code(zip)
  • v1.12.2(Oct 18, 2022)

  • v1.12.1(Oct 17, 2022)

    What's Changed

    Bug Fixes

    • php worker rules for T_NAME_FULLY_QUALIFIED (#4960) (52dbb05)
    • recognisition of uppercase hex numbers for stylus mode (#4962) (87e0dc7)

    New Contributors

    • @runbing made their first contribution in https://github.com/ajaxorg/ace/pull/4961
    • @masterWeber made their first contribution in https://github.com/ajaxorg/ace/pull/4960

    Full Changelog: https://github.com/ajaxorg/ace/compare/v1.12.0...v1.12.1

    Source code(tar.gz)
    Source code(zip)
  • v1.12.0(Oct 15, 2022)

    Features

    • implement BibTeX mode highlighting (ab9e191)

    Bug Fixes

    • MockDom's ClassList toggle and contains methods return boolean instead of void (e8c0a1f)
    • change lua version to 5.3 (#4954) (fc56af5)
    • documentation for TokenIterator methods (#4955) (6bff7b4)
    • Fixed comment folding bugs for html (xml like languages) (#4910) (5279a8a)
    • mode change for vim tests (236a31e)
    • php worker rules for T_NAME_FULLY_QUALIFIED, T_NAME_QUALIFIED, T_NAME_RELATIVE namespaced names tokens (#4948) (059ff71)
    • tools to work with new ace project structure (7894c4b)

    Full Changelog: https://github.com/ajaxorg/ace/compare/v1.11.2...v1.12.0

    Source code(tar.gz)
    Source code(zip)
  • v1.11.2(Sep 26, 2022)

    1.11.2 (2022-09-26)

    Bug Fixes

    • Fixed handling surrogare characters in insert, replace, delete mode in Vim (72fd4b7)
    • Fixed handling surrogate characters in insert-after mode in Vim (38f893a)

    New Contributors

    • @sashashura made their first contribution in https://github.com/ajaxorg/ace/pull/4935

    Full Changelog: https://github.com/ajaxorg/ace/compare/v1.11.1...v1.11.2

    Source code(tar.gz)
    Source code(zip)
  • v1.11.1(Sep 23, 2022)

  • v1.11.0(Sep 20, 2022)

    Features

    • Add gutter indicators for annotations; add custom scrollbar to display gutter indicators (62fb0d8)

    Bug Fixes

    • Change scroll behaviour for onmousedown to immediate scroll to point (392b224)
    • Do not try apply highlight indent guide if the file is empty (#4928) (a90ef27)
    • Restrict annotation mark max height and optimise marks coords on canvas (a6e2259)

    New Contributors

    • @kvaithin made their first contribution in https://github.com/ajaxorg/ace/pull/4922

    Full Changelog: https://github.com/ajaxorg/ace/compare/v1.10.1...v1.11.0

    Source code(tar.gz)
    Source code(zip)
  • v1.10.1(Sep 6, 2022)

  • v1.10.0(Aug 31, 2022)

    Features

    • editor option for indent guide highlighting (f1f6517)

    Bug Fixes

    • add mock getHighlightIndentGuides and setHighlightIndentGuides for old tests to work (4067512)
    • added "flex-start" and "flex-end" (#4912) (3e14988)
    • Fix problematic semicolon in CSS media queries (#4849) (18a459a)
    • more optimal way to accessing an element's list of classes; mark highlightIndentGuide as internal property (855a874)
    • strictly equal instead of loosely (d4c1ab8)
    • Updated Jshint to 2.13.5 (#4911) (2401fbd)

    New Contributors

    • @tomsmeding made their first contribution in https://github.com/ajaxorg/ace/pull/4904
    • @hrkw00 made their first contribution in https://github.com/ajaxorg/ace/pull/4912

    Full Changelog: https://github.com/ajaxorg/ace/compare/v1.9.6...v1.10.0

    Source code(tar.gz)
    Source code(zip)
  • v1.9.6(Aug 17, 2022)

  • v1.9.5(Aug 10, 2022)

  • v1.9.4(Aug 9, 2022)

    What's Changed

    • Updated license field to be in line with ace-builds package by @andrewnester in https://github.com/ajaxorg/ace/pull/4893

    Full Changelog: https://github.com/ajaxorg/ace/compare/v1.9.3...v1.9.4

    Source code(tar.gz)
    Source code(zip)
  • v1.9.3(Aug 8, 2022)

  • v1.9.2(Aug 8, 2022)

  • v1.9.0(Aug 8, 2022)

    1.9.0 (2022-08-08)

    Features

    • added ability to limit amount of undos/redos (#4872) (897ee0a)
    • publish Ace source code to ace-code NPM package (#4881) (66cf041)

    Bug Fixes

    • Fix determination of anonymous code blocks in Postgres Mode (fixes #4790) (06f7e22)
    • Fixed Ace typings (23208f2)
    • Fixed jsDoc annotations (e15abb4), closes #4879
    • refactor of kotlin mode to simplify states and resolve incorrect highlights (a30a99d)
    • returned precise highlight for functions params, generics and types (967aa6b)
    • Rust identifiers normally recognised now; generics highlight support; doc comments support (#4868) (bbb5800)

    New Contributors

    • @anijanyan made their first contribution in https://github.com/ajaxorg/ace/pull/4871

    Full Changelog: https://github.com/ajaxorg/ace/compare/v1.8.1...v1.9.0

    Source code(tar.gz)
    Source code(zip)
  • v1.8.1(Jul 21, 2022)

  • v1.8.0(Jul 20, 2022)

    1.8.0 (2022-07-20)

    Features

    Bug Fixes

    • add undocumented Target command (62e8e9e), closes #4839
    • added NSIS 3.08 commands (acad68c), closes #4838
    • bidihandler: check for undefined before access length property on splits variable (457b657)
    • correct highlight of php heredoc strings with one word on line (ae4564c)
    • Fixed typo in Nord Dark theme. (#4843) (38bf666)
    • Move session.onChange and placeholder.onChange handlers to be first in the change event handler queue (bcb51f2)
    • reuse getTargetDir function (b89c4db)
    • type declarations (a8830fc)

    New Contributors

    • @arcanistzed made their first contribution in https://github.com/ajaxorg/ace/pull/4833
    • @antoineveldhoven made their first contribution in https://github.com/ajaxorg/ace/pull/4843
    • @dntrkv made their first contribution in https://github.com/ajaxorg/ace/pull/4835

    Full Changelog: https://github.com/ajaxorg/ace/compare/v1.7.1...v1.8.0

    Source code(tar.gz)
    Source code(zip)
  • v1.7.1(Jun 29, 2022)

  • v1.7.0(Jun 28, 2022)

    1.7.0 (2022-06-28)

    Features

    Bug Fixes

    • Added two tmthemes gruvbox dark (hard) and light (hard) (6b1e67f), closes #3673
    • adds ignore browserified dir to eslintignore (56b591b)
    • Allow setAnnotations to use custom className (f505879), closes #4362
    • Avoid substitutions when Webpack was introduced (a540323), closes #4476
    • Highlighting DISTINCT keyword in SQL (fb3820a), closes #4399
    • Make sure completions aren't null or undefined (a78e127), closes #4608

    New Contributors

    • @SullyJHF made their first contribution in https://github.com/ajaxorg/ace/pull/4614
    • @Nevin1901 made their first contribution in https://github.com/ajaxorg/ace/pull/4608
    • @w89612b made their first contribution in https://github.com/ajaxorg/ace/pull/4476
    • @akashdotsrivastava made their first contribution in https://github.com/ajaxorg/ace/pull/4399
    • @FavorMylikes made their first contribution in https://github.com/ajaxorg/ace/pull/4362
    • @asantos00 made their first contribution in https://github.com/ajaxorg/ace/pull/3979
    • @stuples made their first contribution in https://github.com/ajaxorg/ace/pull/3673

    Full Changelog: https://github.com/ajaxorg/ace/compare/v1.6.1...v1.7.0

    Source code(tar.gz)
    Source code(zip)
  • v1.6.1(Jun 24, 2022)

    1.6.1 (2022-06-24)

    Bug Fixes

    • Highlight unicode characters in Python function and class names (be6f2d1)
    • Incorrect YAML syntax highlighting for version numbers with multiple periods #4827 (915fcaf)

    Full Changelog: https://github.com/ajaxorg/ace/compare/v1.6.0...v1.6.1

    Source code(tar.gz)
    Source code(zip)
  • v1.6.0(Jun 10, 2022)

    1.6.0 (2022-06-10)

    Features

    • Add ability to use HTML fragments (#4812)

    Bug Fixes

    • Add class to tooltip DOM element distinguish errors from warnings (#4810) (d2446d6)
    • Autocomplete stopped working after upgrade to v1.5.2 (48e6b60)
    • Fix css EOF duplicate errors #4816 (48176f6)
    • Fix overflow button for long lines with one token (#4818) (3f93451)

    New Contributors

    • @BenSouchet made their first contribution in https://github.com/ajaxorg/ace/pull/4810
    • @Exaphis made their first contribution in https://github.com/ajaxorg/ace/pull/4818

    Full Changelog: https://github.com/ajaxorg/ace/compare/v1.5.3...v1.6.0

    Source code(tar.gz)
    Source code(zip)
  • v1.5.3(May 31, 2022)

  • v1.5.2(May 30, 2022)

    1.5.2 (2022-05-30)

    Bug Fixes

    • Added es6-shim library to fix old browsers (#4720) (5ba71a0)
    • Added mockdom.before method (#4724) (ffedba3)
    • Added support for cjs, mjs and log modes (#4718) (375498a)
    • Adds missed functions into php_completions.js (#4726) (7d5f4b8)
    • Cannot read property of null for bgTokenizer after session is destroyed (#4713) (d604f52)
    • Do not render selected word markers for the same range multiple times (#4727) (cd30f59)
    • Fixed popup CSS styling (#4728) (045a3e6)
    • Fixed scrolling code lenses into view (#4717) (710b14a)
    • Multiple improvements for Ace themes (#4715) (87ad55d)
    • Only send postMessage through worker if it's defined (#4722) (2afa4bf)
    • Pass additional arguments for command.exec (#4723) (3b36762)
    • Removed focussing after timeout in text input (#4716) (f8ea48f)
    • Throw invalid delta error if change is out of range and added V2 for worker and worker client (#4721) (f269889)
    • Updated ace typings (#4714) (d5d6f9a)

    Full Changelog: https://github.com/ajaxorg/ace/compare/v1.5.1...v1.5.2

    Source code(tar.gz)
    Source code(zip)
  • v1.5.1(May 23, 2022)

    1.5.1 (2022-05-23)

    Bug Fixes

    • Correctly tokenize YAML meta tags with non alphabetical characters after multiline string (#4706) (0164811)
    • Made commas be tokenized as punctuation operator instead of text in JSON (#4703) (4c4883a)
    • Multiple Partiql and Amazon Ion textual notation fixes (#4686) (bffba8d)
    • PHP syntax fix for AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG (#4705) (d59c22b)
    • Python functions should be highlighted as functions (#4708) (b2aaf1f)
    • Updated PHP mode to support PHP8.1 syntax (#4696) (33cf1c6)

    New Contributors

    • @jeroenpost86 made their first contribution in https://github.com/ajaxorg/ace/pull/4696
    • @zardam made their first contribution in https://github.com/ajaxorg/ace/pull/4708

    Full Changelog: https://github.com/ajaxorg/ace/compare/v1.5.0...v1.5.1

    Source code(tar.gz)
    Source code(zip)
Owner
Ajax.org B.V.
Ajax.org B.V.
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
Dynamic content filtering in org-mode exported HTML documents based on tags.

Dynamic tag filtering in org-mode exported HTML documents This JavaScript code adds dynamic tag filtering to HTML documents exported from Emacs Org-mo

Øyvind Stegard 7 Sep 6, 2022
An extension that adds an "edit tags" button to every object on osm.org

OpenStreetMap Tags Editor This is a WebExtension that adds an "Edit Tags" button to all node, way, and relation pages on the osm.org website. The butt

Ilya Zverev 13 Dec 1, 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
In-browser code editor

CodeMirror CodeMirror is a versatile text editor implemented in JavaScript for the browser. It is specialized for editing code, and comes with over 10

CodeMirror 25.6k Dec 30, 2022
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
HTML5 rich text editor. Try the demo integration at

Squire Squire is an HTML5 rich text editor, which provides powerful cross-browser normalisation in a flexible lightweight package (only 16.5KB of JS a

Neil Jenkins 4.4k Dec 28, 2022
A rich text editor for everyday writing

Trix A Rich Text Editor for Everyday Writing Compose beautifully formatted text in your web application. Trix is a WYSIWYG editor for writing messages

Basecamp 17.3k Jan 3, 2023
A lightweight and amazing WYSIWYG JavaScript editor - 20kB only (8kB gzip)

Supporting Trumbowyg Trumbowyg is an MIT-licensed open source project and completely free to use. However, the amount of effort needed to maintain and

Alexandre Demode 3.8k Jan 7, 2023
Simple, beautiful wysiwyg editor

This repo is no longer maintained. bootstrap3-wysiwyg is much better Overview Bootstrap-wysihtml5 is a javascript plugin that makes it easy to create

James Hollingworth 4.2k Dec 30, 2022
Open source rich text editor based on HTML5 and the progressive-enhancement approach. Uses a sophisticated security concept and aims to generate fully valid HTML5 markup by preventing unmaintainable tag soups and inline styles.

This project isn’t maintained anymore Please check out this fork. wysihtml5 0.3.0 wysihtml5 is an open source rich text editor based on HTML5 technolo

Christopher Blum 6.5k Jan 7, 2023
Raptor, an HTML5 WYSIWYG content editor!

Raptor Editor Raptor Editor is a user-focused extensible WYSIWYG website content editor - check out the Demo. It is designed to be user and developer

PANmedia 533 Sep 24, 2022
Popline is an HTML5 Rich-Text-Editor Toolbar

popline Popline is a non-intrusive WYSIWYG editor that shows up only after selecting a piece of text on the page, inspired by popclip. Usage Load jQue

kenshin 1k Nov 4, 2022