0

I'm trying to make a custom Code Mirror Mode to use with Adobe Brackets code editor.

Currently I can highlight {{code}} but I want to use Code Mirror simple mode (easier for me to understand).

My Brackets extension code is (main.js):

define(function (require, exports, module) {
    'use strict';

    var LanguageManager = brackets.getModule("language/LanguageManager");


    CodeMirror.defineMode("laravelblade", function (config, parserConfig) {
        var mustacheOverlay = {
            token: function (stream, state) {

                var ch;

                //Highlight Comments {{-- --}}
                if (stream.match("{{--")) {
                    while ((ch = stream.next()) != null)
                        if (ch == "}" && stream.next() == "}") break;
                    stream.eat("}");
                    return "comment";
                }
                //--

                //Highlight {{ $var }})
                if (stream.match("{{")) {
                    while ((ch = stream.next()) != null)
                        if (ch == "}" && stream.next() == "}") break;
                    stream.eat("}");
                    return "def";
                }

                //Highlight {% $var %} (Laravel 5)
                else if (stream.match('{%')) {
                    while ((ch = stream.next()) != null)
                        if (ch == "%" && stream.next() == "}") break;
                    stream.eat("}");
                    return "def";
                }

                //Highlight {% $var %} (Laravel 5)
                else if (stream.match('{%')) {
                    while ((ch = stream.next()) != null)
                        if (ch == "%" && stream.next() == "}") break;
                    stream.eat("}");
                    return "def";
                }

                //Return Null if no condition was met.
                else if (stream.next() != null) {
                    return null;
                }
            }
        };
        return CodeMirror.overlayMode(CodeMirror.getMode(config, parserConfig.backdrop || "php"), mustacheOverlay);
    });


    LanguageManager.defineLanguage("laravelblade", {
        "name": "Laravel Blade",
        "mode": "laravelblade",
        "fileExtensions": ["blade.php"],
        "blockComment": ["{{--", "--}}"]
    });
});

Can you provide me a simple example with code mirror simple mode? (Ive read codemirror docs, Ive tried to follow the examples, but I just can't get them working with Brackets syntax highlighting...)

Thank you.

Edit: The actual code works, but I want to achieve the same using Code Mirror simple mode.

Also I copied this code and changed it to my needs. But I'm unable to make another Code mirror mode work with brackets from scratch... So I might missed something...

António Pinto
  • 388
  • 2
  • 10

1 Answers1

-1

I had a similar problem.

For a working example, check out the dockerfile mode (in OSX this is in Applications/Brackets/Contents/www/thirdparty/CodeMirror2/mode/dockerfile).