|
114 | 114 | }); |
115 | 115 | }; |
116 | 116 |
|
| 117 | + /** |
| 118 | + * The state of CodeMirror at the given position. |
| 119 | + * https://github.com/lepture/editor |
| 120 | + */ |
| 121 | + var getState = function(cm, pos) { |
| 122 | + pos = pos || cm.getCursor('start'); |
| 123 | + var stat = cm.getTokenAt(pos); |
| 124 | + if (!stat.type) return {}; |
| 125 | + |
| 126 | + var types = stat.type.split(' '); |
| 127 | + |
| 128 | + var ret = {}, data, text; |
| 129 | + for (var i = 0; i < types.length; i++) { |
| 130 | + data = types[i]; |
| 131 | + if (data === 'strong') { |
| 132 | + ret.bold = true; |
| 133 | + } else if (data === 'variable-2') { |
| 134 | + text = cm.getLine(pos.line); |
| 135 | + if (/^\s*\d+\.\s/.test(text)) { |
| 136 | + ret['ordered-list'] = true; |
| 137 | + } else { |
| 138 | + ret['unordered-list'] = true; |
| 139 | + } |
| 140 | + } else if (data === 'atom') { |
| 141 | + ret.quote = true; |
| 142 | + } else if (data === 'em') { |
| 143 | + ret.italic = true; |
| 144 | + } |
| 145 | + } |
| 146 | + return ret; |
| 147 | + } |
| 148 | + |
| 149 | + var replaceSelection = function(cm, active, start, end) { |
| 150 | + var text; |
| 151 | + var startPoint = cm.getCursor('start'); |
| 152 | + var endPoint = cm.getCursor('end'); |
| 153 | + if (active) { |
| 154 | + text = cm.getLine(startPoint.line); |
| 155 | + start = text.slice(0, startPoint.ch); |
| 156 | + end = text.slice(startPoint.ch); |
| 157 | + cm.setLine(startPoint.line, start + end); |
| 158 | + } else { |
| 159 | + text = cm.getSelection(); |
| 160 | + cm.replaceSelection(start + text + end); |
| 161 | + |
| 162 | + startPoint.ch += start.length; |
| 163 | + endPoint.ch += start.length; |
| 164 | + } |
| 165 | + cm.setSelection(startPoint, endPoint); |
| 166 | + cm.focus(); |
| 167 | + } |
| 168 | + |
117 | 169 | var onKeyUpEvent = function(e) { |
118 | 170 | console.log(e); |
119 | 171 | onMention(); |
120 | 172 | onEmoji(); |
121 | 173 | } |
122 | 174 |
|
| 175 | + var timeout; |
| 176 | + var update = function(e) { |
| 177 | + console.log(e); |
| 178 | + onMention(); |
| 179 | + console.log(e.getValue()); |
| 180 | + //clearTimeout(timeout); |
| 181 | + //timeout = setTimeout(getMarkdown, 1000); |
| 182 | + }; |
| 183 | + |
| 184 | + var editor; |
| 185 | + setTimeout(function(){ |
| 186 | + //$('.CodeMirror').attr({'contentEditable': 'true'}); |
| 187 | + editor = $('.CodeMirror')[0].CodeMirror; |
| 188 | + editor.on('change', update); |
| 189 | + editor.on('keyup', function(cm, e) { |
| 190 | + console.log(cm, e); |
| 191 | + onMention(); |
| 192 | + }); |
| 193 | + }, 500); |
| 194 | + |
123 | 195 | var draceditor = $(this); |
124 | 196 | var dracEditor = $(this).find('.draceditor'); |
125 | 197 | dracEditor.on('keydown.draceditor', onKeyUpEvent); |
|
0 commit comments