/** * jQuery EasyUI 1.3.6 * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved. * * Licensed under the GPL or commercial licenses * To use it on other terms please contact author: info@jeasyui.com * http://www.gnu.org/licenses/gpl.txt * http://www.jeasyui.com/license_commercial.php * * jQuery EasyUI CodeMirror Plugin Extensions 1.0 beta * jQuery EasyUI CodeMirror 插件扩展 * jquery.codemirror.js * 二次开发 流云 * 最近更新:2014-06-17 * * 依赖项: * 1、jquery.jdirk.js v1.0 beta late * 2、jeasyui.extensions.js v1.0 beta late * 3、codemirror-4.2/lib/codemirror.css * 4、codemirror-4.2/lib/codemirror.js * 5、codemirror-4.2/mode/xml/xml.js * 6、codemirror-4.2/mode/javascript/javascript.js * 7、codemirror-4.2/mode/vbscript/vbscript.js * 8、codemirror-4.2/mode/css/css.js * 9、codemirror-4.2/mode/htmlmixed/htmlmixed.js * * Copyright (c) 2013-2014 ChenJianwei personal All rights reserved. * http://www.chenjianwei.org */ (function ($, undefined) { function create(target) { var t = $(target).addClass("codemirror-f"), isDiv = /^(?:div)$/i.test(target.nodeName), isText = /^(?:textarea)$/i.test(target.nodeName), html = isText ? (t.val() || t.text()) : t.html(), state = $.data(target, "codemirror"), opts = state.options, name = t.attr("name"), id = state.codemirrorId = "codemirror_" + $.util.guid("N"), panel = state.panel = isDiv ? t.addClass("codemirror-panel").empty() : $("
").insertAfter(t.hide().empty()).append(t), panelId = state.panelId = panel.attr("id"), textarea = state.textarea = $("").appendTo(panel); if (name) { t.attr("codemirrorName", name).removeAttr("name"); } opts.originalValue = html || opts.value; if (opts.originalValue) { textarea.val(opts.originalValue); } if (!panelId) { panel.attr("id", panelId = state.panelId = "codemirror_panel_" + $.util.guid("N")); } if (opts.fontSize || opts.lineHeight) { state.style = $.util.addCss("#" + panelId + " .CodeMirror { " + (opts.fontSize ? "font-size: " + opts.fontSize + ";" : "") + (opts.lineHeight ? "line-height: " + opts.lineHeight + ";" : "") + " }").appendTo(panel); } var param = $.extend({}, opts); if (opts.disabled) { param.readOnly = "nocursor"; } state.cm = CodeMirror.fromTextArea(textarea[0], param); state.doc = state.cm.getDoc(); panel.panel($.extend({}, opts, { onResize: function (width, height) { $.fn.panel.defaults.onResize.apply(this, arguments); $.extend(opts, { width: width, height: height }); var size = textarea._fit(); state.cm.setSize(size.width, size.height); if ($.isFunction(opts.onResize)) { opts.onResize.apply(target, arguments); } }, loader: $.fn.panel.defaults.loader, id: panelId })); state.wrapper = panel.panel("body").addClass("codemirror-wrapper"); initialEvents(target); setDisabled(target, opts.disabled); setValidation(target); }; function initialEvents(target) { var state = $.data(target, "codemirror"), opts = state.options; $.each($.fn.codemirror.events, function (i, n) { var eventName = "on" + n, e = opts[eventName]; state.cm.on(n, function () { if (n == "change") { var val = opts.value = $(target).codemirror("getValue"); //state.textarea.text(val); state.textarea.val(val); } if ($.isFunction(e)) { return e.apply(target, arguments); } }); }); }; function getOptions(target) { var state = $.data(target, "codemirror"), opts = state.panel.panel("options"); return $.extend(state.options, { title: opts.title, iconCls: opts.iconCls, width: opts.width, height: opts.height, left: opts.left, top: opts.top, cls: opts.cls, headerCls: opts.headerCls, bodyCls: opts.bodyCls, style: opts.style, fit: opts.fit, border: opts.border, doSize: opts.doSize, noheader: opts.noheader, collapsible: opts.collapsible, minimizable: opts.minimizable, maximizable: opts.maximizable, closable: opts.closable, collapsed: opts.collapsed, minimized: opts.minimized, maximized: opts.maximized, closed: opts.closed }); }; function resize(target, param) { var state = $.data(target, "codemirror"); return state.panel.panel("resize", param); }; function destroy(target) { var t = $(target), state = $.data(target, "codemirror"); state.cm.toTextArea(); state.panel.panel("destroy"); if (state.style) { state.style.remove(); } t.remove(); }; function show(target) { var state = $.data(target, "codemirror"); state.panel.panel("open"); return $(target).codemirror("options"); }; function hide(target) { var state = $.data(target, "codemirror"); state.panel.panel("close"); return $(target).codemirror("options"); }; function setDisabled(target, disabled) { var state = $.data(target, "codemirror"), opts = state.options, d = disabled ? true : false; state.panel[d ? "addClass" : "removeClass"]("codemirror-disabled"); state.cm.setOption("disabled", d); state.cm.setOption("readOnly", d); opts.readOnly = d; opts.disabled = d; }; function getValue(target, separator) { var state = $.data(target, "codemirror"); return state.doc.getValue(separator); }; function setValue(target, value) { var state = $.data(target, "codemirror"); return state.doc.setValue(value); }; function reset(target) { var state = $.data(target, "codemirror"), opts = state.options; return state.doc.setValue(opts.originalValue); }; function focus(target) { var state = $.data(target, "codemirror"); return state.cm.focus(); }; function clear(target) { var state = $.data(target, "codemirror"); return state.doc.setValue(""); }; function getRange(target, param) { if (!param || !param.from || !param.to) { return; } var state = $.data(target, "codemirror"); return param.separator ? state.doc.getRange(param.from, param.to, param.separator) : state.doc.getRange(param.from, param.to); }; function replaceRange(target, param) { if (!param || !param.replacement || !param.from || !param.to) { return; } var state = $.data(target, "codemirror"); return param.origin ? state.doc.replaceRange(param.replacement, param.from, param.to, param.origin) : state.doc.replaceRange(param.replacement, param.from, param.to); }; function getLine(target, index) { return $.data(target, "codemirror").doc.getLine(index); }; function lineCount(target) { return $.data(target, "codemirror").doc.lineCount(); }; function firstline(target) { return $.data(target, "codemirror").doc.firstline(); }; function lastLine(target) { return $.data(target, "codemirror").doc.lastLine(); }; function getLineHandle(target, index) { return $.data(target, "codemirror").doc.getLineHandle(index); }; function getLineNumber(target, handle) { return $.data(target, "codemirror").doc.getLineNumber(handle); }; function eachLine(target, param) { if (!param) { return; } var state = $.data(target, "codemirror"), isFunc = $.isFunction(param); return isFunc ? state.doc.eachLine(param) : state.doc.eachLine(param.start, param.end, param.f); }; function markClean(target) { return $.data(target, "codemirror").doc.markClean(); }; function changeGeneration(target, closeEvent) { var state = $.data(target, "codemirror"); closeEvent = closeEvent ? true : false; return state.doc.changeGeneration(closeEvent); }; function isClean(target, generation) { var state = $.data(target, "codemirror"), isNumber = $.isNumeric(generation); return isNumber ? state.doc.isClean(generation) : state.doc.isClean(); }; function getSelection(target, lineSep) { var state = $.data(target, "codemirror"); return lineSep ? state.doc.getSelection(lineSep) : state.doc.getSelection(); }; function getSelections(target, lineSep) { var state = $.data(target, "codemirror"); return lineSep ? state.doc.getSelections(lineSep) : state.doc.getSelections(); }; function replaceSelection(replacement, select) { if (!param || !param.replacement) { return; } var state = $.data(target, "codemirror"); return param.select ? state.doc.replaceSelection(param.replacement, param.select) : state.doc.replaceSelection(param.replacement); }; function replaceSelections(replacement, select) { if (!param || !param.replacements) { return; } var state = $.data(target, "codemirror"); return param.select ? state.doc.replaceSelections(param.replacements, param.select) : state.doc.replaceSelections(param.replacements); }; function getCursor(target, start) { var state = $.data(target, "codemirror"); return start ? state.doc.getCursor(start) : state.doc.getCursor(); }; function listSelections(target) { return $.data(target, "codemirror").doc.listSelections(); }; function somethingSelected(target) { return $.data(target, "codemirror").doc.somethingSelected(); }; function setCursor(target, param) { if (!param || !param.pos) { return; } var state = $.data(target, "codemirror"); return state.doc.setCursor(param.pos, param.ch, param.options); }; function setSelection(target, param) { if (!param || !param.anchor) { return; } var state = $.data(target, "codemirror"); return state.doc.setSelection(param.anchor, param.head, param.options); }; function setSelections(target, param) { if (!param || !param.ranges) { return; } var state = $.data(target, "codemirror"); return state.doc.setSelections(param.ranges, param.primary, param.options); }; function addSelection(target, param) { if (!param || !param.anchor) { return; } var state = $.data(target, "codemirror"); return state.doc.addSelection(param.anchor, param.head); }; function extendSelection(target, param) { if (!param || !param.from) { return; } var state = $.data(target, "codemirror"); return state.doc.extendSelection(param.from, param.to, param.options); }; function extendSelections(target, param) { if (!param || !param.heads) { return; } var state = $.data(target, "codemirror"); return state.doc.extendSelections(param.heads, param.options); }; function extendSelectionsBy(target, param) { if (!param || !$.isFunction(param.f)) { return; } var state = $.data(target, "codemirror"); return state.doc.extendSelectionsBy(param.f, param.options); }; function setExtending(target, value) { return $.data(target, "codemirror").doc.setExtending(value); }; function getExtending(target) { return $.data(target, "codemirror").doc.getExtending(); }; function hasFocus(target) { return $.data(target, "codemirror").cm.hasFocus(); }; function findPosH(target, param) { if (!param || !param.start || !param.amount || !param.unit || !param.visually) { return; } var state = $.data(target, "codemirror"); return state.cm.findPosH(param.start, param.amount, param.unit, param.visually); }; function findPosV(target, param) { if (!param || !param.start || !param.amount || !param.unit) { return; } var state = $.data(target, "codemirror"); return state.cm.findPosV(param.start, param.amount, param.unit); }; function setOption(target, param) { if (!param || !param.option) { return; } var state = $.data(target, "codemirror"); return state.cm.setOption(param.option, param.value); } function getOption(target, option) { if (!option) { return; } return $.data(target, "codemirror").cm.getOption(option); }; function addKeyMap(target, param) { if (!param || !param.map) { return; } return $.data(target, "codemirror").cm.addKeyMap(param.map, param.bottom); }; function removeKeyMap(target, map) { return $.data(target, "codemirror").cm.removeKeyMap(map); }; function addOverlay(target, param) { if (!param || !param.mode) { return; } return $.data(target, "codemirror").cm.addOverlay(param.mode, param.options); }; function removeOverlay(target, mode) { return $.data(target, "codemirror").cm.removeOverlay(mode); }; function on(target, param) { if (!param || !param.type || !param.func) { return; } return $.data(target, "codemirror").cm.on(param.type, param.func); }; function off(target, param) { if (!param || !param.type || !param.func) { return; } return $.data(target, "codemirror").cm.off(param.type, param.func); }; function swapDoc(target, doc) { if (!doc) { return; } return $.data(target, "codemirror").cm.swapDoc(doc); }; function copy(target, copyHistory) { return $.data(target, "codemirror").doc.target(copyHistory); }; function linkedDoc(target, param) { return $.data(target, "codemirror").doc.linkedDoc(param); }; function unlinkDoc(target, doc) { return $.data(target, "codemirror").doc.unlinkDoc(doc); }; function iterLinkedDocs(target, f) { if (!$.isFunction(f)) { return; } return $.data(target, "codemirror").doc.iterLinkedDocs(f); }; function undo(target) { return $.data(target, "codemirror").doc.undo(); }; function redo(target) { return $.data(target, "codemirror").doc.redo(); }; function undoSelection(target) { return $.data(target, "codemirror").doc.undoSelection(); }; function redoSelection(target) { return $.data(target, "codemirror").doc.redoSelection(); }; function historySize(target) { return $.data(target, "codemirror").doc.historySize(); }; function clearHistory(target) { return $.data(target, "codemirror").doc.clearHistory(); }; function getHistory(target) { return $.data(target, "codemirror").doc.getHistory(); }; function setHistory(target, history) { return $.data(target, "codemirror").doc.setHistory(history); }; function markText(target, param) { if (!param || !param.from || !param.to) { return; } return param.options ? $.data(target, "codemirror").doc.markText(param.from, param.to, param.options) : $.data(target, "codemirror").doc.markText(param.from, param.to); }; function setBookmark(target, param) { if (!param || !param.pos) { return; } return param.options ? $.data(target, "codemirror").doc.setBookmark(param.pos, param.options) : $.data(target, "codemirror").doc.setBookmark(param.pos); }; function findMarks(target, param) { if (!param || !param.from || !param.to) { return; } return $.data(target, "codemirror").doc.findMarks(param.from, param.to); }; function findMarksAt(target, pos) { return $.data(target, "codemirror").doc.findMarksAt(pos); }; function getAllMarks(target) { return $.data(target, "codemirror").doc.getAllMarks(); }; function setGutterMarker(target, param) { if (!param || !param.line || !param.gutterID || !param.value) { return; } return $.data(target, "codemirror").cm.setGutterMarker(param.line, param.gutterID, param.value); }; function clearGutter(target, gutterID) { return $.data(target, "codemirror").cm.clearGutter(gutterID); }; function addLineClass(target, param) { if (!param || !param.line || !param.where || !param.cls) { return; } return $.data(target, "codemirror").cm.addLineClass(param.line, param.where, param.cls); }; function removeLineClass(target, param) { if (!param || !param.line || !param.where || !param.cls) { return; } return $.data(target, "codemirror").cm.removeLineClass(param.line, param.where, param.cls); }; function lineInfo(target, line) { return $.data(target, "codemirror").cm.lineInfo(line); }; function addWidget(target, param) { if (!param || !param.pos || !param.node || !param.scrollIntoView) { return; } return $.data(target, "codemirror").cm.addWidget(param.pos, param.node, param.scrollIntoView); }; function addLineWidget(target, param) { if (!param || !param.line || !param.node) { return; } return param.options ? $.data(target, "codemirror").cm.addLineWidget(param.line, param.node, param.options) : $.data(target, "codemirror").cm.addLineWidget(param.line, param.node); }; function scrollTo(target, param) { if (!param || !param.width || !param.height) { return; } return $.data(target, "codemirror").cm.scrollTo(param.width, param.height); }; function getScrollInfo(target) { return $.data(target, "codemirror").cm.getScrollInfo(); }; function scrollIntoView(target, param) { if (!param || !param.what || !param.height) { return; } return $.data(target, "codemirror").cm.scrollIntoView(param.what, param.margin); }; function cursorCoords(target, param) { if (!param || !param.where || !param.mode) { return; } return $.data(target, "codemirror").cm.cursorCoords(param.where, param.mode); }; function charCoords(target, param) { if (!param || !param.pos) { return; } return param.mode ? $.data(target, "codemirror").cm.charCoords(param.pos, param.mode) : $.data(target, "codemirror").cm.charCoords(param.pos); }; function coordsChar(target, param) { if (!param || !param.line) { return; } return param.mode ? $.data(target, "codemirror").cm.coordsChar(param.line, param.mode) : $.data(target, "codemirror").cm.coordsChar(); }; function lineAtHeight(target, param) { if (!param || !param.object) { return; } return param.mode ? $.data(target, "codemirror").cm.lineAtHeight(param.object, param.mode) : $.data(target, "codemirror").cm.lineAtHeight(param.object); }; function heightAtLine(target, param) { if (!param || !param.height) { return; } return param.mode ? $.data(target, "codemirror").cm.heightAtLine(param.height, param.mode) : $.data(target, "codemirror").cm.heightAtLine(param.height); }; function defaultTextHeight(target) { return $.data(target, "codemirror").cm.defaultTextHeight(); }; function defaultCharWidth(target) { return $.data(target, "codemirror").cm.defaultCharWidth(); }; function getViewport(target) { return $.data(target, "codemirror").cm.getViewport(); }; function getTokenAt(target, param) { if (!param || !param.pos) { return; } return $.data(target, "codemirror").doc.getTokenAt(param.pos, param.precise); }; function getHelpers(target, param) { if (!param || !param.pos || !param.type) { return; } return $.data(target, "codemirror").doc.getHelpers(param.pos, param.type); }; function getHelper(target, param) { if (!param || !param.pos || !param.type) { return; } return $.data(target, "codemirror").doc.getHelper(param.pos, param.type); }; function getStateAfter(target, param) { return $.data(target, "codemirror").cm.getStateAfter(param.line, param.precise); }; function indentLine(target, param) { if (!param || !param.line) { return; } return $.data(target, "codemirror").cm.indentLine(param.line, param.dir); }; function toggleOverwrite(target, value) { return $.data(target, "codemirror").cm.toggleOverwrite(value); }; function execCommand(target, name) { return $.data(target, "codemirror").cm.execCommand(name); }; function posFromIndex(target, index) { return $.data(target, "codemirror").doc.posFromIndex(index); }; function indexFromPos(target, param) { return $.data(target, "codemirror").doc.indexFromPos(param); }; function getInputField(target) { return $.data(target, "codemirror").cm.getInputField(); }; function getWrapperElement(target) { return $.data(target, "codemirror").cm.getWrapperElement(); }; function getScrollerElement(target) { return $.data(target, "codemirror").cm.getScrollerElement(); }; function getGutterElement(target) { return $.data(target, "codemirror").cm.getGutterElement(); }; function hideTip(target) { var state = $.data(target, "codemirror"); state.tip = false; state.wrapper.tooltip("hide"); }; function showTip(target) { var state = $.data(target, "codemirror"), opts = state.options; state.wrapper.tooltip($.extend({}, opts.tipOptions, { content: opts.missingMessage, position: opts.tipPosition, deltaX: opts.deltaX })).tooltip("show"); state.tip = true; }; function repositionTip(target) { var state = $.data(target, "codemirror"); if (state && state.tip) { state.wrapper.tooltip("reposition"); } }; function initializeValidate(target) { var t = $(target), state = $.data(target, "codemirror"), opts = state.options; state.wrapper.unbind(".codemirror"); if (opts.novalidate) { return; } state.wrapper.bind("focus.codemirror", function () { state.validating = true; state.value = undefined; (function () { if (state.validating) { var value = t.codemirror("getValue"); if (state.value != value) { state.value = value; if (state.timer) { clearTimeout(state.timer); } state.timer = setTimeout(function () { t.codemirror("validate"); }, opts.delay); } else { repositionTip(target); } setTimeout(arguments.callee, 200); } })(); }).bind("blur.codemirror", function () { if (state.timer) { clearTimeout(state.timer); state.timer = undefined; } state.validating = false; hideTip(target); }).bind("mouseenter.codemirror", function () { if (state.wrapper.hasClass("codemirror-invalid")) { showTip(target); } }).bind("mouseleave.codemirror", function () { if (!state.validating) { hideTip(target); } }); }; function validate(target) { var t = $(target), state = $.data(target, "codemirror"), opts = state.options, value = t.codemirror("getValue"); state.wrapper.removeClass("codemirror-invalid"); hideTip(target); if (!opts.novalidate && opts.required && $.string.isNullOrWhiteSpace(value) && !t.is(":disabled") && !state.wrapper.hasClass("codemirror-disabled")) { state.wrapper.addClass("codemirror-invalid"); if (state.validating) { showTip(target); } return false; } return true; }; function setValidation(target, novalidate) { var state = $.data(target, "codemirror"), opts = state.options; if (novalidate != undefined && novalidate != null) { opts.novalidate = novalidate; } if (opts.novalidate) { state.wrapper.removeClass("codemirror-invalid"); hideTip(target); } initializeValidate(target); }; function loader(param, success, error) { var opts = $(this).codemirror("options"); if (!opts.url) { return false; } $.ajax({ type: opts.method, url: opts.url, data: param, dataType: "text", success: function (data) { success(data); }, error: function () { error.apply(this, arguments); } }); }; function ajaxRequest(target) { var state = $.data(target, "codemirror"), opts = state.options, param = $.extend({}, opts.queryParams); if (opts.url && opts.onBeforeLoad.call(target, param) != false) { opts.loader.call(target, param, function (data) { setValue(target, opts.loadFilter.call(target, data)); opts.onLoad.apply(target, arguments); }, function () { opts.onLoadError.apply(this, arguments); }); } state.cm.refresh(); }; function refresh(target, url) { var state = $.data(target, "codemirror"), opts = state.options; if (url) { if (typeof url == "string") { opts.url = url; } else { opts.queryParams = url; } } ajaxRequest(target); }; $.fn.codemirror = function (options, param) { if (typeof options == "string") { var method = $.fn.codemirror.methods[options]; if (method) { return method(this, param); } else { return this.codemirror("panel").panel(options, param); } } options = options || {}; return this.each(function () { var state = $.data(this, "codemirror"); if (state) { $.extend(state.options, options); } else { $.data(this, "codemirror", { options: $.extend({}, $.fn.codemirror.defaults, $.fn.codemirror.parseOptions(this), options) }); create(this); } ajaxRequest(this); }); }; // var cm = CodeMirror.fromTextArea("#t1"); $.fn.codemirror.events = [ "change", "changes", "beforeChange", "cursorActivity", "keyHandled", "inputRead", "beforeSelectionChange", "viewportChange", "swapDoc", "gutterClick", "gutterContextMenu", "focus", "blur", "scroll", "update", "renderLine", "mousedown", "dblclick", "contextmenu", "keydown", "keypress", "keyup", "dragstart", "dragenter", "dragover", "drop" ]; /* $.fn.codemirror.properties = [ //string "width", "height", "value", "mode", "theme", "keyMap", //boolean "fit", "disabled", "smartIndent", "indentWithTabs", "electricChars", "rtlMoveVisually", "lineWrapping", "lineNumbers", "fixedGutter", "coverGutterNextToScrollbar", "readOnly", "showCursorWhenSelecting", "autofocus", "dragDrop", "resetSelectionOnContextMenu", "flattenSpans", "addModeClass", //number "indentUnit", "tabSize", "firstLineNumber", "undoDepth", "historyEventDelay", "tabindex", "cursorBlinkRate", "cursorScrollMargin", "cursorHeight", "workTime", "workDelay", "pollInterval", "maxHighlightLength", "viewportMargin" ]; // var doc = cm.getDoc(); $.fn.codemirror.documentEvents = [ "change", "beforeChange", "cursorActivity", "beforeSelectionChange" ]; // var handle = doc.getLineHandle(num: integer); $.fn.codemirror.lineHandlerEvents = [ "delete", "change" ]; // var mark = doc.setBookmark(pos: {line, ch}, ?options: object); $.fn.codemirror.markedRangHandlerEvents = [ "beforeCursorEnter", "clear", "hide", "unhide" ]; // var widget = cm.addLineWidget(line: integer|LineHandle, node: Element, ?options: object); $.fn.codemirror.lineWidgetEvents = [ "redraw" ]; $.fn.codemirror.docMethods = [ "getValue", "setValue", "getRange", "replaceRange", "getLine", "lineCount", "firstLine", "lastLine", "getLineHandle", "getLineNumber", "eachLine", "markClean", "changeGeneration", "isClean", "getSelection", "getSelections", "replaceSelection", "replaceSelections", "getCursor", "listSelections", "somethingSelected", "setCursor", "setSelection", "setSelections", "addSelection", "extendSelection", "extendSelections", "extendSelectionsBy", "setExtending", "getExtending", "getEditor", "copy", "linkedDoc", "unlinkDoc", "iterLinkedDocs", "undo", "redo", "undoSelection", "redoSelection", "historySize", "clearHistory", "getHistory", "setHistory", "markText", "setBookmark", "findMarks", "findMarksAt", "getAllMarks", "getMode", "getModeAt", "posFromIndex", "indexFromPos", ]; $.fn.codemirror.cmMethods = [ "hasFocus", "findPosH", "findPosV", "setOption", "getOption", "addKeyMap", "removeKeyMap", "addOverlay", "removeOverlay", "on", "off", "getDoc", "swapDoc", "setGutterMarker", "clearGutter", "addLineClass", "removeLineClass", "lineInfo", "addWidget", "addLineWidget", "setSize", "scrollTo", "getScrollInfo", "scrollIntoView", "cursorCoords", "charCoords", "coordsChar", "lineAtHeight", "heightAtLine", "defaultTextHeight", "defaultCharWidth", "getViewport", "refresh", "getTokenAt", "getTokenTypeAt", "getHelpers", "getHelper", "getStateAfter", "operation", "indentLine", "toggleOverwrite", "execCommand", "focus", "getInputField", "getWrapperElement", "getScrollerElement", "getGutterElement" ]; */ $.fn.codemirror.parseOptions = function (target) { return $.extend({}, $.fn.panel.parseOptions(target), $.parser.parseOptions(target, [ "width", "height", "value", "mode", "theme", "keyMap", "fontSize", "lineHeight", "url", "missingMessage", "tipPosition", { fit: "boolean", disabled: "boolean", smartIndent: "boolean", indentWithTabs: "boolean", electricChars: "boolean", rtlMoveVisually: "boolean", lineWrapping: "boolean", lineNumbers: "boolean", fixedGutter: "boolean", coverGutterNextToScrollbar: "boolean", readOnly: "boolean", showCursorWhenSelecting: "boolean", autofocus: "boolean", dragDrop: "boolean", resetSelectionOnContextMenu: "boolean", flattenSpans: "boolean", addModeClass: "boolean", required: "boolean", novalidate: "boolean" }, { indentUnit: "number", tabSize: "number", firstLineNumber: "number", undoDepth: "number", historyEventDelay: "number", tabindex: "number", cursorBlinkRate: "number", cursorScrollMargin: "number", cursorHeight: "number", workTime: "number", workDelay: "number", pollInterval: "number", maxHighlightLength: "number", viewportMargin: "number", deltaX: "number" } ])); }; $.fn.codemirror.methods = { options: function (jq) { return getOptions(jq[0]); }, panel: function (jq) { return $.data(jq[0], "codemirror").panel; }, textarea: function (jq) { return $.data(jq[0], "codemirror").textarea; }, cm: function (jq) { return $.data(jq[0], "codemirror").cm; }, doc: function (jq) { return $.data(jq[0], "codemirror").doc; }, // 设置 CodeMirror 代码编辑器大小,参数 size 是一个格式为 { width: number, height: number } 的 JSON-Object。 resize: function (jq, size) { return jq.each(function () { resize(this, size); }); }, // 销毁编辑器实例 destroy: function (jq) { return jq.each(function () { destroy(this); }); }, // show: function (jq) { return jq.each(function () { show(this); }); }, // hide: function (jq) { return jq.each(function () { hide(this); }); }, // enable: function (jq) { return jq.each(function () { setDisabled(this, false); }); }, // disable: function (jq) { return jq.each(function () { setDisabled(this, true); }); }, // getValue: function (jq, separator) { return getValue(jq[0], separator); }, // setValue: function (jq, value) { return jq.each(function () { setValue(this, value); }); }, // reset: function (jq) { return jq.each(function () { reset(this); }); }, // focus: function (jq) { return jq.each(function () { focus(this); }); }, // setFocus: function (jq) { return jq.each(function () { focus(this); }); }, // 清空文档 clear: function (jq) { return jq.each(function () { clear(this); }); }, // refresh: function (jq, url) { return jq.each(function () { refresh(this, url); }); }, // param: { from: {line, ch}, to: {line, ch}, ?separator: string } getRange: function (jq, param) { return getRange(jq[0], param); }, // param: { replacement: string, from: {line, ch}, to: {line, ch}, ?origin: string } replaceRange: function (jq, param) { return jq.each(function () { replaceRange(this, param); }); }, getLine: function (jq, index) { return getLine(jq[0], index); }, lineCount: function (jq) { return lineCount(jq[0]); }, lastLine: function (jq) { return lastLine(jq[0]); }, getLineHandle: function (jq, index) { return getLineHandle(jq[0], index); }, getLineNumber: function (jq, handle) { return getLineNumber(jq[0], handle); }, // param: function(line:LineHandler) | { start: integer, end: integer, f: (line: LineHandle) } eachLine: function (jq, param) { return jq.each(function () { eachLine(this, param); }); }, markClean: function (jq) { return jq.each(function () { markClean(this); }); }, changeGeneration: function (jq, closeEvent) { return changeGeneration(jq[0], closeEvent); }, isClean: function (jq, generation) { return isClean(jq[0], generation); }, getSelection: function (jq, lineSep) { return getSelection(jq[0], lineSep); }, getSelections: function (jq, lineSep) { return getSelections(jq[0], lineSep); }, // param: { replacement: string, ?select: string } replaceSelection: function (jq, param) { return jq.each(function () { replaceSelection(this, param); }); }, // param: { replacements: array