| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422 | ace.define("ace/keyboard/sublime",["require","exports","module","ace/keyboard/hash_handler"], function(require, exports, module) {"use strict";var HashHandler = require("../keyboard/hash_handler").HashHandler;function moveBySubWords(editor, direction, extend) {    var selection = editor.selection;    var row = selection.lead.row;    var column = selection.lead.column;    var line = editor.session.getLine(row);    if (!line[column + direction]) {        var method = (extend ? "selectWord" : "moveCursorShortWord")            + (direction == 1 ? "Right" : "Left");        return editor.selection[method]();    }    if (direction == -1) column--;    while (line[column]) {        var type = getType(line[column]) + getType(line[column + direction]);        column += direction;        if (direction == 1) {            if (type == "WW" && getType(line[column + 1]) == "w")                break;        }        else {            if (type == "wW") {                if (getType(line[column - 1]) == "W") {                    column -= 1;                    break;                } else {                    continue;                }            }            if (type == "Ww")                break;        }        if (/w[s_oW]|_[sWo]|o[s_wW]|s[W]|W[so]/.test(type))            break;    }    if (direction == -1) column++;    if (extend)        editor.selection.moveCursorTo(row, column);    else        editor.selection.moveTo(row, column);        function getType(x) {        if (!x) return "-";        if (/\s/.test(x)) return "s";        if (x == "_") return "_";        if (x.toUpperCase() == x && x.toLowerCase() != x) return "W";        if (x.toUpperCase() != x && x.toLowerCase() == x) return "w";        return "o";    }}exports.handler = new HashHandler(); exports.handler.addCommands([{    name: "find_all_under",    exec: function(editor) {        if (editor.selection.isEmpty())            editor.selection.selectWord();        editor.findAll();    },    readOnly: true}, {    name: "find_under",    exec: function(editor) {        if (editor.selection.isEmpty())            editor.selection.selectWord();        editor.findNext();    },    readOnly: true}, {    name: "find_under_prev",    exec: function(editor) {        if (editor.selection.isEmpty())            editor.selection.selectWord();        editor.findPrevious();    },    readOnly: true}, {    name: "find_under_expand",    exec: function(editor) {        editor.selectMore(1, false, true);    },    scrollIntoView: "animate",    readOnly: true}, {    name: "find_under_expand_skip",    exec: function(editor) {        editor.selectMore(1, true, true);    },    scrollIntoView: "animate",    readOnly: true}, {    name: "delete_to_hard_bol",    exec: function(editor) {        var pos = editor.selection.getCursor();        editor.session.remove({            start: { row: pos.row, column: 0 },            end: pos        });    },    multiSelectAction: "forEach",    scrollIntoView: "cursor"}, {    name: "delete_to_hard_eol",    exec: function(editor) {        var pos = editor.selection.getCursor();        editor.session.remove({            start: pos,            end: { row: pos.row, column: Infinity }        });    },    multiSelectAction: "forEach",    scrollIntoView: "cursor"}, {    name: "moveToWordStartLeft",    exec: function(editor) {        editor.selection.moveCursorLongWordLeft();        editor.clearSelection();    },    multiSelectAction: "forEach",    scrollIntoView: "cursor"}, {    name: "moveToWordEndRight",    exec: function(editor) {        editor.selection.moveCursorLongWordRight();        editor.clearSelection();    },    multiSelectAction: "forEach",    scrollIntoView: "cursor"}, {    name: "selectToWordStartLeft",    exec: function(editor) {        var sel = editor.selection;        sel.$moveSelection(sel.moveCursorLongWordLeft);    },    multiSelectAction: "forEach",    scrollIntoView: "cursor"}, {    name: "selectToWordEndRight",    exec: function(editor) {        var sel = editor.selection;        sel.$moveSelection(sel.moveCursorLongWordRight);    },    multiSelectAction: "forEach",    scrollIntoView: "cursor"}, {    name: "selectSubWordRight",    exec: function(editor) {        moveBySubWords(editor, 1, true);    },    multiSelectAction: "forEach",    scrollIntoView: "cursor",    readOnly: true}, {    name: "selectSubWordLeft",    exec: function(editor) {        moveBySubWords(editor, -1, true);    },    multiSelectAction: "forEach",    scrollIntoView: "cursor",    readOnly: true}, {    name: "moveSubWordRight",    exec: function(editor) {        moveBySubWords(editor, 1);    },    multiSelectAction: "forEach",    scrollIntoView: "cursor",    readOnly: true}, {    name: "moveSubWordLeft",    exec: function(editor) {        moveBySubWords(editor, -1);    },    multiSelectAction: "forEach",    scrollIntoView: "cursor",    readOnly: true}]);[{    bindKey: { mac: "cmd-k cmd-backspace|cmd-backspace", win: "ctrl-shift-backspace|ctrl-k ctrl-backspace" },    name: "removetolinestarthard"}, {    bindKey: { mac: "cmd-k cmd-k|cmd-delete|ctrl-k", win: "ctrl-shift-delete|ctrl-k ctrl-k" },    name: "removetolineendhard"}, {    bindKey: { mac: "cmd-shift-d", win: "ctrl-shift-d" },    name: "duplicateSelection"}, {    bindKey: { mac: "cmd-l", win: "ctrl-l" },    name: "expandtoline"}, {    bindKey: {mac: "cmd-shift-a", win: "ctrl-shift-a"},    name: "expandSelection",    args: {to: "tag"}}, {    bindKey: {mac: "cmd-shift-j", win: "ctrl-shift-j"},    name: "expandSelection",    args: {to: "indentation"}}, {    bindKey: {mac: "ctrl-shift-m", win: "ctrl-shift-m"},    name: "expandSelection",    args: {to: "brackets"}}, {    bindKey: {mac: "cmd-shift-space", win: "ctrl-shift-space"},    name: "expandSelection",    args: {to: "scope"}},{    bindKey: { mac: "ctrl-cmd-g", win: "alt-f3" },    name: "find_all_under"}, {    bindKey: { mac: "alt-cmd-g", win: "ctrl-f3" },    name: "find_under"}, {    bindKey: { mac: "shift-alt-cmd-g", win: "ctrl-shift-f3" },    name: "find_under_prev"}, {    bindKey: { mac: "cmd-g", win: "f3" },    name: "findnext"}, {    bindKey: { mac: "shift-cmd-g", win: "shift-f3" },    name: "findprevious"}, {    bindKey: { mac: "cmd-d", win: "ctrl-d" },    name: "find_under_expand"}, {    bindKey: { mac: "cmd-k cmd-d", win: "ctrl-k ctrl-d" },    name: "find_under_expand_skip"}, {    bindKey: { mac: "cmd-alt-[", win: "ctrl-shift-[" },    name: "toggleFoldWidget"}, {    bindKey: { mac: "cmd-alt-]", win: "ctrl-shift-]" },    name: "unfold"}, {    bindKey: { mac: "cmd-k cmd-0|cmd-k cmd-j", win: "ctrl-k ctrl-0|ctrl-k ctrl-j" },    name: "unfoldall"}, {    bindKey: { mac: "cmd-k cmd-1", win: "ctrl-k ctrl-1" },    name: "foldOther",    args: { level: 1 }},{    bindKey: { win: "ctrl-left", mac: "alt-left" },    name: "moveToWordStartLeft"}, {    bindKey: { win: "ctrl-right", mac: "alt-right" },    name: "moveToWordEndRight"}, {    bindKey: { win: "ctrl-shift-left", mac: "alt-shift-left" },    name: "selectToWordStartLeft"}, {    bindKey: { win: "ctrl-shift-right", mac: "alt-shift-right" },    name: "selectToWordEndRight"}, {    bindKey: {mac: "ctrl-alt-shift-right|ctrl-shift-right", win: "alt-shift-right"},    name: "selectSubWordRight"}, {    bindKey: {mac: "ctrl-alt-shift-left|ctrl-shift-left", win: "alt-shift-left"},    name: "selectSubWordLeft"}, {    bindKey: {mac: "ctrl-alt-right|ctrl-right", win: "alt-right"},    name: "moveSubWordRight"}, {    bindKey: {mac: "ctrl-alt-left|ctrl-left", win: "alt-left"},    name: "moveSubWordLeft"}, {    bindKey: { mac: "ctrl-m", win: "ctrl-m" },    name: "jumptomatching",    args: { to: "brackets" }}, {    bindKey: { mac: "ctrl-f6", win: "ctrl-f6" },    name: "goToNextError"}, {    bindKey: { mac: "ctrl-shift-f6", win: "ctrl-shift-f6" },    name: "goToPreviousError"},{    bindKey: { mac: "ctrl-o" },    name: "splitline"}, {    bindKey: {mac: "ctrl-shift-w", win: "alt-shift-w"},    name: "surrowndWithTag"},{    bindKey: {mac: "cmd-alt-.", win: "alt-."},    name: "close_tag"}, {    bindKey: { mac: "cmd-j", win: "ctrl-j" },    name: "joinlines"}, {    bindKey: {mac: "ctrl--", win: "alt--"},    name: "jumpBack"}, {    bindKey: {mac: "ctrl-shift--", win: "alt-shift--"},    name: "jumpForward"}, {    bindKey: { mac: "cmd-k cmd-l", win: "ctrl-k ctrl-l" },    name: "tolowercase"}, {    bindKey: { mac: "cmd-k cmd-u", win: "ctrl-k ctrl-u" },    name: "touppercase"}, {    bindKey: {mac: "cmd-shift-v", win: "ctrl-shift-v"},    name: "paste_and_indent"}, {    bindKey: {mac: "cmd-k cmd-v|cmd-alt-v", win: "ctrl-k ctrl-v"},    name: "paste_from_history"}, {    bindKey: { mac: "cmd-shift-enter", win: "ctrl-shift-enter" },    name: "addLineBefore"}, {    bindKey: { mac: "cmd-enter", win: "ctrl-enter" },    name: "addLineAfter"}, {    bindKey: { mac: "ctrl-shift-k", win: "ctrl-shift-k" },    name: "removeline"}, {    bindKey: { mac: "ctrl-alt-up", win: "ctrl-up" },    name: "scrollup"}, {    bindKey: { mac: "ctrl-alt-down", win: "ctrl-down" },    name: "scrolldown"}, {    bindKey: { mac: "cmd-a", win: "ctrl-a" },    name: "selectall"}, {    bindKey: { linux: "alt-shift-down", mac: "ctrl-shift-down", win: "ctrl-alt-down" },    name: "addCursorBelow"}, {    bindKey: { linux: "alt-shift-up", mac: "ctrl-shift-up", win: "ctrl-alt-up" },    name: "addCursorAbove"},{    bindKey: { mac: "cmd-k cmd-c|ctrl-l", win: "ctrl-k ctrl-c" },    name: "centerselection"}, {    bindKey: { mac: "f5", win: "f9" },    name: "sortlines"}, {    bindKey: {mac: "ctrl-f5", win: "ctrl-f9"},    name: "sortlines",    args: {caseSensitive: true}},{    bindKey: { mac: "cmd-shift-l", win: "ctrl-shift-l" },    name: "splitSelectionIntoLines"}, {    bindKey: { mac: "ctrl-cmd-down", win: "ctrl-shift-down" },    name: "movelinesdown"}, {    bindKey: { mac: "ctrl-cmd-up", win: "ctrl-shift-up" },    name: "movelinesup"}, {    bindKey: { mac: "alt-down", win: "alt-down" },    name: "modifyNumberDown"}, {    bindKey: { mac: "alt-up", win: "alt-up" },    name: "modifyNumberUp"}, {    bindKey: { mac: "cmd-/", win: "ctrl-/" },    name: "togglecomment"}, {    bindKey: { mac: "cmd-alt-/", win: "ctrl-shift-/" },    name: "toggleBlockComment"},{    bindKey: { linux: "ctrl-alt-q", mac: "ctrl-q", win: "ctrl-q" },    name: "togglerecording"}, {    bindKey: { linux: "ctrl-alt-shift-q", mac: "ctrl-shift-q", win: "ctrl-shift-q" },    name: "replaymacro"}, {    bindKey: { mac: "ctrl-t", win: "ctrl-t" },    name: "transpose"}].forEach(function(binding) {    var command = exports.handler.commands[binding.name];    if (command)        command.bindKey = binding.bindKey;    exports.handler.bindKey(binding.bindKey, command || binding.name);});});                (function() {                    ace.require(["ace/keyboard/sublime"], function(m) {                        if (typeof module == "object" && typeof exports == "object" && module) {                            module.exports = m;                        }                    });                })();            
 |